Projekt

Obecné

Profil

Stáhnout (2.93 KB) Statistiky
| Větev: | Tag: | Revize:
1
import { createAsyncThunk } from "@reduxjs/toolkit"
2
import { isAuthRequest, loginRequest, logoutRequest } from "../../api/authservice"
3
import { log } from "../../logging/logger"
4
import {Toast} from "native-base"
5

    
6
export const login = createAsyncThunk(
7
    "user/login",
8
    async (payload: { username: string, password: string }) => {
9
        try {
10
            log.debug("Logging in", payload)
11
            const response = await loginRequest(payload.username, payload.password)
12
            log.debug("Login response", response)
13
            if (response.status === 200) {
14
                return {
15
                    username: payload.username,
16
                    role: response.data.role
17
                }
18
            } else {
19
                Toast.show({
20
                    title: `Login not 200 (${response.status}): ${response}`,
21
                    duration: 10000
22
                })
23
                return Promise.reject(response.data ? response.data : "Login failed")
24
            }
25
        } catch (err: any) {
26
            Toast.show({
27
                title: `Login err: ${err}`,
28
                duration: 10000
29
            })
30
            return Promise.reject(err.response ? err.response.data : "Something went wrong" + err)
31
        }
32
    }
33
)
34

    
35
export const checkAuth = createAsyncThunk(
36
    "user/isauth",
37
    async () => {
38
        try {
39
            const response = await isAuthRequest()
40
            console.log(response)
41
            if (response.status === 200) {
42
                Toast.show({
43
                    title: `Auth ok: ${response.data}`,
44
                    duration: 10000
45
                })
46
                return {
47
                    isLogged: response.data.isauth
48
                }
49
            } else {
50
                Toast.show({
51
                    title: `Auth err: ${response.data ? response.data : "Check authentication failed"}`,
52
                    duration: 10000
53
                })
54
                return Promise.reject(response.data ? response.data : "Check authentication failed")
55
            }
56
        } catch (err: any) {
57
            Toast.show({
58
                title: `Auth config: ${err.config}`,
59
                duration: 10000
60
            })
61

    
62
            Toast.show({
63
                title: `Auth message: ${err.message}`,
64
                duration: 10000
65
            })
66
            return Promise.reject(`response: ${JSON.stringify(err.response?.data)}, request: ${JSON.stringify(err.request)}, config: ${JSON.stringify(err.config)}` )
67
        }
68
    }
69
)
70

    
71
export const logout = createAsyncThunk(
72
    "user/logout",
73
    async () => {
74
        try {
75
            const response = await logoutRequest()
76
            log.debug("Logout response", response)
77
            if (response.status === 200) {
78
                return Promise.resolve()
79
            } else {
80
                return Promise.reject(response.data ? response.data : "Logout failed")
81
            }
82
        } catch (err: any) {
83
            return Promise.reject(err.response.data)
84
        }
85
    }
86
)
(6-6/6)