PHP code example of willypuzzle / laravel-permission
1. Go to this page and download the library: Download willypuzzle/laravel-permission library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
willypuzzle / laravel-permission example snippets
// Adding permissions to a user dividing them by section
$user->givePermissionTo('edit articles', 'blog');
// Adding permissions via a role
$user->assignRole('writer');
and always by section
$role->givePermissionTo('edit articles', 'blog');
return [
'models' => [
/*
* When using the "HasRoles" trait from this package, we need to know which
* Eloquent model should be used to retrieve your permissions. Of course, it
* is often just the "Permission" model but you may use whatever you like.
*
* The model you want to use as a Permission model needs to implement the
* `Idsign\Permission\Contracts\Permission` contract.
*/
'permission' => Idsign\Permission\Models\Permission::class,
/*
* When using the "HasRoles" trait from this package, we need to know which
* Eloquent model should be used to retrieve your roles. Of course, it
* is often just the "Role" model but you may use whatever you like.
*
* The model you want to use as a Role model needs to implement the
* `Idsign\Permission\Contracts\Role` contract.
*/
'role' => Idsign\Permission\Models\Role::class,
],
'table_names' => [
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your roles. We have chosen a basic
* default value but you may easily change it to any table you like.
*/
'roles' => 'roles',
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your permissions. We have chosen a basic
* default value but you may easily change it to any table you like.
*/
'permissions' => 'permissions',
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your sections. We have chosen a basic
* default value but you may easily change it to any table you like.
*/
'sections' => 'sections',
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your models permissions. We have chosen a
* basic default value but you may easily change it to any table you like.
*/
'model_has_permissions' => 'model_has_permissions',
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your models roles. We have chosen a
* basic default value but you may easily change it to any table you like.
*/
'model_has_roles' => 'model_has_roles',
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your roles permissions. We have chosen a
* basic default value but you may easily change it to any table you like.
*/
'role_has_permissions' => 'role_has_permissions',
],
/*
* By default all permissions will be cached for 24 hours unless a permission or
* role is updated. Then the cache will be flushed immediately.
*/
'cache_expiration_time' => 60 * 24,
];
use Illuminate\Foundation\Auth\User as Authenticatable;
use Idsign\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// ...
}
>use Illuminate\Database\Eloquent\Model;
>use Idsign\Permission\Traits\HasRoles;
>
>class Page extends Model
>{
> use HasRoles;
>
> protected $guard_name = 'web'; // or whatever guard you want to use
>
> // ...
>}
>
use Idsign\Permission\Models\Role;
use Idsign\Permission\Models\Permission;
use Idsign\Permission\Models\Section;
$role = Role::create(['name' => 'writer']);
$permission = Permission::create(['name' => 'edit articles']);
$section = Section::create(['name' => 'blog']);
// get a list of all permissions directly assigned to the user
$permissions = $user->getPermissions('blog');//you have to pass the section
// get all permissions inherited by the user via roles
$permissions = $user->getAllPermissions('blog');
// get a collection of all defined roles
$roles = $user->getRoleNames(); // Returns a collection
$users = User::role('writer')->get(); // Returns only users with the role 'writer'
$user->givePermissionTo('edit articles', 'blog');//always indicate the section
// You may also pass an array
$user->givePermissionTo(['edit articles', 'delete articles'], 'blog');
$user->assignRole('writer');
// You can also assign multiple roles at once
$user->assignRole('writer', 'admin');
// or as an array
$user->assignRole(['writer', 'admin']);
$user->removeRole('writer');
// All current roles will be removed from the user and replaced by the array given
$user->syncRoles(['writer', 'admin']);
// Direct permissions
$user->getDirectPermissions('blog')
// Permissions inherited from the user's roles
$user->getPermissionsViaRoles('blog');
// All permissions which apply on the user (inherited and direct)
$user->getAllPermissions('blog');
@role('writer')
I am a writer!
@else
I am not a writer...
@endrole
@hasrole('writer')
I am a writer!
@else
I am not a writer...
@endhasrole
@hasanyrole($collectionOfRoles)
I have one or more of these roles!
@else
I have none of these roles...
@endhasanyrole
// or
@hasanyrole('writer|admin')
I am either a writer or an admin or both!
@else
I have none of these roles...
@endhasanyrole
@hasallroles($collectionOfRoles)
I have all of these roles!
@else
I do not have all of these roles...
@endhasallroles
// or
@hasallroles('writer|admin')
I am both a writer and an admin!
@else
I do not have all of these roles...
@endhasallroles
// Create a superadmin role for the admin users
$role = Role::create(['guard_name' => 'admin', 'name' => 'superadmin']);
// Define a `publish articles` permission for the admin users belonging to the admin guard
$permission = Permission::create(['guard_name' => 'admin', 'name' => 'publish articles']);
// Define a *different* `publish articles` permission for the regular users belonging to the web guard
$permission = Permission::create(['guard_name' => 'web', 'name' => 'publish articles']);
Route::group(['middleware' => ['role:super-admin']], function () {
//
});
Route::group(['middleware' => ['permission:publish articles:blog']], function () {
//In case of permission Make sure to pass section separated by : or a exception will be raised.
});
Route::group(['middleware' => ['role:super-admin','permission:publish articles']], function () {
//
});
Route::group(['middleware' => ['role:super-admin|writer']], function () {
//
});
Route::group(['middleware' => ['permission:publish articles:blog|edit articles:blog']], function () {
//
});
public function __construct()
{
$this->middleware(['role:super-admin','permission:publish articles:blog|edit articles:blog']);
}
public function render($request, Exception $exception)
{
if ($exception instanceof \Idsign\Permission\Exceptions\UnauthorizedException) {
// Code here ...
}
return parent::render($request, $exception);
}
public function setUp()
{
// first er all the roles and permissions
$this->app->make(\Idsign\Permission\PermissionRegistrar::class)->registerPermissions();
}
use Illuminate\Database\Seeder;
use Idsign\Permission\Models\Role;
use Idsign\Permission\Models\Permission;
use Idsign\Permission\Models\Section;
class RolesAndPermissionsSeeder extends Seeder
{
public function run()
{
// Reset cached roles and permissions
app()['cache']->forget('idsign.permission.cache.permissions');
app()['cache']->forget('idsign.permission.cache.sections');
// create permissions
Permission::create(['name' => 'edit articles']);
Permission::create(['name' => 'delete articles']);
Permission::create(['name' => 'publish articles']);
Permission::create(['name' => 'unpublish articles']);
Section::create(['blog' => 'unpublish articles']);
// create roles and assign existing permissions
$role = Role::create(['name' => 'writer']);
$role->givePermissionTo('edit articles', 'blog');
$role->givePermissionTo('delete articles', 'blog');
$role = Role::create(['name' => 'admin']);
$role->givePermissionTo('publish articles', 'blog');
$role->givePermissionTo('unpublish articles', 'blog');
}
}