diff --git a/src/contexts/AuthContext.tsx b/src/contexts/AuthContext.tsx index 6379163..04f5ecd 100644 --- a/src/contexts/AuthContext.tsx +++ b/src/contexts/AuthContext.tsx @@ -67,20 +67,18 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => { const refreshToken = localStorage.getItem('admin_refresh_token'); const userStr = localStorage.getItem('admin_user'); const permissionsStr = localStorage.getItem('admin_permissions'); - const allPermissionsStr = localStorage.getItem('admin_all_permissions'); if (token && userStr && permissionsStr) { try { const user = JSON.parse(userStr); const permissions = JSON.parse(permissionsStr); - const allPermissions = allPermissionsStr ? JSON.parse(allPermissionsStr) : []; dispatch({ type: 'RESTORE_SESSION', payload: { user, permissions, - allPermissions, + allPermissions: permissions, token, refreshToken: refreshToken || '' } @@ -90,7 +88,6 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => { localStorage.removeItem('admin_refresh_token'); localStorage.removeItem('admin_user'); localStorage.removeItem('admin_permissions'); - localStorage.removeItem('admin_all_permissions'); } } }; @@ -104,16 +101,25 @@ export const AuthProvider = ({ children }: { children: React.ReactNode }) => { localStorage.removeItem('admin_refresh_token'); localStorage.removeItem('admin_user'); localStorage.removeItem('admin_permissions'); - localStorage.removeItem('admin_all_permissions'); dispatch({ type: 'LOGOUT' }); toast.success('خروج موفقیت‌آمیز بود'); }; const hasPermission = (permissionId: number): boolean => { + // اگر Super Admin (id=1) باشد، به همه چیز دسترسی دارد + const isSuperAdmin = state.permissions.some(permission => permission.id === 1); + if (isSuperAdmin) return true; + + // در غیر اینصورت چک کن permission مورد نیاز را دارد یا نه return state.permissions.some(permission => permission.id === permissionId); }; const hasPermissionByTitle = (title: string): boolean => { + // اگر Super Admin (AdminAll) باشد، به همه چیز دسترسی دارد + const isSuperAdmin = state.permissions.some(permission => permission.title === "AdminAll"); + if (isSuperAdmin) return true; + + // در غیر اینصورت چک کن permission مورد نیاز را دارد یا نه return state.permissions.some(permission => permission.title === title); }; diff --git a/src/pages/auth/core/_hooks.ts b/src/pages/auth/core/_hooks.ts index a905945..f59d277 100644 --- a/src/pages/auth/core/_hooks.ts +++ b/src/pages/auth/core/_hooks.ts @@ -17,10 +17,6 @@ export const useLogin = () => { localStorage.setItem("admin_user", JSON.stringify(response.admin_user)); localStorage.setItem( "admin_permissions", - JSON.stringify(response.admin_user.permissions) - ); - localStorage.setItem( - "admin_all_permissions", JSON.stringify(response.permissions) ); diff --git a/src/pages/auth/core/_requests.ts b/src/pages/auth/core/_requests.ts index 0ad61ce..c5dd46d 100644 --- a/src/pages/auth/core/_requests.ts +++ b/src/pages/auth/core/_requests.ts @@ -15,5 +15,4 @@ export const postLogout = () => { localStorage.removeItem("admin_refresh_token"); localStorage.removeItem("admin_user"); localStorage.removeItem("admin_permissions"); - localStorage.removeItem("admin_all_permissions"); }; diff --git a/src/pages/auth/index.ts b/src/pages/auth/index.ts index d709001..5fb63c5 100644 --- a/src/pages/auth/index.ts +++ b/src/pages/auth/index.ts @@ -11,7 +11,6 @@ export const getAuth = async () => { localStorage.removeItem("admin_refresh_token"); localStorage.removeItem("admin_user"); localStorage.removeItem("admin_permissions"); - localStorage.removeItem("admin_all_permissions"); return null; } } diff --git a/src/types/auth.ts b/src/types/auth.ts index e2ebcbc..0bbd16e 100644 --- a/src/types/auth.ts +++ b/src/types/auth.ts @@ -21,8 +21,6 @@ export interface AdminUser { first_name: string; last_name: string; status: "active" | "inactive"; - permissions: Permission[]; - roles: Role[]; created_at: string; updated_at: string; }