cuongnx / laravel-mongodb-permission
A flexible and multi-guard Role & Permission system for Laravel 11+ and 12+, using MongoDB and inspired by Spatie.
v1.1.1
2025-07-12 15:20 UTC
Requires
- php: ^8.1
- laravel/framework: ^11.0 || ^11.0 || ^12.0
- mongodb/laravel-mongodb: ^5.4
This package is auto-updated.
Last update: 2025-07-12 15:33:48 UTC
README
โ Supports Laravel 11 and 12+ with full MongoDB role/permission management.
MongoPermission is a library that extends Spatie's Role & Permission system to support MongoDB, with multi-guard support, easy-to-use syntax, and flexible expansion for Laravel applications.
๐งพ Version Information
Item | Requirement |
---|---|
Library Version | v1.0.0 * |
Supported Laravel Version | ^11.0 |
MongoDB Laravel Driver | mongodb/laravel-mongodb ^3.9 |
MongoDB PHP Extension | mongodb PHP extension >=1.13 |
MongoDB Server | >=4.0 |
PHP Version | >=8.0 |
๐ก Make sure to install MongoDB Laravel package:
composer require mongodb/laravel-mongodb
โ Features
- Role and Permission support with MongoDB
- Multi-guard support:
web
,admin
, etc. - Middleware:
role
,permission
(supports multiple roles/permissions) - Extended Blade directives:
@role
,@permission
,@hasanyrole
,@hasallroles
- Powerful CLI command:
php artisan mp:manage
- Easily extendable UI or integration into admin systems
โ๏ธ Installation
composer require cuongnx/laravel-mongodb-permission
๐ง MongoDB Configuration
.env
:
DB_CONNECTION=mongodb DB_DATABASE=your_database
config/auth.php
:
'guards' => [ 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ], 'providers' => [ 'admins' => [ 'driver' => 'eloquent', 'model' => App\Models\Admin::class, ], ],
๐งฉ Model Setup
use CuongNX\MongoPermission\Traits\HasRoles; class Admin extends Authenticatable { use HasRoles; protected $guard_name = 'admin'; }
๐ก Middleware Usage
Route::middleware(['auth:admin', 'role:admin|mod'])->group(function () { Route::get('/admin/dashboard', fn() => 'Welcome Admin'); });
- Middleware supports multiple roles/permissions:
->middleware('role:admin|mod') ->middleware('permission:edit-users|delete-posts')
๐จ Blade Directives
@role('admin') <p>You are an Admin</p> @endrole @permission('edit-users') <p>You can edit users</p> @endpermission @hasanyrole('admin|mod') <p>You have at least one role</p> @endhasanyrole @hasallroles('admin|mod') <p>You have all the roles</p> @endhasallroles
Guard can be passed explicitly:
@role('admin', 'admin')
๐ง CLI Usage
php artisan mp:manage --create-role=admin,mod --guard=admin
๐ฏ Available Options:
Option | Description | |
---|---|---|
--create-role= |
Create one or more roles | |
--delete-role= |
Delete one or more roles | |
--create-permission= |
Create one or more permissions | |
--delete-permission= |
Delete one or more permissions | |
--assign-permission= |
Assign permissions to a role. Format: `role:permission1 | permission2` |
--list-roles |
List all roles | |
--list-permissions |
List all permissions | |
--guard= |
Guard name (default: web ) |
|
--reset |
Remove all roles and permissions | |
--export=path/to/file.json |
Export all roles & permissions to a JSON file | |
--import=path/to/file.json |
Import from a JSON file | |
--sync-role-permissions= |
Sync permissions for role from JSON file (role:path.json ) |
|
--show-role=role |
View detailed information about a role |
๐ Example:
php artisan mp:manage --create-role=admin,mod --create-permission=edit,delete --assign-permission=admin:edit|delete --guard=admin
๐ฆ Export / Import JSON
php artisan mp:manage --export=storage/permissions.json php artisan mp:manage --import=storage/permissions.json php artisan mp:manage --sync-role-permissions=admin:storage/admin-perms.json
๐ Library Structure
src/
โโโ Console/
โ โโโ Commands/MongoPermissionManager.php
โโโ Middleware/
โ โโโ RoleMiddleware.php
โ โโโ PermissionMiddleware.php
โโโ Models/
โ โโโ Role.php
โ โโโ Permission.php
โโโ Services/
โ โโโ Contracts/
โ โ โโโ PermissionServiceInterface.php
โ โโโ PermissionService.php
โโโ Support/
โ โโโ BladeDirectivesRegistrar.php
โโโ Traits/
โ โโโ HasRoles.php
โโโ Providers/
โโโ MongoPermissionServiceProvider.php
๐ Donate
If you find this package useful, feel free to support the development:
โ Coffee & Support
๐ฆ Bank (VIETQR)
- Account Holder: NGUYEN XUAN CUONG
- Account Number:
1368686856
- Bank: Techcombank
๐ฌ Contact
- Email: xuancuong220691@gmail.com
๐ชช License
MIT License ยฉ Cuong Nguyen