summaryrefslogtreecommitdiff
path: root/front/src/Authentication/ContextProvider.ts
blob: 040d22e006b7fe7649795888feee30917fd5e2c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import axios from "axios"
import { createContext } from "react"
import { BackendURL } from "../Config"
import { User } from "./Models"

export type Authentication = {
    User: User
    Token: string
}

const UserInfoURL = `${BackendURL}/auth`;

export const AuthContext = createContext<User | null>(null);

export function SaveState(data: Authentication | null, setCookie: (cookie: string) => void) {
    if (data == null) return;
    setCookie(data.Token);
}

export async function GetUserInfo(displayToken: string): Promise<User | null> {
    if (!displayToken || displayToken.length == 0) return null;
    try {
        const { data, status } = await axios.get<User>(
            UserInfoURL,
            {
                headers: { 
                    Accept: "application/json",
                    Authorization: `Bearer ${displayToken}`
                }
            }
        );
        if (status != 200) return null;
        return data;
    } catch (err) {
        console.log(`Failed to get user info: ${err}`);
        return null;
    }
}