Custom User Permissions
This is an advanced topic. If you're new to IceHrm, you may skip this section and return later when needed.
IceHrm allows you to create custom user roles with specific permissions. This is useful when you need to grant users access to only certain modules or restrict access to sensitive areas.
Understanding User Roles
User roles define what a user can access in IceHrm. You can:
- Grant access to specific modules (e.g., only recruitment)
- Deny access to specific modules (e.g., hide training)
- Control permissions at the entity level (List, Get, Add/Edit, Delete)
| Restricted User Level | Use Case |
|---|---|
| Restricted Admin | Admin with limited module access |
| Restricted Manager | Manager for specific functions (e.g., recruitment only) |
| Restricted Employee | Employee with minimal access (e.g., attendance only) |
Example 1: Restricted Recruitment Manager
Create a manager who can only access recruitment-related modules.
Step 1: Create the User Role
-
Go to System > Users
-
Click the User Role tab
-
Click Add New
-
Name it "Recruitment Manager"
-
Configure permissions — select List, Get, Add/Edit, and Delete for:
- Candidates
- Interviews
- Applications

- Click Save
Step 2: Assign Modules to the Role
-
Go to System > Manage Modules
-
Click the Modules tab
-
Search for recruitment-related modules (e.g., "Recruitment", "Candidates")
-
Click Edit on each module
-
Add the "Recruitment Manager" role to the allowed roles

- Save changes for each module
Step 3: Assign the Role to a User
-
Go to System > Users
-
Click the User tab
-
Find the user and click Edit
-
Set User Level to Restricted Manager
-
Add the "Recruitment Manager" user role
-
Set a Default Module (required for the dashboard to work)

- Click Save
When this user logs in, they will only see recruitment-related modules.
Example 2: Restricted Employee (Attendance Only)
Create an employee account that can only mark attendance — useful for sales staff or field workers.
Step 1: Create the User Role
-
Go to System > Users
-
Click the User Role tab
-
Click Add New
-
Name it "Sales Person" (or appropriate name)
-
Configure minimal permissions for attendance entities
-
Click Save
Step 2: Assign the Attendance Module
-
Go to System > Manage Modules
-
Click the Modules tab
-
Search for "Attendance"
-
Click Edit
-
Add the "Sales Person" role
-
Save changes
Step 3: Create the Restricted Employee Account
-
Go to System > Users
-
Click the User tab
-
Click Add New (or edit existing user)
-
Set User Level to Restricted Employee
-
Add the "Sales Person" user role
-
Set a Default Module (e.g., Attendance)
-
Click Save

When this user logs in, they only see the Attendance module.
Example 3: Denying Access to a Module
Hide a specific module from certain users — for example, hiding the Training module.
Step 1: Create a User Role
-
Go to System > Users
-
Click the User Role tab
-
Click Add New
-
Name it descriptively (e.g., "No Training Access")
-
Click Save

Step 2: Add Role to Module's Disallowed List
-
Go to System > Manage Modules
-
Click the Modules tab
-
Search for the module to hide (e.g., "Training")
-
Click Edit
-
Find "Disallowed User Roles"
-
Add the user role you created

- Save changes
Step 3: Assign the Role to Users
-
Go to System > Users
-
Click the User tab
-
Find the user and click Edit
-
Keep their User Level as Employee (or appropriate level)
-
Add the "No Training Access" user role

- Click Save
Verification
When the user logs in, the Training module will not appear in their menu.

Quick Reference
Granting Access to Modules
| Step | Action |
|---|---|
| 1 | Create a user role with required permissions |
| 2 | Add the role to target modules in Manage Modules |
| 3 | Assign the role to user with Restricted user level |
Denying Access to Modules
| Step | Action |
|---|---|
| 1 | Create a user role (no special permissions needed) |
| 2 | Add the role to Disallowed User Roles in the module |
| 3 | Assign the role to the user |
Important Notes
When using restricted user levels, you must set a Default Module. Without it, the user's dashboard will not display correctly.
- Name roles clearly — Use descriptive names like "Recruitment Manager" or "No Training Access"
- Test before deploying — Log in as the user to verify they see only the intended modules
- Document your roles — Keep a record of what each custom role is designed for