perf: roles permissions cache #58
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduces comprehensive caching for user roles and permissions to optimize authorization performance and reduce database queries.
Changes
Commit:
4d75d97- perf: roles permissions cacheFiles Modified
🆕 New Files
app/Traits/HasCachedRolesAndPermissions.php- Core caching trait with role/permission methodsapp/Constants/CacheKeys.php- Centralized cache key managementapp/Console/Commands/ClearRolePermissionCache.php- Cache management console command🔧 Modified Files
app/Models/User.php- Added caching trait integrationapp/Models/Role.php- Enhanced with caching supportapp/Services/UserService.php- Updated to use cached methodsapp/Http/Resources/V1/Auth/UserResource.php- Optimized data retrievaldatabase/migrations/2025_07_04_205615_create_role_user_table.phpdatabase/migrations/2025_07_04_205616_create_permission_role_table.php🧪 Test Files Added
tests/Feature/Console/ClearRolePermissionCacheTest.php- Console command teststests/Feature/Models/UserCachingTest.php- User caching functionality teststests/Feature/Services/UserServiceTest.php- Service layer integration testsKey Features
hasCachedPermission(),hasCachedRole(), etc.hasAnyCachedPermission(),hasAllCachedPermissions()--user-idand--alloptionsStats
Usage
# Clear all user caches php artisan cache:clear-roles-permissions --allClear specific user cache
Testing