πŸ” Authentication & Authorization

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

Edit this page

Copyright Β© 2023-Present Ever Co. LTD.Docs by Sourcey