Overview
GAC provides a fluent API for checking permissions based on modules and features. This guide shows you how to implement permission checks in your application.Basic Permission Checking
Setting Up the Entity
Before checking permissions, you must set the entity (user or client):src/GAC.php:25).
Loading Permissions
Retrieve permissions for the current entity:getPermissions() method returns a Permissions object (src/Permissions/Permissions.php:7).
Checking Module Access
Use thehas() method to check if the entity can access a module:
gac_module.code field in your database.
Getting Permission Details
Retrieve detailed permission information for a module:get() method returns a Permission object (src/Permissions/Permission.php:5) or null.
Feature-based Permissions
GAC supports granular feature permissions: Create, Read, Update, Delete, Trash, and Development mode.Available Features
Fromsrc/Permissions/Permission.php:12:
feature SET field in gac_module_access table.
Checking Specific Features
Checking Multiple Features
Require multiple features at once:hasFeature() method (src/Permissions/Permission.php:54) returns true only if ALL specified features are granted.
Access Levels
Permissions have three levels defined in thegac_module_access.level field:
0: Low (restricted access)1: Normal (standard access)2: High (full access)
Development Mode Access
Modules marked as “in development” (gac_module.is_developing = '1') require the special dev feature:
src/Permissions/Permission.php:43:
Practical Examples
Controller Permission Check
Middleware Example
View Conditional Rendering
API Permission Check
Permission Granularity
GAC implements a priority system for permission granularity (src/GAC.php:381):
- Personal permissions (priority: -1) - Direct permissions assigned to user/client
- Inherited permissions from roles (priority: 0-4) - Based on role priority
Getting All Permissions
Retrieve the raw permissions array:Performance Tips
Next Steps
Managing Restrictions
Learn about restrictions and how to apply them
Cache Management
Optimize performance with caching strategies