feat: add multi-administrator support with RBAC and fix backup/restore for S3
## Multi-Administrator System
- Add role-based access control (RBAC) with predefined roles (Super Admin, Admin, Editor, Viewer)
- Add granular permissions system for all admin operations
- Add admin user management page with invite functionality
- Add email invitation system for new administrators
- Add permission middleware protecting all admin routes
- Add PermissionGate component for frontend permission checks
- Track event creator (created_by) for audit purposes
## Backup & Restore Fixes
- Fix S3 backup: endpoint URL handling, manifest loading, field name compatibility
- Fix S3 restore: add list-backups endpoint, transform S3 config from frontend format
- Fix PostgreSQL compatibility: add .returning('id') for insert operations
- Fix disk space check: use df command, handle unknown space gracefully
- Fix dry-run validation to not block on warnings
- Fix req.user → req.admin in restore routes
## Database Migrations
- 054: Add roles table with predefined roles
- 055: Add permissions table
- 056: Add role_permissions junction table
- 057: Add role_id to admin_users
- 058: Add admin_invitations table
- 059: Add admin email templates
- 060: Add created_by to events table
## Other Improvements
- Update .gitignore to exclude planning docs and local backup directory
- Remove SQLite database file from tracking
- Add i18n translations for user management (EN/DE)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
export * from './useSessionTimeout';
|
||||
export * from './useOnClickOutside';
|
||||
export * from './useLocalizedDate';
|
||||
export * from './useLocalizedTimeAgo';
|
||||
export * from './useLocalizedTimeAgo';
|
||||
export * from './usePermission';
|
||||
@@ -0,0 +1,23 @@
|
||||
import { usePermissions } from '../contexts/PermissionsContext';
|
||||
|
||||
/**
|
||||
* Hook to check if the current user has a specific permission.
|
||||
*
|
||||
* @param permission - The permission to check
|
||||
* @returns boolean indicating if the user has the permission
|
||||
*/
|
||||
export function usePermission(permission: string): boolean {
|
||||
const { hasPermission } = usePermissions();
|
||||
return hasPermission(permission);
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook to check if the current user has any of the specified permissions.
|
||||
*
|
||||
* @param permissions - Array of permissions to check
|
||||
* @returns boolean indicating if the user has any of the permissions
|
||||
*/
|
||||
export function useAnyPermission(permissions: string[]): boolean {
|
||||
const { hasAnyPermission } = usePermissions();
|
||||
return hasAnyPermission(permissions);
|
||||
}
|
||||
Reference in New Issue
Block a user