Files
onboard/app/Http/Controllers/AuthController.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 Inertia::location(route('start'));
}
}