* добавлена выборка и подсчет по датам для роли зав. * переключатель ролей * выбор отделений для роли зав.
76 lines
2.0 KiB
PHP
76 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Redis;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Inertia\Inertia;
|
|
|
|
class AuthController extends Controller
|
|
{
|
|
public function login(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'login' => 'required',
|
|
'password' => 'required',
|
|
'remember' => 'boolean'
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'errors' => $validator->errors()
|
|
], 422);
|
|
}
|
|
|
|
$credentials = $request->only('login', 'password');
|
|
|
|
if (!Auth::attempt($credentials, $request->remember)) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Неверный login или пароль'
|
|
], 401);
|
|
}
|
|
|
|
$user = User::where('login', $request->login)->first();
|
|
|
|
if (!$user->is_active) {
|
|
Auth::logout();
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Учетная запись отключена'
|
|
], 403);
|
|
}
|
|
|
|
$request->session()->regenerate();
|
|
|
|
$deviceName = 'web-' . ($request->header('User-Agent') ?: 'browser');
|
|
$token = $user->createToken($deviceName)->plainTextToken;
|
|
|
|
$request->session()->put('token', $token);
|
|
|
|
return Inertia::location(route('start'));
|
|
}
|
|
|
|
public function changeRole(Request $request)
|
|
{
|
|
$user = Auth::user();
|
|
|
|
if (!$user) return null;
|
|
|
|
$data = $request->validate([
|
|
'role_id' => 'required|integer|exists:roles,role_id'
|
|
]);
|
|
|
|
$sessionKey = 'user_' . $user->id . '_current_role';
|
|
|
|
$user->current_role_id = $data['role_id'];
|
|
$user->save();
|
|
|
|
return redirect()->route('start')->setStatusCode(302);
|
|
}
|
|
}
|