Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 8c45ccb0

Přidáno uživatelem hrubyjar před asi 2 roky(ů)

Token management implemented, redirections

Zobrazit rozdíly:

webapp/pages/login/index.tsx
1
import 'antd/dist/antd.css';
1 2
import { Form, Input, Button } from 'antd';
2 3
import { UserOutlined, LockOutlined } from '@ant-design/icons';
3
import 'antd/dist/antd.css';
4
import { LoginLayout } from '../../layouts/LoginLayout';
4
import { LoggedUserContext } from '../../contexts/LoggedUserContext';
5
import { LoginLayout } from '../../layouts/loginLayout';
6
import { useContext } from 'react';
7
import { useRouter } from 'next/router';
8
import { ShowToast } from '../../utils/alerts';
9
import { getTokenData } from '../../utils/login';
10
import { LoginResponse } from '../../api';
5 11

  
6 12
/**
7 13
 * Creates a login screen.
8 14
 * @returns Html structure of the login screen.
9 15
 */
10 16
function Login() {
17
    const { login, role } = useContext(LoggedUserContext);
18
    const router = useRouter();
11 19
    /**
12 20
     * Handles submission a form when its fields were successfully validated.
13 21
     * @param values Fields of the login form.
14 22
     */
15
    const onFinish = (values: any) => {
16
        /**
17
         @todo: delete login form log when login API is implemented
18
        **/
19
        console.log('Values of the login form: ', values);
23
    const onFinish = async (values: any) => {
24
        const loginRes = await login(values.username, values.password);
25

  
26
        if (!loginRes) {
27
            ShowToast(
28
                'Chybně zadané heslo nebo uživatelské jméno',
29
                'error',
30
                3000,
31
                'top-end'
32
            );
33
        } else {
34
            let data: LoginResponse | null = await getTokenData();
35
            ShowToast('Přihlášení proběhlo úspěšně', 'success', 3000, 'top-end');
36
            if (data?.role === 'ADMINISTRATOR') {
37
                await router.push('/documents/admin');
38
            } else if (data?.role === 'ANNOTATOR') {
39
                await router.push('/documents/annotator');
40
            }
41
        }
20 42
    };
21 43

  
22 44
    /**
......
24 46
     * @param errorInfo Validation errors.
25 47
     */
26 48
    const onFinishFailed = (errorInfo: any) => {
27
        /**
28
         @todo: delete log when error handling is implemented
29
        **/
30
        console.log('Errors: ', errorInfo);
49
        ShowToast('Zadané údaje nejsou validní', 'error', 3000, 'top-end');
31 50
    };
32 51

  
33 52
    return (

Také k dispozici: Unified diff