ื“ืœื’ ืœืชื•ื›ืŸ ื”ืจืืฉื™

Roles & Permissions

Ever Gauzy uses Role-Based Access Control (RBAC) with fine-grained permissions to control access to features and data.

Role Hierarchyโ€‹

SUPER_ADMIN          โ† Full platform access (tenant-wide)
โ””โ”€โ”€ ADMIN โ† Organization administration
โ””โ”€โ”€ DATA_ENTRY โ† Data entry and basic management
โ””โ”€โ”€ EMPLOYEE โ† Employee self-service
โ””โ”€โ”€ CANDIDATE โ† Candidate limited access
โ””โ”€โ”€ VIEWER โ† Read-only access

Role Descriptionsโ€‹

RoleScopeDescription
SUPER_ADMINTenantFull access to all tenant features, user management, and settings
ADMINOrganizationOrganization administration, employee management, project setup
DATA_ENTRYOrganizationCreate/edit records (expenses, invoices, time logs)
EMPLOYEESelfView own data, track time, manage own profile
CANDIDATESelfView interview schedule, submit applications
VIEWEROrganizationRead-only access to assigned resources

Permissionsโ€‹

Permissions provide fine-grained access control within roles. Each permission can be enabled or disabled per role.

Permission Categoriesโ€‹

Organizationโ€‹

PermissionDescription
ORG_VIEWView organization details
ORG_EDITEdit organization settings
ORG_INVITE_VIEWView pending invitations
ORG_INVITE_EDITSend/manage invitations
ORG_TAGS_EDITManage organization tags

Employeesโ€‹

PermissionDescription
EMPLOYEES_VIEWView employee list and profiles
EMPLOYEES_EDITCreate/edit/delete employees
EMPLOYEE_EXPENSES_VIEWView employee expenses
EMPLOYEE_EXPENSES_EDITCreate/edit employee expenses

Time Trackingโ€‹

PermissionDescription
TIME_TRACKERUse the time tracker
CAN_APPROVE_TIMESHEETApprove/deny timesheets
TIMESHEET_EDITEdit time entries
TIME_OFF_VIEWView time-off requests
TIME_OFF_EDITCreate/approve time-off requests

Project Managementโ€‹

PermissionDescription
ORG_PROJECT_VIEWView projects
ORG_PROJECT_EDITCreate/edit projects
ORG_TASK_VIEWView tasks
ORG_TASK_EDITCreate/edit tasks
ORG_SPRINT_VIEWView sprints
ORG_SPRINT_EDITCreate/edit sprints

Financeโ€‹

PermissionDescription
INVOICES_VIEWView invoices
INVOICES_EDITCreate/edit invoices
EXPENSES_VIEWView expenses
EXPENSES_EDITCreate/edit expenses
PAYMENT_VIEWView payments
PAYMENT_ADD_EDITCreate/edit payments
INCOME_VIEWView income
INCOME_EDITCreate/edit income

CRM / ATSโ€‹

PermissionDescription
ORG_CONTACT_VIEWView contacts
ORG_CONTACT_EDITCreate/edit contacts
CANDIDATES_VIEWView candidates
CANDIDATES_EDITCreate/edit candidates
PIPELINE_VIEWView sales pipelines
PIPELINE_EDITCreate/edit pipelines

Integrationsโ€‹

PermissionDescription
INTEGRATION_VIEWView integrations
INTEGRATION_EDITConfigure integrations

Settingsโ€‹

PermissionDescription
CHANGE_ROLES_PERMISSIONSModify role-permission mappings
CHANGE_SELECTED_CANDIDATEChange candidate status
ACCESS_DELETE_ACCOUNTDelete user account
ACCESS_DELETE_ALL_DATADelete all tenant data

Applying Guardsโ€‹

Role-Based Guardโ€‹

@Controller("admin")
@UseGuards(TenantPermissionGuard, RoleGuard)
@Roles(RolesEnum.SUPER_ADMIN, RolesEnum.ADMIN)
export class AdminController {
// Only SUPER_ADMIN and ADMIN can access
}

Permission-Based Guardโ€‹

@Controller("employee")
@UseGuards(TenantPermissionGuard, PermissionGuard)
export class EmployeeController {
@Get()
@Permissions(PermissionsEnum.EMPLOYEES_VIEW)
async findAll() {
// Only users with EMPLOYEES_VIEW permission
}

@Post()
@Permissions(PermissionsEnum.EMPLOYEES_EDIT)
async create() {
// Only users with EMPLOYEES_EDIT permission
}
}

Combined Guardsโ€‹

@UseGuards(TenantPermissionGuard, RoleGuard, PermissionGuard)
@Roles(RolesEnum.ADMIN)
@Permissions(PermissionsEnum.CHANGE_ROLES_PERMISSIONS)
async updateRolePermissions() {
// Must be ADMIN AND have CHANGE_ROLES_PERMISSIONS
}

Managing Roles via APIโ€‹

List Rolesโ€‹

GET /api/role?relations[]=rolePermissions
Authorization: Bearer {token}

Get Role Permissionsโ€‹

GET /api/role-permission?where[roleId]={role-id}
Authorization: Bearer {token}

Update Role Permissionsโ€‹

PUT /api/role-permission/{id}
Authorization: Bearer {token}
Content-Type: application/json

{
"enabled": true
}

Default Role Permissionsโ€‹

When a new tenant is created, all roles are created with default permissions:

PermissionSuper AdminAdminData EntryEmployeeCandidateViewer
ORG_VIEWโœ…โœ…โœ…โœ…โŒโœ…
ORG_EDITโœ…โœ…โŒโŒโŒโŒ
EMPLOYEES_VIEWโœ…โœ…โœ…โœ…โŒโœ…
EMPLOYEES_EDITโœ…โœ…โŒโŒโŒโŒ
TIME_TRACKERโœ…โœ…โœ…โœ…โŒโŒ
INVOICES_VIEWโœ…โœ…โœ…โŒโŒโœ…
INVOICES_EDITโœ…โœ…โœ…โŒโŒโŒ
CHANGE_ROLES_PERMISSIONSโœ…โŒโŒโŒโŒโŒ

Feature Flagsโ€‹

Role creation can be restricted:

# .env
ALLOW_SUPER_ADMIN_ROLE=true # Allow creating SUPER_ADMIN role

When false, no new SUPER_ADMIN users can be created (enhances security for multi-tenant production).