dev-master
9999999-devRoles & Permissions for Laravel where roles can be held in regard to a database object
MIT
The Requires
The Development Requires
by Joseph Paul
Roles & Permissions for Laravel where roles can be held in regard to a database object
Roles & Permissions for Laravel where roles can be held in regard to a database object, (*1)
There are plenty of packages that add ACL functionalities to a Laravel application. Yet, none of the existing solutions seems to allow us to assign roles to users with respect to an object. We often come across a use case where we do not only need to define global roles, such as TECH_ADMIN
, but also roles in regard to a database object, such as an Organisation
, which has eg. EDITOR
users that are granted certain permissions only on that specific Organisation
and not on others., (*2)
This package is in its very early days. It currently makes quite a few assumptions:, (*3)
users
tableusers
table already exists when installing the package and running the migrationsusers
table has a primary key id
which is an unsigned integer
roles
permissions
permission_role
role_user
composer require sehrgut/laravel-object-roles
php artisan migrate
HasRolesAndPermissions
trait on the `User model<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use SehrGut\LaravelObjectRoles\HasRolesAndPermissions; use SehrGut\LaravelObjectRoles\Models\Permission; class User extends Model { use HasRolesAndPermissions; }
$permission = SehrGut\LaravelObjectRoles\Models\Permission::create([ 'name' => 'posts.update', 'description' => 'The ability to update existing Post objects', ]); $role = SehrGut\LaravelObjectRoles\Models\Role::create([ 'name' => 'EDITOR', 'description' => 'A User who can manage content', ]);
$role->attachPermission('posts.update'); // or: $role->attachPermission($permission);
$user->assignGlobalRole('EDITOR'); $user->assignObjectRole('EDITOR', $organisation);
$user->hasGlobalPermission('posts.update') $user->hasPermissionThrough('show_statistics', $organisation)
This project is released under the MIT License., (*4)
Roles & Permissions for Laravel where roles can be held in regard to a database object
MIT