hasOne(
Role::class,
'id',
'role_id'
);
}
public function getStatusWithCssAttribute()
{
return ($this->status ?? 0) ?
sprintf('', '启用') :
sprintf('', '禁用');
}
public function sites(): BelongsToMany
{
return $this->belongsToMany(
Site::class,
'user_has_sites',
'user_id',
'site_id'
);
}
public function permissions()
{
return $this->belongsToMany(
Permission::class,
'user_has_permissions',
'user_id',
'permission_id'
);
}
protected static $permissions; //静态缓存
public function hasAuth($auth): bool
{
if (!empty($this->is_super)) return true;
if (self::$permissions === null) {
$role = $this->role ?? null;
if (!$role) return false;
self::$permissions = $role->permissions->where('type', 2)->pluck('rule')->toArray();
}
if (in_array($auth, self::$permissions)) {
return true;
}
return false;
}
public function username()
{
return $this->username ?? '';
}
public static function getUserList()
{
$userList = User::query()->pluck('nickname', 'id')->toArray()??[];
return $userList;
}
}