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

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.

Laravel MongoDB License

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)

QR Code Techcombank

  • Account Holder: NGUYEN XUAN CUONG
  • Account Number: 1368686856
  • Bank: Techcombank

๐Ÿ“ฌ Contact

๐Ÿชช License

MIT License ยฉ Cuong Nguyen