1. Go to this page and download the library: Download zine-admin/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/ */
use Illuminate\Support\ServiceProvider;
use ZineAdmin\Permission\PermissionManage;
class AppServiceProvider extends ServiceProvider
{
public function boot(PermissionManage $permissionManage)
{
$permissionManage->registerPermissions($this->registerPermissionsMain());
}
protected function registerPermissionsMain(): array
{
return [
'dashboard/users' => '用户管理',
'create:dashboard/users' => '创建用户',
'view:dashboard/users' => '显示用户',
'delete:dashboard/users' => '删除用户',
'update:dashboard/users' => '更新用户',
];
}
//code...
use ZineAdmin\Permission\PermissionManage;
class HomeController
{
public function index()
{
$permissionManage = app(PermissionManage::class);
$resources = $permissionManage->getFlattenResource();
return view('perm', compact('resources'));
}
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use ZineAdmin\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use Notifiable;
use HasRoles;
.
.
.
/**
* 确定用户是否具有超级管理员身份
*
* @return bool
*/
public function hasSuperAdmin()
{
return $this->id === 1;
}
}
use Illuminate\Foundation\Auth\User as Authenticatable;
use ZineAdmin\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// ...
}
use ZineAdmin\Permission\Models\Role;
// Create a superadmin role for the admin user
$role = Role::create(['name'=>'superadmin', 'desc'=>'superadmin']);
$user->assignRoles('writer');
// You can also assign multiple roles at once
$user->assignRoles('writer', 'admin');
// or as an assignRoles
$user->assignRole(['writer', 'admin']);
Route::group(['middleware' => ['role:super-admin']], function () {
//
});
Route::group(['middleware' => ['permission:*:dashboard/users create:dashboard/roles']], function () {
//
});
Route::group(['middleware' => ['role:super-admin','permission:*:dashboard/users create:dashboard/roles']], function () {
//
});
Route::group(['middleware' => ['role:super-admin|writer']], function () {
//
});
Route::group(['middleware' => ['permission:publish articles|edit:dashboard/articles']], function () {
//
});
public function __construct()
{
$this->middleware(['role:super-admin','permission:publish articles|edit:dashboard/articles']);
}
use ZineAdmin\Permission\Traits\HasPermissionsForController;
class HomeController extends Controller
{
use HasPermissionsForController;
/**
* @role admin
* @permission view:dashboard/roles create:dashboard/roles
*/
public function view()
{
// Code here ...
}
}
public function render($request, Exception $exception)
{
if ($exception instanceof \Spatie\Permission\Exceptions\UnauthorizedException) {
// Code here ...
}
return parent::render($request, $exception);
}