initial commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1\Supervisor;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Concerns\RespondsWithJson;
|
||||
use App\Http\Requests\Api\V1\Supervisor\LoginRequest;
|
||||
use App\Http\Resources\SupervisorResource;
|
||||
use App\Models\Supervisor;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
use RespondsWithJson;
|
||||
|
||||
public function login(LoginRequest $request): JsonResponse
|
||||
{
|
||||
$supervisor = Supervisor::query()
|
||||
->where('email', $request->string('email')->toString())
|
||||
->first();
|
||||
|
||||
if ($supervisor === null || ! Hash::check($request->string('password')->toString(), $supervisor->password)) {
|
||||
return $this->error('Identifiants invalides.', 401);
|
||||
}
|
||||
|
||||
if (! $supervisor->is_active) {
|
||||
return $this->error('Compte superviseur désactivé.', 403);
|
||||
}
|
||||
|
||||
$supervisor->update(['last_login_at' => now()]);
|
||||
|
||||
$deviceName = $request->input('device_name', 'backoffice');
|
||||
$accessMinutes = (int) config('laverie.auth.access_token_ttl_minutes', 60);
|
||||
$refreshDays = (int) config('laverie.auth.refresh_token_ttl_days', 30);
|
||||
|
||||
$accessToken = $supervisor->createToken(
|
||||
"{$deviceName}-access",
|
||||
['supervisor', 'access'],
|
||||
now()->addMinutes($accessMinutes),
|
||||
);
|
||||
|
||||
$refreshToken = $supervisor->createToken(
|
||||
"{$deviceName}-refresh",
|
||||
['supervisor', 'refresh'],
|
||||
now()->addDays($refreshDays),
|
||||
);
|
||||
|
||||
Auth::guard('supervisor')->login($supervisor);
|
||||
|
||||
return $this->success([
|
||||
'supervisor' => new SupervisorResource($supervisor),
|
||||
'access_token' => $accessToken->plainTextToken,
|
||||
'refresh_token' => $refreshToken->plainTextToken,
|
||||
'token_type' => 'Bearer',
|
||||
'expires_in' => $accessMinutes * 60,
|
||||
], 'Connexion superviseur réussie.');
|
||||
}
|
||||
|
||||
public function logout(Request $request): JsonResponse
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
if ($user instanceof Supervisor) {
|
||||
$user->currentAccessToken()?->delete();
|
||||
}
|
||||
|
||||
Auth::guard('supervisor')->logout();
|
||||
|
||||
return $this->success(message: 'Déconnexion superviseur réussie.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user