From 01cff931bce280ac934c418321af384341758a41 Mon Sep 17 00:00:00 2001 From: "Fabian @ Blax Software" Date: Fri, 17 Apr 2026 11:03:02 +0200 Subject: [PATCH] feat: switch models to UUIDs and use MorphPivot for role/permission members --- src/Models/Access.php | 2 ++ src/Models/Permission.php | 3 ++- src/Models/PermissionMember.php | 7 ++++--- src/Models/PermissionUsage.php | 2 ++ src/Models/Role.php | 3 ++- src/Models/RoleMember.php | 7 ++++--- src/Traits/HasPermissions.php | 2 +- src/Traits/HasRoles.php | 3 ++- 8 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/Models/Access.php b/src/Models/Access.php index aeaba98..c9f7db7 100644 --- a/src/Models/Access.php +++ b/src/Models/Access.php @@ -2,10 +2,12 @@ namespace Blax\Roles\Models; +use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Model; class Access extends Model { + use HasUuids; protected $fillable = [ 'entity_id', 'entity_type', diff --git a/src/Models/Permission.php b/src/Models/Permission.php index 77fa921..bc28f55 100644 --- a/src/Models/Permission.php +++ b/src/Models/Permission.php @@ -3,11 +3,12 @@ namespace Blax\Roles\Models; use Blax\Roles\Traits\HasAccess; +use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Model; class Permission extends Model { - use HasAccess; + use HasAccess, HasUuids; protected $fillable = [ 'slug', 'description', diff --git a/src/Models/PermissionMember.php b/src/Models/PermissionMember.php index e96f484..95e3aba 100644 --- a/src/Models/PermissionMember.php +++ b/src/Models/PermissionMember.php @@ -3,11 +3,12 @@ namespace Blax\Roles\Models; use Blax\Roles\Traits\WillExpire; -use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Concerns\HasUuids; +use Illuminate\Database\Eloquent\Relations\MorphPivot; -class PermissionMember extends Model +class PermissionMember extends MorphPivot { - use WillExpire; + use HasUuids, WillExpire; protected $fillable = [ 'permission_id', diff --git a/src/Models/PermissionUsage.php b/src/Models/PermissionUsage.php index 14e8b1d..fc61336 100644 --- a/src/Models/PermissionUsage.php +++ b/src/Models/PermissionUsage.php @@ -2,10 +2,12 @@ namespace Blax\Roles\Models; +use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Model; class PermissionUsage extends Model { + use HasUuids; protected $fillable = [ 'permission_id', 'usage', diff --git a/src/Models/Role.php b/src/Models/Role.php index 9499387..cb06bce 100644 --- a/src/Models/Role.php +++ b/src/Models/Role.php @@ -3,11 +3,12 @@ namespace Blax\Roles\Models; use Blax\Roles\Traits\HasPermissions; +use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Model; class Role extends Model { - use HasPermissions; + use HasPermissions, HasUuids; protected $fillable = [ 'parent_id', diff --git a/src/Models/RoleMember.php b/src/Models/RoleMember.php index 016752c..355d8cc 100644 --- a/src/Models/RoleMember.php +++ b/src/Models/RoleMember.php @@ -3,11 +3,12 @@ namespace Blax\Roles\Models; use Blax\Roles\Traits\WillExpire; -use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Concerns\HasUuids; +use Illuminate\Database\Eloquent\Relations\MorphPivot; -class RoleMember extends Model +class RoleMember extends MorphPivot { - use WillExpire; + use HasUuids, WillExpire; protected $fillable = [ 'role_id', diff --git a/src/Traits/HasPermissions.php b/src/Traits/HasPermissions.php index b4c24fd..54236c9 100644 --- a/src/Traits/HasPermissions.php +++ b/src/Traits/HasPermissions.php @@ -93,7 +93,7 @@ trait HasPermissions config('roles.models.permission'), 'member', config('roles.table_names.permission_member', 'permission_members') - ); + )->using(config('roles.models.permission_member', \Blax\Roles\Models\PermissionMember::class)); } /** diff --git a/src/Traits/HasRoles.php b/src/Traits/HasRoles.php index b56bc58..f5af7ff 100644 --- a/src/Traits/HasRoles.php +++ b/src/Traits/HasRoles.php @@ -21,7 +21,8 @@ trait HasRoles config('roles.models.role', \Blax\Roles\Models\Role::class), 'member', $pivotTable - )->withPivot('expires_at', 'context', 'created_at', 'updated_at') + )->using(config('roles.models.role_member', \Blax\Roles\Models\RoleMember::class)) + ->withPivot('expires_at', 'context', 'created_at', 'updated_at') ->withTimestamps() ->where(function ($q) use ($pivotTable) { $q->where($pivotTable . '.expires_at', '>', now())