gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/auth/auth.store.ts · v0.6.1
Source
1 13e20b0 Mrdn 2y ago import { fetch } from '@marzneshin/utils';
2 4466347 Mrdn 2y ago import { create } from 'zustand';
3 4466347 Mrdn 2y ago import { subscribeWithSelector } from 'zustand/middleware';
4 4466347 Mrdn 2y ago
5 4466347 Mrdn 2y ago type AdminStateType = {
6 13e20b0 Mrdn 2y ago isLoggedIn: () => Promise<boolean>,
7 4466347 Mrdn 2y ago getAuthToken: () => string | null;
8 9ddfbc8 Mardin 2y ago isSudo: () => boolean;
9 4466347 Mrdn 2y ago setAuthToken: (token: string) => void;
10 4466347 Mrdn 2y ago removeAuthToken: () => void;
11 9ddfbc8 Mardin 2y ago setSudo: (isSudo: boolean) => void;
12 4466347 Mrdn 2y ago }
13 4466347 Mrdn 2y ago
14 4466347 Mrdn 2y ago export const useAuth = create(
15 13e20b0 Mrdn 2y ago subscribeWithSelector<AdminStateType>(() => ({
16 13e20b0 Mrdn 2y ago isLoggedIn: async () => {
17 13e20b0 Mrdn 2y ago try {
18 9ddfbc8 Mardin 2y ago await fetch('/admins/current');
19 13e20b0 Mrdn 2y ago return true;
20 13e20b0 Mrdn 2y ago } catch (error) {
21 13e20b0 Mrdn 2y ago return false;
22 13e20b0 Mrdn 2y ago }
23 13e20b0 Mrdn 2y ago },
24 4466347 Mrdn 2y ago getAuthToken: () => {
25 4466347 Mrdn 2y ago return localStorage.getItem('token');
26 4466347 Mrdn 2y ago },
27 9ddfbc8 Mardin 2y ago isSudo: () => {
28 9ddfbc8 Mardin 2y ago const isSudo = localStorage.getItem('is-sudo')
29 9ddfbc8 Mardin 2y ago return isSudo === "true";
30 9ddfbc8 Mardin 2y ago },
31 9ddfbc8 Mardin 2y ago setSudo: (isSudo) => {
32 9ddfbc8 Mardin 2y ago localStorage.setItem('is-sudo', String(isSudo));
33 9ddfbc8 Mardin 2y ago },
34 4466347 Mrdn 2y ago setAuthToken: (token: string) => {
35 4466347 Mrdn 2y ago localStorage.setItem('token', token);
36 4466347 Mrdn 2y ago },
37 4466347 Mrdn 2y ago removeAuthToken: () => {
38 4466347 Mrdn 2y ago localStorage.removeItem('token');
39 4466347 Mrdn 2y ago },
40 4466347 Mrdn 2y ago }))
41 4466347 Mrdn 2y ago )