some progress
This commit is contained in:
@@ -52,4 +52,69 @@ class User extends Authenticatable
|
||||
{
|
||||
return $this->belongsToMany(MediaList::class, 'user_media_lists', 'user_id', 'media_list_id');
|
||||
}
|
||||
|
||||
public function roles()
|
||||
{
|
||||
return $this->belongsToMany(Role::class, 'role_user');
|
||||
}
|
||||
|
||||
public function permissions()
|
||||
{
|
||||
return $this->belongsToMany(Permission::class, 'permission_user');
|
||||
}
|
||||
|
||||
public function hasRole($role)
|
||||
{
|
||||
if (is_string($role)) {
|
||||
return $this->roles->contains('slug', $role);
|
||||
}
|
||||
|
||||
return $this->roles->contains('id', $role->id);
|
||||
}
|
||||
|
||||
public function hasPermission($permission)
|
||||
{
|
||||
if (is_string($permission)) {
|
||||
// Check direct permissions
|
||||
if ($this->permissions->contains('slug', $permission)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check role permissions
|
||||
foreach ($this->roles as $role) {
|
||||
if ($role->hasPermission($permission)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->permissions->contains('id', $permission->id);
|
||||
}
|
||||
|
||||
public function hasAnyRole($roles)
|
||||
{
|
||||
if (is_string($roles)) {
|
||||
return $this->roles->contains('slug', $roles);
|
||||
}
|
||||
|
||||
foreach ($roles as $role) {
|
||||
if ($this->hasRole($role)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function assignRole($role)
|
||||
{
|
||||
return $this->roles()->save($role);
|
||||
}
|
||||
|
||||
public function givePermissionTo($permission)
|
||||
{
|
||||
return $this->permissions()->save($permission);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user