source: jobvista-frontend/src/views/auth/SignInForm.js@ d8b6c91

main
Last change on this file since d8b6c91 was d8b6c91, checked in by 223021 <daniel.ilievski.2@…>, 7 weeks ago

Initial commit - implementirano registracija i logiranje so Spring Security i JSON Web Token-i vo backend-ot kako i navbar i formi za istoto vo frontend-ot

  • Property mode set to 100644
File size: 4.2 KB
Line 
1import {Button, TextField} from "@mui/material";
2import {Link} from "react-router-dom";
3import "./auth.css"
4import {useDispatch} from "react-redux";
5import {useNavigate} from "react-router";
6import * as yup from "yup";
7import {useForm} from "react-hook-form";
8import {yupResolver} from "@hookform/resolvers/yup";
9import {AuthActions} from "../../redux/actions/authActions";
10
11export const SignInForm = () => {
12
13 const dispatch = useDispatch();
14 const navigate = useNavigate()
15
16 const schema = yup.object().shape({
17
18 emailLog: yup.string().required("Email is required.").email("Email is not valid."),
19 passwordLog: yup.string().min(3, "Password must be at least 6 characters.").required("Password is required."),
20
21 });
22
23 const {register, handleSubmit, formState: {errors}} = useForm({
24 resolver: yupResolver(schema),
25 });
26
27 const signIn = async (values) => {
28 try {
29 dispatch(AuthActions.signIn(values.emailLog, values.passwordLog,
30 success => {
31 // createSnackbar({
32 // message: success ? 'Successfully signed up.' : 'Error while signing up. Try again!',
33 // timeout: 2500,
34 // theme: success ? 'success' : 'error'
35 // });
36 success && navigate("/");
37 }));
38 } catch (err) {
39 console.error(err);
40 }
41 }
42
43 return (
44
45 <div className="d-flex align-items-center">
46 <div className="container">
47 <div className="row">
48 <div className="col-md-8 mx-auto form-container">
49 <h3 className="login-heading mb-4">Sign in</h3>
50 <form onSubmit={handleSubmit(signIn)}>
51 <div className="form-floating mb-3">
52 <input type="email" className="form-control" {...register("emailLog")}
53 placeholder="name@example.com"/>
54 <label htmlFor="floatingEmail">Email address</label>
55 </div>
56 <div className="form-floating mb-3">
57 <input type="password" className="form-control" {...register("passwordLog")}
58 placeholder="Password"/>
59 <label htmlFor="floatingPassword">Password</label>
60 </div>
61
62 <div className="form-check mb-3">
63 <input className="form-check-input" type="checkbox" value=""
64 id="rememberPasswordCheck"/>
65 <label className="form-check-label" htmlFor="rememberPasswordCheck">
66 Remember password
67 </label>
68 </div>
69
70 <div className="d-grid mb-3">
71 <button
72 className="btn btn-lg btn-primary text-uppercase fw-bold mb-2"
73 type="submit">Sign in
74 </button>
75 {/*<div className="text-center">*/}
76 {/* <a className="small" href="#">Forgot password?</a>*/}
77 {/*</div>*/}
78 </div>
79 </form>
80
81 <div className="or-thing">
82 <span>or</span>
83 </div>
84
85 <div className="row">
86 <div className="col-md-6">
87 <Link to="/signup/recruiter" className="btn btn-outline-primary text-uppercase fw-bold mb-2 w-100">SIGN UP AS RECRUITER</Link>
88 </div>
89 <div className="col-md-6">
90 <Link to="/signup/job-seeker" className="btn btn-outline-primary text-uppercase fw-bold mb-2 w-100">SIGN UP AS JOB SEEKER</Link>
91 </div>
92 </div>
93 </div>
94 </div>
95 </div>
96 </div>
97 )
98}
Note: See TracBrowser for help on using the repository browser.