Przejdź do głównej zawartości

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