chore: build
Frontend Client - EAS Build / build (push) Has been cancelled

This commit is contained in:
2026-06-20 08:16:25 +02:00
parent 4f6d26c14c
commit f791801956
+55 -20
View File
@@ -1,15 +1,33 @@
import React, { createContext, useContext, useState, useEffect, type ReactNode } from 'react';
import React, {
createContext,
useContext,
useState,
useEffect,
type ReactNode,
} from "react";
import {
getToken, setToken as storeToken, removeToken,
getAdminToken, setAdminToken as storeAdminToken, removeAdminToken,
setUsername, removeUsername,
setAdminUsername, removeAdminUsername,
setRole as storeRole, getRole, removeRole,
getToken,
setToken as storeToken,
removeToken,
getAdminToken,
setAdminToken as storeAdminToken,
removeAdminToken,
setUsername,
removeUsername,
setAdminUsername,
removeAdminUsername,
setRole as storeRole,
getRole,
removeRole,
clearAllAuth,
} from './tokenStorage';
import { extractUsernameFromToken, extractRoleFromToken, isTokenExpired } from './jwtUtils';
} from "./tokenStorage";
import {
extractUsernameFromToken,
extractRoleFromToken,
isTokenExpired,
} from "./jwtUtils";
export type UserRole = 'client' | 'admin' | 'cabine' | 'livreur' | null;
export type UserRole = "client" | "admin" | "cabine" | "livreur" | null;
interface AuthState {
token: string | null;
@@ -22,7 +40,10 @@ interface AuthState {
interface AuthContextType extends AuthState {
loginClient: (token: string, mustChangePassword?: boolean) => Promise<void>;
loginAdmin: (token: string, role: 'admin' | 'cabine' | 'livreur') => Promise<void>;
loginAdmin: (
token: string,
role: "admin" | "cabine" | "livreur",
) => Promise<void>;
logout: () => Promise<void>;
setMustChangePassword: (value: boolean) => void;
}
@@ -39,27 +60,30 @@ export function AuthProvider({ children }: { children: ReactNode }) {
mustChangePassword: false,
});
// Restore session on mount
useEffect(() => {
const restore = async () => {
try {
const savedRole = await getRole();
if (savedRole === 'client') {
if (savedRole === "client") {
const token = await getToken();
if (token && !isTokenExpired(token)) {
const uname = extractUsernameFromToken(token);
setState({
token,
username: uname,
role: 'client',
role: "client",
isLoading: false,
isAuthenticated: true,
mustChangePassword: false,
});
return;
}
} else if (savedRole === 'admin' || savedRole === 'cabine' || savedRole === 'livreur') {
} else if (
savedRole === "admin" ||
savedRole === "cabine" ||
savedRole === "livreur"
) {
const token = await getAdminToken();
if (token && !isTokenExpired(token)) {
const uname = extractUsernameFromToken(token);
@@ -105,11 +129,11 @@ export function AuthProvider({ children }: { children: ReactNode }) {
const uname = extractUsernameFromToken(token);
await storeToken(token);
if (uname) await setUsername(uname);
await storeRole('client');
await storeRole("client");
setState({
token,
username: uname,
role: 'client',
role: "client",
isLoading: false,
isAuthenticated: true,
mustChangePassword,
@@ -117,10 +141,13 @@ export function AuthProvider({ children }: { children: ReactNode }) {
};
const setMustChangePassword = (value: boolean) => {
setState(prev => ({ ...prev, mustChangePassword: value }));
setState((prev) => ({ ...prev, mustChangePassword: value }));
};
const loginAdmin = async (token: string, role: 'admin' | 'cabine' | 'livreur') => {
const loginAdmin = async (
token: string,
role: "admin" | "cabine" | "livreur",
) => {
const uname = extractUsernameFromToken(token);
await storeAdminToken(token);
if (uname) await setAdminUsername(uname);
@@ -148,7 +175,15 @@ export function AuthProvider({ children }: { children: ReactNode }) {
};
return (
<AuthContext.Provider value={{ ...state, loginClient, loginAdmin, logout, setMustChangePassword }}>
<AuthContext.Provider
value={{
...state,
loginClient,
loginAdmin,
logout,
setMustChangePassword,
}}
>
{children}
</AuthContext.Provider>
);
@@ -157,7 +192,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
export function useAuth() {
const context = useContext(AuthContext);
if (!context) {
throw new Error('useAuth must be used within an AuthProvider');
throw new Error("useAuth must be used within an AuthProvider");
}
return context;
}