Ga naar hoofdinhoud

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).