Commit 924b2e4d authored by Jan Poláček's avatar Jan Poláček
Browse files

Merge branch 'auth' of gitlab.fi.muni.cz:xroseck2/WatchList into auth

parents 76918d84 bc4340a2
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -52,11 +52,9 @@ async function deleteSingle(id: string) {

async function verifyUser(email: string, password: string) {
  return BaseApi.post(`${USER_PREFIX}/verify`, {
    params: {
    email: email,
    password: password
    }}
  )
  });
}

const UserApi = {
+24 −12
Original line number Diff line number Diff line
import {Button, Flex, Form, FormProps, Input} from "antd";
import {Button, Flex, Form, FormProps, Input, Modal} from "antd";
import './login_page.css';
import {UserContext, UserContextType} from '../../contexts/UserContext.tsx';
import {useContext} from "react";
import LogoutPanel from "../../components/LogoutPanel/LogoutPanel.tsx";
import {useNavigate} from "react-router-dom";
import userApi from "../../api/userApi.ts";
import {User} from "../../models/user.ts";

type FieldType = {
  email?: string;
@@ -16,11 +15,11 @@ export default function LoginPage() {
  const {user, setUser} = useContext<UserContextType>(UserContext);
  const navigate = useNavigate();

    const verifyUser = (email: string, password: string) => {
      userApi.verifyUser(email, password)
        .then(function (res){
    const verifyUser = async (email: string, password: string): Promise<boolean> => {
      return userApi.verifyUser(email, password)
        .then((res) => {
          if (res.status === 200) {
            userApi.getSingleByEmail(email)
            return userApi.getSingleByEmail(email)
              .then(function (resIn){
                const loggedUser = {
                  id: resIn.id,
@@ -28,23 +27,36 @@ export default function LoginPage() {
                  email: resIn.email
                }
                setUser(loggedUser)
                return true;
              })
              .catch(function (err){
                console.log(err);
                return false;
              })
          } else {
            console.log(res.statusText);
          }
          return false;
        })
        .catch(function(err) {
          console.log(err);
          return false;
        })
    }
  const onFinish: FormProps<FieldType>['onFinish'] = (values) => {
    verifyUser(values.email!, values.password!)
    if (user?.email === values.email!){
    verifyUser(values.email!, values.password!).then( (v) => {
      if (v) {
        navigate("/home");
        Modal.success({
          title: 'Login successfully',
          content: "User logged in successfully!",
        });
      } else {
        Modal.error({
          title: 'Login failed',
          content: "User was not logged in!",
        });
      }
      }
    )
  };

  const onFinishFailed: FormProps<FieldType>['onFinishFailed'] = (errorInfo) => {
+20 −6
Original line number Diff line number Diff line
import {Button, Form, FormProps, Input} from "antd";
import {Button, Form, FormProps, Input, Modal} from "antd";
import {useNavigate} from "react-router-dom";
import "./register_page.css"
import userApi from "../../api/userApi.ts";
@@ -13,24 +13,38 @@ type FieldType = {

export default function RegisterPage() {
  const navigate = useNavigate();
  const error = (message: string) => {
    Modal.error({
      title: 'Register failed',
      content: message,
    });
  };

  const onFinish: FormProps<FieldType>['onFinish'] = (values) => {
    if (values.password == values.confPassword) {
      const req: CreateUser = {name: values.username!, email: values.email!, password: values.password!}
      userApi.createSingle(req)
        .then(function (res){
          if (res.email === values.email!){
          if (res.email != undefined){
            console.log("Successfully logged in");
            navigate('/login');
            Modal.success({
              title: 'Register succeeded',
              content: "Account created",
            });
          } else {
            error(`User with email "${values.email}" or name "${values.username}" already exists`)
          }
        })
        .catch(function (err) {
          // Zod validation failed or duplicate email
          error(err.response.data.message);
          console.log(err);
        })
    } else {
      error("Passwords do not match");
      console.log("Passwords not the same")
    }
    navigate('/login');
  };

  const onFinishFailed: FormProps<FieldType>['onFinishFailed'] = (errorInfo) => {
@@ -58,7 +72,7 @@ export default function RegisterPage() {
        <Form.Item<FieldType>
          label="Email"
          name="email"
          rules={[{ required: true, message: 'Please input your email!' }]}
          rules={[{type:"email", required: true, message: 'Please input your email!' }]}
        >
          <Input />
        </Form.Item>
@@ -66,7 +80,7 @@ export default function RegisterPage() {
        <Form.Item<FieldType>
          label="Password"
          name="password"
          rules={[{ required: true, message: 'Please input your password!' }]}
          rules={[{min: 10, required: true, message: 'Password is too short' }]}
        >
          <Input.Password />
        </Form.Item>
@@ -74,7 +88,7 @@ export default function RegisterPage() {
        <Form.Item<FieldType>
          label="Confirm password"
          name="confPassword"
          rules={[{ required: true, message: 'Please repeat your password!' }]}
          rules={[{min: 10, required: true, message: 'Password is too short' }]}
        >
          <Input.Password />
        </Form.Item>