Files
2025-08-27 09:17:56 +02:00

92 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
class AuthController extends Controller
{
/**
* Login user and create token
*/
public function login(Request $request): JsonResponse
{
try {
$validated = $request->validate([
'email' => 'required|email',
'password' => 'required|string',
], [
'email.required' => 'E-mail is verplicht',
'email.email' => 'E-mail moet een geldig e-mailadres zijn',
'password.required' => 'Wachtwoord is verplicht',
]);
if (!Auth::attempt($validated)) {
throw ValidationException::withMessages([
'email' => ['De opgegeven gegevens zijn onjuist.'],
]);
}
$user = User::where('email', $validated['email'])->first();
$token = $user->createToken('auth-token')->plainTextToken;
return response()->json([
'message' => 'Succesvol ingelogd',
'user' => $user,
'token' => $token,
]);
} catch (ValidationException $e) {
return response()->json([
'message' => 'Validatie mislukt',
'errors' => $e->errors()
], 422);
} catch (\Exception $e) {
return response()->json([
'message' => 'Inloggen mislukt',
'error' => $e->getMessage()
], 500);
}
}
/**
* Logout user and revoke token
*/
public function logout(Request $request): JsonResponse
{
try {
$request->user()->currentAccessToken()->delete();
return response()->json([
'message' => 'Succesvol uitgelogd'
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Uitloggen mislukt',
'error' => $e->getMessage()
], 500);
}
}
/**
* Get authenticated user
*/
public function user(Request $request): JsonResponse
{
try {
return response()->json([
'user' => $request->user()
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Gebruiker ophalen mislukt',
'error' => $e->getMessage()
], 500);
}
}
}