Профиль хирургии

This commit is contained in:
brusnitsyn
2026-03-25 17:37:32 +09:00
parent 52a80ccd3b
commit f566ab96df
75 changed files with 3841 additions and 1009 deletions

View File

@@ -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;