User access dan user role dinamis
This commit is contained in:
@@ -8,6 +8,10 @@ use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Laravel\Sanctum\HasApiTokens;
|
||||
use Spatie\Permission\Traits\HasRoles;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
@@ -29,6 +33,7 @@ class User extends Authenticatable
|
||||
'phone',
|
||||
'otp',
|
||||
'otp_created_at',
|
||||
'role_id'
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -53,13 +58,15 @@ class User extends Authenticatable
|
||||
|
||||
public $with = [
|
||||
'metas',
|
||||
'person'
|
||||
'person',
|
||||
'role',
|
||||
];
|
||||
|
||||
public $appends = [
|
||||
'meta',
|
||||
'avatar_url',
|
||||
'full_name'
|
||||
'full_name',
|
||||
'permissions'
|
||||
];
|
||||
|
||||
public function getAvatarUrlAttribute()
|
||||
@@ -82,6 +89,24 @@ class User extends Authenticatable
|
||||
return (object) $orgMeta;
|
||||
}
|
||||
|
||||
public function getPermissionsAttribute()
|
||||
{
|
||||
$roleId = $this->role_id;
|
||||
|
||||
if (!$roleId) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// Ambil permissions dari role_has_permissions dan permissions tabel
|
||||
$permissions = DB::table('role_has_permissions')
|
||||
->join('permissions', 'role_has_permissions.permission_id', '=', 'permissions.id')
|
||||
->where('role_has_permissions.role_id', $roleId)
|
||||
->select('permissions.id', 'permissions.name', 'permissions.guard_name', 'permissions.path')
|
||||
->get();
|
||||
|
||||
return $permissions;
|
||||
}
|
||||
|
||||
public function managedCorporates()
|
||||
{
|
||||
return $this->belongsToMany(Corporate::class, 'corporate_manager', 'user_id', 'corporate_id');
|
||||
@@ -97,7 +122,12 @@ class User extends Authenticatable
|
||||
return $this->belongsTo(Person::class, 'person_id');
|
||||
}
|
||||
|
||||
public function ownedPersons()
|
||||
public function role()
|
||||
{
|
||||
return $this->belongsTo(Role::class, 'role_id');
|
||||
}
|
||||
|
||||
public function ownedPersons()
|
||||
{
|
||||
return $this->hasMany(Person::class, 'owner_user_id');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user