dynamic redirect created
This commit is contained in:
parent
bd703f94f4
commit
f004cb8bc5
19
src/App.tsx
19
src/App.tsx
|
|
@ -1,5 +1,7 @@
|
||||||
// Modules
|
// Modules
|
||||||
|
import { useMemo, useState, useEffect } from "react";
|
||||||
import { Routes, Route } from "react-router-dom";
|
import { Routes, Route } from "react-router-dom";
|
||||||
|
import { UserContext } from "./context/UserContext";
|
||||||
|
|
||||||
// Style
|
// Style
|
||||||
import "./assets/styles/style.scss";
|
import "./assets/styles/style.scss";
|
||||||
|
|
@ -8,12 +10,29 @@ import "./assets/styles/style.scss";
|
||||||
import Login from "./pages/Login";
|
import Login from "./pages/Login";
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
|
const [user, setUser] = useState({
|
||||||
|
username: "",
|
||||||
|
accessLevel: "",
|
||||||
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const userData = localStorage.getItem("userData");
|
||||||
|
|
||||||
|
if (userData) {
|
||||||
|
setUser(JSON.parse(userData));
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const userValue = useMemo(() => ({ user, setUser }), [user, setUser]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
<UserContext.Provider value={userValue}>
|
||||||
<div className="App">
|
<div className="App">
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/login" element={<Login />} />
|
<Route path="/login" element={<Login />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
</div>
|
</div>
|
||||||
|
</UserContext.Provider>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
// Modules
|
||||||
|
import { createContext } from "react";
|
||||||
|
|
||||||
|
export const UserContext: any = createContext(null);
|
||||||
|
|
@ -1,10 +1,14 @@
|
||||||
import React, { useState, useEffect } from "react";
|
// Modules
|
||||||
|
import React, { useState, useEffect, useContext } from "react";
|
||||||
|
import { UserContext } from "../context/UserContext";
|
||||||
|
import { useNavigate } from "react-router-dom";
|
||||||
|
|
||||||
const Login = () => {
|
const Login = () => {
|
||||||
const cred: Record<string, string> = {
|
const cred: Record<string, string> = {
|
||||||
username: "admin@2022",
|
username: "admin_2022",
|
||||||
password: "backpackadmin",
|
password: "backpackadmin",
|
||||||
};
|
};
|
||||||
|
|
||||||
const [valid, setValid] = useState({
|
const [valid, setValid] = useState({
|
||||||
username: "",
|
username: "",
|
||||||
password: "",
|
password: "",
|
||||||
|
|
@ -12,6 +16,9 @@ const Login = () => {
|
||||||
valid: false,
|
valid: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const { user, setUser } = useContext<any>(UserContext);
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (valid.username === cred.username && valid.password === cred.password) {
|
if (valid.username === cred.username && valid.password === cred.password) {
|
||||||
setValid({ ...valid, valid: true });
|
setValid({ ...valid, valid: true });
|
||||||
|
|
@ -20,6 +27,12 @@ const Login = () => {
|
||||||
}
|
}
|
||||||
}, [valid.username, valid.password]);
|
}, [valid.username, valid.password]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (user.username) {
|
||||||
|
navigate("/");
|
||||||
|
}
|
||||||
|
}, [user]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="login">
|
<main className="login">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
|
|
@ -75,8 +88,14 @@ const Login = () => {
|
||||||
</span>
|
</span>
|
||||||
<button
|
<button
|
||||||
className="login__form__button login__form__button--violet"
|
className="login__form__button login__form__button--violet"
|
||||||
onClick={(e: React.FormEvent<HTMLButtonElement>) => {
|
onClick={() => {
|
||||||
setValid({ ...valid, check: true });
|
setValid({ ...valid, check: true });
|
||||||
|
if (valid.valid) {
|
||||||
|
setUser({
|
||||||
|
username: valid.username,
|
||||||
|
accessLevel: "admin",
|
||||||
|
});
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Login
|
Login
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue