Skip to main content

Roles Module

Purpose

Define sets of permissions that can be assigned to users or groups. Roles are the primary mechanism for controlling what actions users can perform in the system. Each role contains a collection of permissions organized by category, and permissions can be enhanced with scopes to extend visibility.

Roles List Roles list view with population counts and management actions

Role Data Structure

FieldTypeRequiredDescriptionExample
idnumberYesUnique identifier1
nameLocalizedStringYesLocalized name{ en: "Administrator", fr: "Administrateur" }
membersnumberAutoUser count with this role5
usersRoleUser[]AutoUsers assigned to role[{id, username, avatar}]
creationDatestringAutoCreation timestamp"2024-01-10T09:00:00Z"

Role Detail View

The role detail view has two main tabs:

Permissions Tab

Manage which actions the role can perform.

Features:

  • Search for specific permissions
  • Expand/collapse permission categories
  • Toggle individual permissions or entire categories
  • Assign permission scopes
  • Bulk operations on multiple permissions

Layout:

┌─────────────────────────────────────────────────────────────────┐
│ Role: HR Manager [Edit]│
├─────────────────────────────────────────────────────────────────┤
│ [Permissions] [Population] │
├─────────────────────────────────────────────────────────────────┤
│ Search permissions... [Manage Scopes (bulk)] │
├─────────────────────────────────────────────────────────────────┤
│ ☐ ▼ Access Control (6 permissions) [Scope] │
│ ☐ Add role to user N-1 (default) [Scope] │
│ ☐ Create role N-1 (default) [Scope] │
│ ☑ Read roles 2 groups [Scope] │
│ │
│ ☑ ▼ User (10 permissions) [Scope] │
│ ☑ Read user information 3 groups [Scope] │
│ ☑ Update user N-1 (default) [Scope] │
│ ☐ Create user N-1 (default) [Scope] │
│ ... │
└─────────────────────────────────────────────────────────────────┘

Population Tab

Manage which users have this role.

Features:

  • Search members by name
  • Filter by creation type (Manual, Dynamic, Group)
  • Add new members
  • Remove selected members
  • Pagination (10 items per page)

Layout:

┌─────────────────────────────────────────────────────────────────┐
│ Role: HR Manager [Edit]│
├─────────────────────────────────────────────────────────────────┤
│ [Permissions] [Population] │
├─────────────────────────────────────────────────────────────────┤
│ Search members... Creation Type: [All ▼] [Add Members] │
├─────────────────────────────────────────────────────────────────┤
│ ☐ Sophie Martin Manual Added Jan 15, 2024 │
│ ☐ Thomas Bernard Dynamic Added Feb 3, 2024 │
│ ☐ Marie Dupont Manual Added Dec 1, 2023 │
│ ... │
├─────────────────────────────────────────────────────────────────┤
│ Page 1 of 3 [< >] │
└─────────────────────────────────────────────────────────────────┘

Permission Categories

Permissions are organized into 20+ categories for easier management:

CategoryCountExamples
Access Control6Add role to user, Create role, Delete roles, Read roles
Bulk Task1Read bulk tasks
Campaign4Create, delete, read, update campaigns
Company2Read/update company configuration
Field8CRUD for custom and standard fields
Group17Manage user groups and visibility groups
Job8Job listings and offers management
Job Skill4CRUD for job skills
LinkedIn1Use LinkedIn API
Media4CRUD for media files
Objective5OKR and objective management
Review3Performance review management
Skill4CRUD for skills
Skill Group4CRUD for skill groups
Smart Trad4Translation management
Talent Search1Use TalentSearch feature
Training4CRUD for trainings
Training Skill3Create, delete, read training skills
User10User management operations
User Skill4CRUD for user skills

Permission States

Each permission can be in one of two states:

StateVisualEffect
ActivatedToggle ON (blue)Permission is granted to role members
DeactivatedToggle OFF (gray)Permission is denied

Category-Level Toggle

  • Toggling a category header activates/deactivates ALL permissions in that category
  • Individual permissions can still be toggled independently
  • Category shows "Activated" (blue toggle) if ANY permission is active

Permission Scope Assignment

Each permission can have 0 or more Permission Scopes attached to extend visibility:

ConfigurationDisplayEffect
No scope"N-1 (default)"Permission applies to direct reports only
1+ scopes"X groups"Permission applies to users in those scopes

How Scopes Work

Without Scope (Default N-1):
┌─────────────────────────────────────┐
│ Manager can see/act on: │
│ └── Only direct reports (N-1) │
│ │
│ Cannot see: Other departments │
└─────────────────────────────────────┘

With "Engineering Department" Scope:
┌─────────────────────────────────────┐
│ Manager can see/act on: │
│ └── All Engineering team members │
│ (regardless of hierarchy) │
│ │
│ Extended visibility granted │
└─────────────────────────────────────┘

Assigning Scopes to a Permission

  1. Find the permission in the Permissions tab
  2. Click the "Scope" button on the permission row
  3. Modal opens showing available visibility groups
  4. Select groups to add as scopes
  5. Added groups appear in the right panel
  6. Click "Confirm" to save

Bulk Scope Assignment

  1. Select multiple permissions using checkboxes
  2. Click "Manage Permission Scopes" in bulk action bar
  3. Select groups to apply
  4. Warning: This overwrites existing scopes on all selected permissions
  5. Click "Confirm"

Role Actions

Individual Actions

ActionDescription
ViewClick row to see details
EditModify name, description
ExportDownload role data
DuplicateCreate copy of role
DeleteRemove role (with confirmation)

Permission Bulk Actions

ActionDescription
ActivateEnable selected permissions
DeactivateDisable selected permissions
Manage Permission ScopesAssign scopes to selected permissions

Member Bulk Actions

ActionDescription
RemoveRemove selected members from role

Role Creation

Required Fields:

  • Name (English required)
  • Description (optional, max 200 characters)

Process:

  1. Click "Create role" button
  2. Enter role name
  3. Enter description (optional)
  4. Click "Create Role"
  5. Role created with all permissions deactivated
  6. Go to role detail to configure permissions

Role Workflows

Workflow 1: Create a New Team Leader Role

Step 1: Create Role
├── Click "Create role"
├── Name: "Team Leader"
├── Description: "Manages direct reports, objectives, and reviews"
└── Click "Create Role"

Step 2: Configure Permissions
├── Go to Permissions tab
├── Expand "User" category
│ ├── Enable: Read user information
│ ├── Enable: Read user skills
│ └── Disable: Create user, Delete user
├── Expand "Objective" category
│ ├── Enable: Read objectives
│ ├── Enable: Update objective
│ └── Enable: Change objective status
├── Expand "Review" category
│ └── Enable: Read reviews
└── Leave all as N-1 scope (direct reports only)

Step 3: Verify Configuration
├── Review activated permissions
├── Confirm scopes are appropriate
└── Test with a team leader user

Workflow 2: Configure HR Role with Extended Scope

Step 1: Create or Edit HR Role
├── Name: "HR Business Partner"
└── Description: "HR support for assigned departments"

Step 2: Enable HR Permissions
├── User category:
│ ├── Read user information ✓
│ └── Update user ✓
├── Review category:
│ └── Read reviews ✓
└── Training category:
└── Read trainings ✓

Step 3: Assign Extended Scopes
├── For "Read user information":
│ ├── Click Scope button
│ ├── Add "Engineering Department" scope
│ ├── Add "Product Department" scope
│ └── Confirm
├── For "Read reviews":
│ ├── Click Scope button
│ ├── Add same scopes
│ └── Confirm
└── Keep "Update user" as N-1 (can only edit own team)

Result: HR BP can VIEW Engineering & Product employees
but can only UPDATE their own direct reports

Workflow 3: Bulk Scope Assignment

Step 1: Select Permissions
├── Check "Read user information"
├── Check "Read user skills"
├── Check "Read objectives"
└── (Multiple permissions selected)

Step 2: Open Bulk Modal
├── Click "Manage Permission Scopes"
├── Modal opens

Step 3: Select Scopes
├── Add "EMEA Region" scope
├── Add "Engineering Department" scope
└── Review selection

Step 4: Apply
├── Click "Confirm"
├── WARNING: This overwrites existing scopes
└── All selected permissions now have these 2 scopes

Pre-configured Roles

The system includes 23 pre-configured roles:

Administrative Roles

RoleMembersPurpose
System Administrator2Full system access
HR Administrator4Complete HR functions

Executive Roles

RoleMembersPurpose
C-Level Executive5Executive leadership access
VP/Director8Senior leadership access

Management Roles

RoleMembersPurpose
People Manager22Team management functions
Team Lead14Technical team leadership

Technical Roles

RoleMembersPurpose
Staff/Principal Engineer5Senior technical leadership
Senior Engineer12Senior developer functions
Engineer25Standard developer access
Backend Developer-Backend-specific access
Frontend Developer-Frontend-specific access
Full Stack Developer-Full stack access
Tech Lead-Technical leadership

Specialist Roles

RoleMembersPurpose
Security Specialist4Security-focused access
Data Specialist5Data-focused access
QA Specialist5Quality assurance access
DevOps Specialist4DevOps-focused access

Business Roles

RoleMembersPurpose
Product Manager2Product management
Designer3Design functions
Sales Representative3Sales access
Marketing Specialist1Marketing access
Finance Specialist1Finance access
Customer Success1Customer success access

HR Roles

RoleMembersPurpose
HR Business Partner2Department HR support
Recruiter1Recruitment functions
HR Specialist2General HR functions

General Roles

RoleMembersPurpose
Employee60Basic employee access
Viewer-Read-only access

Best Practices

DO: Follow Principle of Least Privilege

Good:
Role: "Team Leader"
├── Read user information ✓ (N-1 scope)
├── Read objectives ✓ (N-1 scope)
├── Update objectives ✓ (N-1 scope)
├── Read reviews ✓ (N-1 scope)
├── Create user ✗ (not needed)
├── Delete user ✗ (too dangerous)
└── Company configuration ✗ (admin only)

Rationale: Enable only what's needed for the job function

DO: Use Meaningful Role Names

Good:
├── "HR Manager"
├── "Team Leader"
├── "Finance Analyst"
├── "Project Viewer"
└── "System Administrator"

Bad:
├── "Role1"
├── "New Role"
├── "Admin Copy"
└── "Test Role Final v2"

DO: Document Role Purpose

Role: "HR Business Partner"
Description: "Provides HR support to specific departments.
Can view and update employee information for assigned
departments but cannot create or delete users."

DO: Assign Appropriate Scopes

Role: "HR Business Partner - Engineering"
Permission: "Read user information"
Scope: "Engineering Department" ✓ (matches role function)

Role: "Finance Manager"
Permission: "Read financial reports"
Scope: "Finance Department" ✓ (appropriate to role)

DON'T: Create "Super Admin" Roles

Problem:
Role: "Super Admin"
├── ALL 100+ permissions enabled
├── ALL scopes attached
└── Assigned to 20+ users

Issues:
├── Security risk
├── No accountability
├── Violates least privilege
└── Impossible to audit

Solution:
├── Create specific admin roles
├── Limit scope to job function
├── Restrict to 1-3 users

DON'T: Duplicate Roles for Minor Variations

Problem:
├── "HR Manager"
├── "HR Manager (Paris)"
├── "HR Manager (London)"
├── "HR Manager (Copy)"
├── "HR Manager - Updated"
└── 50+ similar roles

Solution:
├── One "HR Manager" role
├── Use Permission Scopes for geographic variations
├── e.g., Permission + "Paris Office" scope
└── Much easier to maintain

DON'T: Assign Conflicting Scopes

Problem:
Permission: "Read financial data"
Scope: "Engineering Department" ← Wrong scope!

Issue:
├── Engineering doesn't need financial access
├── Finance employees can't see their data
└── Security and access confusion

Solution:
Permission: "Read financial data"
Scope: "Finance Department" ← Correct scope

Role Design Patterns

Pattern 1: Function-Based Roles

├── HR Manager (HR functions)
├── Recruiter (recruitment functions)
├── Finance Manager (finance functions)
├── Team Leader (team management)
└── Employee (basic employee functions)

Pattern 2: Access-Level Roles

├── Administrator (full access)
├── Manager (department-level access)
├── Employee (personal access)
└── Viewer (read-only access)
Base role + Function role + Scope:

User: Marie Dupont
├── Base Role: Employee (basic access)
├── Function Role: HR Business Partner
└── Scope applied: "Engineering Department"

Result: HR BP with visibility to Engineering team

Integration with Other Modules

ModuleInteraction
UsersUsers are assigned to role's population
User GroupsGroups have roles attached; members inherit
Permission ScopesScopes are attached to role's permissions