const ROLE_PERMISSIONS: Record = { super_admin: ['kyc.request', 'kyc.view', 'kyc.doc_upload', 'kyc.doc_approve', 'kyc.doc_reject', 'kyc.make_valid_user', 'dashboard.view', 'rental.view', 'rental.create', 'rental.accept', 'rental.reject', 'rental.cancel', 'rental.edit', 'rental.image_approve', 'rental.lock', 'rental.unlock'], admin_manager: ['kyc.request', 'kyc.view', 'kyc.doc_upload', 'kyc.doc_approve', 'kyc.doc_reject', 'kyc.make_valid_user', 'dashboard.view', 'rental.view', 'rental.create', 'rental.accept', 'rental.reject', 'rental.cancel', 'rental.edit', 'rental.image_approve', 'rental.lock', 'rental.unlock'], staff: ['kyc.request', 'kyc.view', 'kyc.doc_upload', 'dashboard.view', 'rental.view', 'rental.create'], accountant: ['dashboard.view', 'accounting.view', 'accounting.create', 'accounting.edit', 'accounting.delete'], investor: ['dashboard.view', 'kyc.request', 'kyc.view'], biker: ['dashboard.view', 'kyc.request', 'kyc.view', 'rentals.view', 'rentals.create'], 'swap-station': ['dashboard.view', 'kyc.request', 'kyc.view'], merchant: ['dashboard.view', 'kyc.request', 'kyc.view', 'merchants.view'], }; export const canRentalAccept = () => hasPermission('rental.accept'); export const canRentalReject = () => hasPermission('rental.reject'); export const canRentalCancel = () => hasPermission('rental.cancel'); export const canRentalEdit = () => hasPermission('rental.edit'); export const canRentalImageApprove = () => hasPermission('rental.image_approve'); export const canRentalLock = () => hasPermission('rental.lock'); export const canRentalUnlock = () => hasPermission('rental.unlock'); export const canRentalCreate = () => hasPermission('rental.create'); export const isAuthenticated = (): boolean => { return typeof window !== 'undefined' && !!sessionStorage.getItem('authToken'); }; export const getUserRole = (): string | null => { return typeof window !== 'undefined' ? sessionStorage.getItem('userRole') : null; }; export const getUserName = (): string | null => { return typeof window !== 'undefined' ? sessionStorage.getItem('userName') : null; }; export const getUserPermissions = (): string[] => { if (typeof window === 'undefined') return []; const role = getUserRole(); if (role) return ROLE_PERMISSIONS[role] || []; return []; }; export const hasPermission = (permission: string): boolean => { const permissions = getUserPermissions(); return permissions.includes(permission); }; export const canApproveKycDocument = (): boolean => { return hasPermission('kyc.doc_approve'); }; export const canRejectKycDocument = (): boolean => { return hasPermission('kyc.doc_reject'); }; export const canMakeValidUser = (): boolean => { return hasPermission('kyc.make_valid_user'); }; export const logout = () => { if (typeof window !== 'undefined') { sessionStorage.removeItem('authToken'); sessionStorage.removeItem('userRole'); sessionStorage.removeItem('userName'); sessionStorage.removeItem('userPermissions'); } };