Профиль хирургии
This commit is contained in:
@@ -10,6 +10,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Laravel\Sanctum\HasApiTokens;
|
||||
|
||||
class User extends Authenticatable
|
||||
@@ -61,7 +63,7 @@ class User extends Authenticatable
|
||||
|
||||
public function departments()
|
||||
{
|
||||
return $this->hasMany(UserDepartment::class, 'rf_user_id', 'id');
|
||||
return $this->hasMany(UserDepartment::class, 'rf_user_id', 'id')->orderBy('order');
|
||||
}
|
||||
|
||||
public function favoriteDepartment()
|
||||
@@ -89,9 +91,37 @@ class User extends Authenticatable
|
||||
public function currentRole()
|
||||
{
|
||||
$defaultRoleId = $this->roles()->where('is_default', true)->first()->role_id;
|
||||
$sessionKey = 'user_' . $this->id . '_current_role';
|
||||
$roleId = $this->current_role_id ?? $defaultRoleId;
|
||||
|
||||
if (app()->runningInConsole()) {
|
||||
// Код выполняется в CLI (команда artisan, тесты и т.д.)
|
||||
return Role::where('role_id', $defaultRoleId)->first();
|
||||
}
|
||||
|
||||
$sessionId = session()->getId();
|
||||
$token = Auth::user()->currentAccessToken();
|
||||
// $sessionKey = 'user_' . $this->id . '_current_role';
|
||||
// $roleId = $this->current_role_id ?? $defaultRoleId;
|
||||
//
|
||||
// $role = Role::where('role_id', $roleId)->first();
|
||||
|
||||
if ($token) {
|
||||
foreach ($token->abilities as $ability) {
|
||||
if (str_starts_with($ability, 'role:')) {
|
||||
$apiRoleId = (int) str_replace('role:', '', $ability);
|
||||
$roleId = $apiRoleId ?? $defaultRoleId;
|
||||
$role = Role::where('role_id', $roleId)->first();
|
||||
|
||||
if ($role) {
|
||||
return $role;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sessionRoleId = DB::table('sessions')->where('id', $sessionId)->value('role_id');
|
||||
|
||||
$roleId = $sessionRoleId ?? $defaultRoleId;
|
||||
// dd($sessionId);
|
||||
$role = Role::where('role_id', $roleId)->first();
|
||||
|
||||
return $role;
|
||||
|
||||
Reference in New Issue
Block a user