57 lines
1.5 KiB
PHP
57 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
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 redirect()->intended(route('dashboard'));
|
|
}
|
|
}
|