*/ public function defaultPermissions(): array { return match ($this) { self::SystemAdministrator => Permission::cases(), self::AccountManager => [ Permission::Upload, Permission::EditFiles, Permission::EditOthersFiles, Permission::DeleteFiles, Permission::DeleteOthersFiles, Permission::SetFileExpirationDate, Permission::UploadPublic, Permission::ImportOrphans, Permission::ModerateComments, Permission::CreateCategories, Permission::EditCategories, Permission::DeleteCategories, Permission::CreateClients, Permission::EditClients, Permission::DeleteClients, Permission::ManageCustomFields, Permission::ApproveAccountRequests, Permission::CreateGroups, Permission::EditGroups, Permission::DeleteGroups, Permission::ApproveGroupsMembershipsRequests, Permission::ViewActionsLog, Permission::ViewStatistics, Permission::ViewNews, ], self::Uploader => [ Permission::Upload, Permission::EditFiles, Permission::DeleteFiles, Permission::SetFileExpirationDate, Permission::UploadPublic, Permission::ImportOrphans, Permission::CreateCategories, Permission::EditCategories, Permission::DeleteCategories, Permission::ViewActionsLog, Permission::ViewStatistics, Permission::ViewNews, ], // A file-focused staff role (upload, edit/delete own files, // categories, own folders) that is client_scoped: members only // see the library content of the clients assigned to them, plus // their own uploads. This is the v2 successor to the legacy // Uploader role. self::ClientManager => [ Permission::Upload, Permission::EditFiles, Permission::DeleteFiles, Permission::SetFileExpirationDate, Permission::UploadPublic, Permission::CreateCategories, Permission::EditCategories, Permission::DeleteCategories, Permission::CreateOwnFolders, Permission::ViewActionsLog, Permission::ViewStatistics, Permission::ViewNews, ], // Clients can both send and organize by default — upload and // create_own_folders travel together (see FolderPolicy/ // MyFoldersController: creating a folder you can never put // anything in makes no sense on its own). An admin can still // narrow this per role via the Roles UI. self::Client => [ Permission::Upload, Permission::CreateOwnFolders, ], }; } }