Skip to main content

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,
};