An open API service indexing awesome lists of open source software.

https://github.com/hexters/rolevel

Role & Permissions base on file for laravel
https://github.com/hexters/rolevel

laravel-roles laravel-roles-permissions roles

Last synced: about 1 year ago
JSON representation

Role & Permissions base on file for laravel

Awesome Lists containing this project

README

          

## ROLEVEL

Package for hendle role & permission in laravel

### Require
* Bootstrap 4

### Installation

You can install this package via composer:
```
$ composer require hexters/rolevel
```

Publish vendor
```
$ php artisan vendor:publish --tag=rolevel
```

Put trait to your User Model
```
'Menu Access', // display name
'gate' => 'module.access.index', // must uniq
'url' => null, // URL can set null if menu have submenu
'classId' => '', // id attribute
'className' => '', // class style attribute
'classIcon' => '', // font icon code

/*
| ------ Submenu ------
*/
'childs' => [
[
'display' => 'Assign Permissions',
'gate' => 'module.access.assign.permission.index',
'url' => '/admin/assign/permission',
'classId' => '',
'className' => '',
'classIcon' => '',

'permissions' => [
[
'gate' => 'module.access.assign.permission.show',
'name' => 'Detail Permissions', // title
'description' => 'Show detail for permission' // info description
],

[
// More permission...
]
]
],

[
// More submenu...
]
]
],

[
// More menu...
]
];
```
After that please put script in your master layout, for showing menu access.

```
@if(auth()->check())
@php
$permissions = auth()->user()->permissions();
$viewMenu = function($menus) use (&$viewMenu, $permissions) {
$html = '';
foreach($menus as $menu) {
if(in_array($menu['gate'], $permissions)) {
$html .= view('vendor.rolevel.menu', ['menu' => $menu, 'view' => $viewMenu]);
}
}
return $html;
}
@endphp


  • Dashboard

  • {!! $viewMenu(rolevel()->menus()) !!}

@endif

@yield('content')
```
You can custom style for your menu, open blade file in `resources/views/vendor/rolevel/menu.blade.php`

You should assign role to your User account before.
```
$user = App\User::find(1);
$role = App\Role::find(1);

$user->roles()->sync([ $role->id ], false);
```

In your any controller you should declaration `Gate` to provide access to your module, for example
```
Create Account
@endcan

// OR

if($user->can('module.access.assign.permission.store')) {
// Condition
}

```
You can check [this link](https://laravel.com/docs/5.8/authorization#via-blade-templates) and [this link](https://laravel.com/docs/5.8/authorization#via-the-user-model)

Check config file in `config/rolevel.php` if you have change such as:
* Model Role possition
* Link admin prefix
* Middleware for access module assign
* Template reference

For default you can access module assign permission in `http://localhost:8000/admin/roles`