laravel-roles/src/Models/Permission.php

48 lines
1.1 KiB
PHP
Raw Normal View History

2025-06-15 09:56:28 +00:00
<?php
namespace Blax\Roles\Models;
2026-02-23 10:16:27 +00:00
use Blax\Roles\Traits\HasAccess;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
2025-06-15 09:56:28 +00:00
use Illuminate\Database\Eloquent\Model;
2025-06-16 07:49:36 +00:00
class Permission extends Model
{
use HasAccess, HasUuids;
2025-06-15 16:29:50 +00:00
protected $fillable = [
'slug',
'description',
];
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
2025-06-16 05:37:35 +00:00
$this->table = config('roles.table_names.permissions') ?: parent::getTable();
2025-06-15 16:29:50 +00:00
}
public function usages()
{
2026-02-10 14:22:26 +00:00
return $this->hasMany(config('roles.models.permission_usage'));
2025-06-15 16:29:50 +00:00
}
2026-02-10 14:22:26 +00:00
/**
* Get all roles that have this permission (via permission_members where member_type is Role).
*/
2025-06-15 16:29:50 +00:00
public function roles()
{
2026-02-10 14:22:26 +00:00
return $this->morphedByMany(
config('roles.models.role'),
'member',
2026-02-10 14:22:26 +00:00
config('roles.table_names.permission_member', 'permission_members'),
'permission_id',
'member_id'
2026-02-10 14:22:26 +00:00
);
2025-06-15 16:29:50 +00:00
}
2025-06-16 07:49:36 +00:00
public function members()
{
2026-02-10 14:22:26 +00:00
return $this->hasMany(config('roles.models.permission_member'), 'permission_id');
2025-06-16 07:49:36 +00:00
}
2025-06-15 16:29:50 +00:00
}