Roles and Permissions
Role and Permission Configuration
User Roles
These are the user roles:
- Owner: The owner role,it is considered as a supper admin role for Filekit owner
- User: The user role,is assigned by default upon registration or new user creation
After creating/login you will need to update the new user role manaully from database for super admin previlege
Default Role Permissions
These are the default role permissions for seeding:
- Owner Permissions: Permissions assigned to the owner role.
- User Permissions: Permissions assigned to the user role.
User Roles Permissions
These are the permissions assigned to user roles:
- Owner: Permissions for the owner role.
- Description: Owner
- Permissions: OWNER_PERMISSION
- User: Permissions for the user role.
- Description: User
- Permissions: USER_PERMISSION
Team Roles Permissions
These are the permissions assigned to team roles:
- Admin: Permissions for the admin role.
- Description: Admin
- Permissions: All sort of permissions
- Member: Permissions for the member role.
- Description: Member
- Permissions: VIEW_TEAM_MEMBERS, VIEW_FILES, UPLOAD_FILES
import {
PERMISSION_NAMES,
PERMISSIONS,
SUPER_USER_PERMISSIONS,
} from './permission';
export const TEAM_ROLES = {
ADMIN: 'ADMIN',
MEMBER: 'MEMBER',
} as const;
export const USER_ROLES = {
OWNER: 'OWNER',
USER: 'USER',
} as const;
const { USER_PERMISSION, OWNER_PERMISSION } = SUPER_USER_PERMISSIONS;
export const USER_ROLES_PERMISSIONS = [
{
name: USER_ROLES.OWNER,
description: 'Owner',
permissions: [OWNER_PERMISSION],
},
{
name: USER_ROLES.USER,
description: 'User',
permissions: [USER_PERMISSION],
},
];
const { VIEW_TEAM_MEMBERS, VIEW_FILES, UPLOAD_FILES } = PERMISSIONS;
export const TEAM_ROLES_PERMISSIONS = [
{
name: TEAM_ROLES.ADMIN,
description: 'Admin',
permissions: [...PERMISSION_NAMES],
},
{
name: TEAM_ROLES.MEMBER,
description: 'Member',
permissions: [VIEW_TEAM_MEMBERS, VIEW_FILES, UPLOAD_FILES],
},
];
Modules
These are the available modules where you will be able apply permissions based on user role:
- All: All modules.
- Team: Team module.
- File: File module.
- Settings: Settings module.
Module Types
src/config/module.ts
import { ValueOf } from 'type-fest';
export const MODULE = {
ALL: 'ALL',
TEAM: 'TEAM',
FILE: 'FILE',
SETTINGS: 'SETTINGS',
} as const;
export type ModuleNameType = ValueOf<typeof MODULE>;
export const MODULE_LIST = Object.values(MODULE);
export type ModuleType = ValueOf<typeof MODULE>;
File Permissions
These are the permissions related to file management:
- View Files: Allows users to view files.
- Edit Files: Allows users to edit files.
- Delete Files: Allows users to delete files.
- Upload Files: Allows users to upload files.
- Download Files: Allows users to download files.
- Share Files: Allows users to share files.
- Create Folder: Allows users to create folders.
src/config/filePermissions.ts
import { MODULE, PermissionType } from './common';
const VIEW_FILES: PermissionType = {
name: 'VIEW_FILES',
module: MODULE.FILE,
description: 'view files',
};
const EDIT_FILES: PermissionType = {
name: 'EDIT_FILES',
module: MODULE.FILE,
description: 'edit files',
};
const DELETE_FILES: PermissionType = {
name: 'DELETE_FILES',
module: MODULE.FILE,
description: 'delete files',
};
const UPLOAD_FILES: PermissionType = {
name: 'UPLOAD_FILES',
module: MODULE.FILE,
description: 'upload files',
};
const DOWNLOAD_FILES: PermissionType = {
name: 'DOWNLOAD_FILES',
module: MODULE.FILE,
description: 'download files',
};
const SHARE_FILES: PermissionType = {
name: 'SHARE_FILES',
module: MODULE.FILE,
description: 'share files',
};
const CREATE_FOLDER: PermissionType = {
name: 'CREATE_FOLDER',
module: MODULE.FILE,
description: 'create folder',
};
export const FILE_PERMISSIONS = {
VIEW_FILES,
EDIT_FILES,
DELETE_FILES,
UPLOAD_FILES,
DOWNLOAD_FILES,
SHARE_FILES,
CREATE_FOLDER,
};
Team Permissions
These are the permissions related to team management:
- View Team Settings: Allows users to view team settings.
- Edit Team Settings: Allows users to edit team settings.
- View Team Members: Allows users to view team members.
- Edit Team Members: Allows users to edit team members.
- Delete Team Members: Allows users to delete team members.
- Export Team Members: Allows users to export team members.
- Invite Team Members: Allows users to invite team members.
- View Team Roles: Allows users to view team roles.
- Edit Team Roles: Allows users to edit team roles.
- Manage Team Billing: Allows users to manage team billing.
- View Team Billing: Allows users to view team billing.
src/config/teamPermissions.ts
import { MODULE, PermissionType } from './common';
// Permission definitions
const VIEW_TEAM_SETTINGS: PermissionType = {
name: 'VIEW_TEAM_SETTINGS',
module: MODULE.TEAM,
description: 'view team settings',
};
const EDIT_TEAM_SETTINGS: PermissionType = {
name: 'EDIT_TEAM_SETTINGS',
module: MODULE.TEAM,
description: 'edit team settings',
};
const VIEW_TEAM_MEMBERS: PermissionType = {
name: 'VIEW_TEAM_MEMBERS',
module: MODULE.TEAM,
description: 'view team members',
};
const EDIT_TEAM_MEMBERS: PermissionType = {
name: 'EDIT_TEAM_MEMBERS',
module: MODULE.TEAM,
description: 'edit team members',
};
const DELETE_TEAM_MEMBERS: PermissionType = {
name: 'DELETE_TEAM_MEMBERS',
module: MODULE.TEAM,
description: 'delete team members',
};
const EXPORT_TEAM_MEMBERS: PermissionType = {
name: 'EXPORT_TEAM_MEMBERS',
module: MODULE.TEAM,
description: 'export team members',
};
const INVITE_TEAM_MEMBERS: PermissionType = {
name: 'INVITE_TEAM_MEMBERS',
module: MODULE.TEAM,
description: 'invite team members',
};
const VIEW_TEAM_ROLES: PermissionType = {
name: 'VIEW_TEAM_ROLES',
module: MODULE.TEAM,
description: 'view team roles',
};
const EDIT_TEAM_ROLES: PermissionType = {
name: 'EDIT_TEAM_ROLES',
module: MODULE.TEAM,
description: 'edit team roles',
};
const MANAGE_TEAM_BILLING: PermissionType = {
name: 'MANAGE_TEAM_BILLING',
module: MODULE.TEAM,
description: 'manage team billing',
};
const VIEW_TEAM_BILLING: PermissionType = {
name: 'VIEW_TEAM_BILLING',
module: MODULE.TEAM,
description: 'view team billing',
};
// Exported object containing all team permissions
export const TEAM_PERMISSIONS = {
VIEW_TEAM_SETTINGS,
EDIT_TEAM_SETTINGS,
VIEW_TEAM_MEMBERS,
EDIT_TEAM_MEMBERS,
DELETE_TEAM_MEMBERS,
EXPORT_TEAM_MEMBERS,
INVITE_TEAM_MEMBERS,
VIEW_TEAM_ROLES,
EDIT_TEAM_ROLES,
MANAGE_TEAM_BILLING,
VIEW_TEAM_BILLING,
};