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

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

@@ -5,8 +5,10 @@ namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Inertia\Inertia;
class AuthController extends Controller
@@ -16,39 +18,41 @@ class AuthController extends Controller
$validator = Validator::make($request->all(), [
'login' => 'required',
'password' => 'required',
'remember' => 'boolean'
]);
$login = Str::lower($request->login);
$password = $request->password;
if ($validator->fails()) {
return response()->json([
'success' => false,
'errors' => $validator->errors()
], 422);
return back()->withErrors([
$validator->errors()
]);
}
$credentials = $request->only('login', 'password');
$credentials = [
'login' => $login,
'password' => $password,
];
if (!Auth::attempt($credentials, $request->remember)) {
return response()->json([
'success' => false,
'message' => 'Неверный login или пароль'
], 401);
if (!Auth::attempt($credentials)) {
return back()->withErrors([
'Неверный логин или пароль'
]);
}
$user = User::where('login', $request->login)->first();
$user = User::where('login', $login)->first();
if (!$user->is_active) {
Auth::logout();
return response()->json([
'success' => false,
'message' => 'Учетная запись отключена'
], 403);
return back()->withErrors([
'Учетная запись отключена'
]);
}
$request->session()->regenerate();
$deviceName = 'web-' . ($request->header('User-Agent') ?: 'browser');
$token = $user->createToken($deviceName)->plainTextToken;
$tokenName = $request->session()->getId();
$token = $user->createToken($tokenName, ['*'], now()->addYears(5))->plainTextToken;
$request->session()->put('token', $token);
@@ -65,11 +69,42 @@ class AuthController extends Controller
'role_id' => 'required|integer|exists:roles,role_id'
]);
$sessionKey = 'user_' . $user->id . '_current_role';
$sessionId = session()->getId();
$user->current_role_id = $data['role_id'];
$user->save();
$token = $user->tokens()->where('name', $sessionId)->first();
if ($token) {
$token->abilities = ['role:' . $request->role_id];
$token->save();
}
DB::table('sessions')
->where('id', $sessionId)
->update(['role_id' => $request->role_id]);
// $sessionKey = 'user_' . $user->id . '_current_role';
//
// $user->current_role_id = $data['role_id'];
// $user->save();
return redirect()->route('start')->setStatusCode(302);
}
public function logout(Request $request)
{
$user = Auth::user();
if ($user) {
$tokenName = $request->session()->getId();
// Удаляем все токены пользователя
$user->tokens()->where('name', $tokenName)->delete();
// Очищаем сессию
$request->session()->invalidate();
$request->session()->regenerateToken();
}
return redirect()->route('login');
}
}