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