Created the Login.jsx page
This commit is contained in:
43
admin/src/pages/Login/Login.jsx
Normal file
43
admin/src/pages/Login/Login.jsx
Normal file
@ -0,0 +1,43 @@
|
||||
import TextBox from "@/common/components/TextBox";
|
||||
import {faKey, faUser} from "@fortawesome/free-solid-svg-icons";
|
||||
import Button from "@/common/components/Button";
|
||||
import {useContext, useRef, useState} from "react";
|
||||
import {createSession} from "@/common/utils/RequestUtil.js";
|
||||
import LoginContext from "@/common/contexts/Login";
|
||||
import "./styles.sass";
|
||||
|
||||
export const Login = () => {
|
||||
const setToken = useContext(LoginContext);
|
||||
|
||||
const usernameRef = useRef(null);
|
||||
const passwordRef = useRef(null);
|
||||
|
||||
const [username, setUsername] = useState("");
|
||||
const [password, setPassword] = useState("");
|
||||
|
||||
const updateUsername = (e) => setUsername(e.target.value);
|
||||
const updatePassword = (e) => setPassword(e.target.value);
|
||||
|
||||
const showError = () => {
|
||||
usernameRef.current.classList.add("shake");
|
||||
passwordRef.current.classList.add("shake");
|
||||
}
|
||||
|
||||
const onLogin = async () => {
|
||||
const token = await createSession(username, password);
|
||||
if (token === null) return showError();
|
||||
|
||||
setToken(token);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="login-container">
|
||||
<form className="login-wrapper" onSubmit={(e) => e.preventDefault()}>
|
||||
<h2 className="title">My<span>Links</span></h2>
|
||||
<TextBox icon={faUser} placeholder="Benutzername" value={username} onUpdate={updateUsername} autoComplete="username" useRef={usernameRef}/>
|
||||
<TextBox icon={faKey} placeholder="Passwort" value={password} onUpdate={updatePassword} type="password" autoComplete="current-password" useRef={passwordRef}/>
|
||||
<Button text="Anmelden" onClick={onLogin}/>
|
||||
</form>
|
||||
</div>
|
||||
)
|
||||
}
|
Reference in New Issue
Block a user