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;
|
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
|
|
|
|
|
{
|
2026-02-23 10:16:27 +00:00
|
|
|
use HasAccess;
|
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'),
|
2025-06-19 11:36:10 +00:00
|
|
|
'member',
|
2026-02-10 14:22:26 +00:00
|
|
|
config('roles.table_names.permission_member', 'permission_members'),
|
2025-06-19 11:36:10 +00:00
|
|
|
'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
|
|
|
}
|