54 lines
1.2 KiB
PHP
54 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace app\admin\model;
|
|
|
|
use support\Model;
|
|
class Admin extends Model
|
|
{
|
|
protected $table = 'admins';
|
|
protected $hidden = ['password'];
|
|
|
|
public function roles()
|
|
{
|
|
return $this->belongsToMany(Role::class, 'admin_roles', 'user_id', 'role_id');
|
|
}
|
|
|
|
public function hasRole($role)
|
|
{
|
|
return $this->roles()->where('name', $role)->exists();
|
|
}
|
|
|
|
public function getJWTIdentifier()
|
|
{
|
|
return $this->getKey();
|
|
}
|
|
|
|
public function getJWTCustomClaims()
|
|
{
|
|
return [];
|
|
}
|
|
|
|
public function hasAnyRole($roles)
|
|
{
|
|
return $this->roles()->whereIn('name', (array)$roles)->exists();
|
|
}
|
|
|
|
public function hasPermission($permission)
|
|
{
|
|
return $this->permissions()->contains('slug', $permission);
|
|
}
|
|
public function isPermission($permission)
|
|
{
|
|
$permissions = $this->permissions();
|
|
return in_array($permission, array_column($permissions->toArray(), 'slug'));
|
|
}
|
|
public function permissions()
|
|
{
|
|
return $this->roles()
|
|
->with('permissions')
|
|
->get()
|
|
->pluck('permissions')
|
|
->flatten()
|
|
->unique('id');
|
|
}
|
|
} |