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

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

Added an edit profile page for both job seekers and recruiters, where they can upload profile pictures/company logos and edit their profile data. Added profile page specifically for recruiters. Refactored existing code.

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