update deploy
This commit is contained in:
118
app/Http/Controllers/Api/Admin/AuthController.php
Normal file
118
app/Http/Controllers/Api/Admin/AuthController.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Auth\LoginRequest;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use OpenApi\Attributes as OA;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
#[OA\Post(
|
||||
path: '/api/admin/login',
|
||||
summary: 'Admin girişi',
|
||||
description: 'E-posta ve şifre ile giriş yaparak Sanctum token alır.',
|
||||
tags: ['Auth'],
|
||||
requestBody: new OA\RequestBody(
|
||||
required: true,
|
||||
content: new OA\JsonContent(
|
||||
required: ['email', 'password'],
|
||||
properties: [
|
||||
new OA\Property(property: 'email', type: 'string', format: 'email', example: 'admin@bogazicidenizcilik.com.tr'),
|
||||
new OA\Property(property: 'password', type: 'string', format: 'password', example: 'password'),
|
||||
],
|
||||
),
|
||||
),
|
||||
responses: [
|
||||
new OA\Response(response: 200, description: 'Başarılı giriş', content: new OA\JsonContent(
|
||||
properties: [
|
||||
new OA\Property(property: 'data', type: 'object', properties: [
|
||||
new OA\Property(property: 'token', type: 'string'),
|
||||
new OA\Property(property: 'user', type: 'object'),
|
||||
]),
|
||||
],
|
||||
)),
|
||||
new OA\Response(response: 401, description: 'Geçersiz kimlik bilgileri'),
|
||||
new OA\Response(response: 422, description: 'Validasyon hatası'),
|
||||
],
|
||||
)]
|
||||
public function login(LoginRequest $request): JsonResponse
|
||||
{
|
||||
if (! Auth::attempt($request->only('email', 'password'))) {
|
||||
return response()->json([
|
||||
'message' => 'Geçersiz e-posta veya şifre.',
|
||||
], 401);
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
$user = Auth::user();
|
||||
|
||||
$token = $user->createToken('admin-token')->plainTextToken;
|
||||
|
||||
return response()->json([
|
||||
'data' => [
|
||||
'token' => $token,
|
||||
'user' => [
|
||||
'id' => $user->id,
|
||||
'name' => $user->name,
|
||||
'email' => $user->email,
|
||||
'roles' => $user->getRoleNames(),
|
||||
'permissions' => $user->getAllPermissions()->pluck('name'),
|
||||
],
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
#[OA\Get(
|
||||
path: '/api/admin/me',
|
||||
summary: 'Mevcut kullanıcı bilgileri',
|
||||
description: 'Oturum açmış kullanıcının bilgilerini, rollerini ve izinlerini döndürür.',
|
||||
security: [['sanctum' => []]],
|
||||
tags: ['Auth'],
|
||||
responses: [
|
||||
new OA\Response(response: 200, description: 'Kullanıcı bilgileri'),
|
||||
new OA\Response(response: 401, description: 'Yetkisiz erişim'),
|
||||
],
|
||||
)]
|
||||
public function me(Request $request): JsonResponse
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = $request->user();
|
||||
|
||||
return response()->json([
|
||||
'data' => [
|
||||
'id' => $user->id,
|
||||
'name' => $user->name,
|
||||
'email' => $user->email,
|
||||
'roles' => $user->getRoleNames(),
|
||||
'permissions' => $user->getAllPermissions()->pluck('name'),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
#[OA\Post(
|
||||
path: '/api/admin/logout',
|
||||
summary: 'Çıkış yap',
|
||||
description: 'Mevcut token\'ı iptal eder.',
|
||||
security: [['sanctum' => []]],
|
||||
tags: ['Auth'],
|
||||
responses: [
|
||||
new OA\Response(response: 200, description: 'Başarıyla çıkış yapıldı'),
|
||||
new OA\Response(response: 401, description: 'Yetkisiz erişim'),
|
||||
],
|
||||
)]
|
||||
public function logout(Request $request): JsonResponse
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = $request->user();
|
||||
$user->currentAccessToken()->delete();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Başarıyla çıkış yapıldı.',
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user