Files
backend/backend/app/Admin/Controllers/AuthController.php

63 lines
1.6 KiB
PHP

<?php
namespace App\Admin\Controllers;
use App\Admin\Requests\Auth\LoginRequest;
use App\Admin\Requests\Auth\RegisterRequest;
use App\Http\Controllers\Controller;
use App\Models\Expert;
use App\Traits\ApiResponse;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
use ApiResponse;
public function register(RegisterRequest $request): JsonResponse
{
Expert::query()->create([
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$request->session()->regenerate();
return $this->successResponse();
}
public function login(LoginRequest $request): JsonResponse
{
$credentials = ['password' => $request->password];
if (filter_var($request->login, FILTER_VALIDATE_EMAIL)) {
$credentials['email'] = $request->login;
} else {
$credentials['username'] = $request->login;
}
if (Auth::attempt($credentials))
{
$request->session()->regenerate();
return $this->successResponse();
}
return $this->errorResponse(__('messages.incorrect_or_username_password'));
}
public function logout(Request $request): JsonResponse
{
Auth::guard('expert')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return $this->successResponse();
}
}