Download the PHP package saeedvir/laravel-permissions without Composer
On this page you can find all versions of the php package saeedvir/laravel-permissions. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download saeedvir/laravel-permissions
More information about saeedvir/laravel-permissions
Files in saeedvir/laravel-permissions
Package laravel-permissions
Short Description A highly optimized role and permission package for Laravel 11/12 with caching, multiple guards, wildcard permissions, super admin, and Laravel Gate integration
License MIT
Homepage https://github.com/saeedvir/laravel-permissions
Informations about the package laravel-permissions
Laravel Permissions Package
A highly optimized role and permission package for Laravel 11/12 with advanced features including multiple guards, wildcard permissions, super admin, expirable permissions, expirable roles, and Laravel Gate integration.
✨ Features
Core Features
- ✅ Role-based Access Control (RBAC)
- ✅ Permission Management
- ✅ Direct User Permissions
- ✅ Polymorphic Relationships - Works with any model
Advanced Features
- 🚀 Multiple Guards Support - Separate permissions for web, api, admin
- 🎯 Wildcard Permissions - Use
posts.*to grant all post permissions - 👑 Super Admin Role - Automatically has ALL permissions
- ⏰ Expirable Permissions - Set expiration dates on permissions
- ⏰ Expirable Roles - Set expiration dates on roles (NEW in v2.1.0)
- 🔗 Laravel Gate Integration - Use
$user->can()natively - 📊 Query Scopes -
User::role('admin')->get() - 🔒 Database Transactions - Atomic permission changes
Performance
- ⚡ Advanced Caching with Redis tags support
- 💾 Memory Optimized with eager loading
- 🚄 Database Optimized with composite indexes
- 📦 Multiple Database Support
Developer Experience
- 🛡️ Middleware Protection for routes
- 🎨 Blade Directives for templates
- 📝 Comprehensive Documentation
- ✅ Laravel 11/12 Compatible
Requirements
- PHP 8.2 or higher
- Laravel 11.x or 12.x
- Composer
Quick Start
Installation
Step 1: Install via Composer
Install the package via Composer:
The package will automatically register its service provider.
Step 2: Publish Configuration
Publish the configuration file:
Step 3: Configure Database
Update your .env file:
Step 4: Configure Database Connection
Update config/permissions.php to set your database connection properly.
Step 5: Run Migrations
Or publish and customize migrations first:
Setup
Add Trait to User Model
Add the HasRolesAndPermissions trait to your User model:
Usage
Creating Roles and Permissions
Assigning Permissions to Roles
Assigning Roles to Users
Giving Direct Permissions to Users
Checking Roles and Permissions
Using Blade Directives (Optional - needs implementation)
Advanced Features
Expirable Roles (NEW in v2.1.0)
Assign roles with expiration dates for temporary access:
Enable Feature
In config/permissions.php or .env:
Or in .env:
Usage Examples
How it works:
- Expired roles are automatically filtered from all role checks
- Permissions from expired roles are not granted
- Roles with
nullexpires_at never expire (permanent) - Works seamlessly with caching system
Expirable Permissions
Similar to expirable roles, you can set expiration on direct permissions:
Enable Feature
Usage Examples
Wildcard Permissions
Use wildcards for flexible permission matching:
Enable Feature
Usage Examples
Super Admin Role
Designate a role that automatically has all permissions:
Enable Feature
Usage
Query Scopes
Powerful query scopes for filtering users:
Middleware Usage
The package provides three middlewares:
1. CheckAuth Middleware
Checks if user is authenticated:
2. CheckRole Middleware
Checks if user has specific role(s):
3. CheckPermission Middleware
Checks if user has specific permission(s):
Combining Middlewares
Configuration
Cache Settings
Control caching behavior in config/permissions.php:
Middleware Responses
Configure unauthorized/unauthenticated responses:
Performance Settings
Cache Management
Manual Cache Clearing
Automatic Cache Clearing
The package automatically clears relevant caches when:
- Roles are assigned/removed from users
- Permissions are assigned/removed from users or roles
- Roles or permissions are deleted or updated
Database Structure
Tables Created
- roles - Stores role definitions
- permissions - Stores permission definitions
- role_has_permissions - Pivot table for role-permission relationships
- model_has_roles - Polymorphic pivot table for user-role relationships
- model_has_permissions - Polymorphic pivot table for user-permission relationships
Performance Optimization Tips
- Enable Caching: Set
PERMISSION_CACHE_ENABLED=truein.env - Use Eager Loading: The package uses eager loading when checking permissions from roles
- Database Indexing: All tables have proper indexes for fast queries
- Use Slugs: Always use slugs (strings) instead of IDs for better cache utilization
- Chunk Large Operations: Use the configured chunk size for batch operations
Testing
Security
If you discover any security-related issues, please email [email protected] instead of using the issue tracker.
License
The MIT License (MIT). Please see License File for more information.
Credits
Support
For support, please open an issue on GitHub or contact [email protected]
All versions of laravel-permissions with dependencies
illuminate/support Version ^11.0|^12.0
illuminate/database Version ^11.0|^12.0
illuminate/cache Version ^11.0|^12.0