65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\User\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\User;
|
|
use App\Traits\ApiResponse;
|
|
use App\User\Requests\Auth\LoginRequest;
|
|
use App\User\Requests\Auth\RegisterRequest;
|
|
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
|
|
{
|
|
$user = User::query()->create([
|
|
'username' => $request->username,
|
|
'email' => $request->email,
|
|
'password' => Hash::make($request->password),
|
|
]);
|
|
|
|
Auth::guard('web')->login($user);
|
|
|
|
$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('web')->logout();
|
|
|
|
$request->session()->invalidate();
|
|
|
|
$request->session()->regenerateToken();
|
|
|
|
return $this->successResponse();
|
|
}
|
|
}
|