some progress

This commit is contained in:
Doar Mihai
2026-03-07 13:29:50 +02:00
parent bf5c92c239
commit 72c2cd9485
15 changed files with 460 additions and 42 deletions
+65
View File
@@ -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);
}
}