6
0
Fork 0
jiqu-library-server/app/Models/Admin/Administrator.php

63 lines
1.4 KiB
PHP

<?php
namespace App\Models\Admin;
use Dcat\Admin\Models\Administrator as DcatAdministrator;
class Administrator extends DcatAdministrator
{
public function hasPermission(String $slug): bool
{
//判断是否是超级管理员
if ($this->isAdministrator()) {
return true;
}
$userPermissions = $this->getCachePermissions();
//获取缓存权限
if (!$userPermissions) {//未获取到则刷新
$userPermissions = $this->refreshCachePermissions();
}
//判断是否有权限
if (in_array($slug, $userPermissions)) {
return true;
}
return false;
}
/**
* 更新缓存权限:重新获取,并存入缓存
*
* @return array|null
*/
public function refreshCachePermissions(): ?array
{
//获取角色权限
$permissions = [];
foreach ($this->roles()->get() as $role) {
if ($role->name !== 'Administrator') {
foreach ($role->permissions as $permission) {
$permissions[] = $permission->slug;
}
}
}
//缓存权限
session(['user_permissions' => $permissions]);
return $permissions;
}
/**
* 获取缓存权限
*
* @return array|null
*/
public function getCachePermissions(): ?array
{
return session('user_permissions');
}
}