Jelajahi Sumber

feat: :sparkles: nova rota /me de usuarios e ajustes para linguagem

Denis 1 tahun lalu
induk
melakukan
4aa8a8fd61

+ 6 - 0
app/Http/Controllers/UserController.php

@@ -19,6 +19,12 @@ public function __construct(
     ) {
     }
 
+    public function me(): JsonResponse
+    {
+        $user = $this->userService->me();
+        return $this->successResponse(payload: new UserResource($user));
+    }
+
     public function index(): JsonResponse
     {
         $users = $this->userService->all();

+ 1 - 1
app/Http/Middleware/SetUserLanguage.php

@@ -19,7 +19,7 @@ class SetUserLanguage
      */
     public function handle(Request $request, Closure $next): Response
     {
-        $language = substr($request->header('language'), 0, 2);
+        $language = substr($request->header('Accept-Language'), 0, 2);
         try {
             $language = UserLanguageDto::fromString($language)->language;
             App::setLocale($language);

+ 1 - 0
app/Http/Resources/AuthResource.php

@@ -20,6 +20,7 @@ public function toArray(Request $request): array
             'token_type' => 'Bearer',
             'expires_in' => 900, // 15 minutes
             'refresh_token_expires_in' => 2592000, // 30 days
+            'user' => new UserResource($this['user']),
         ];
     }
 }

+ 1 - 0
app/Http/Resources/UserResource.php

@@ -18,6 +18,7 @@ public function toArray(Request $request): array
             'id' => $this->id,
             'name' => $this->name,
             'email' => $this->email,
+            'language' => $this->language,
             'created_at' => $this->created_at,
             'updated_at' => $this->updated_at,
         ];

+ 6 - 0
app/Repositories/UserRepository.php

@@ -7,9 +7,15 @@
 use App\DataTransferObjects\UserDto;
 use App\DataTransferObjects\UserLanguageDto;
 use App\Enums\UserTypeSource;
+use Illuminate\Support\Facades\Auth;
 
 class UserRepository implements UserRepositoryInterface
 {
+    public function me(): ?User
+    {
+        return Auth::user();
+    }
+
     public function all(): ?Collection
     {
         return User::all();

+ 2 - 0
app/Repositories/UserRepositoryInterface.php

@@ -9,6 +9,8 @@
 
 interface UserRepositoryInterface
 {
+    public function me(): ?User;
+
     public function all(): ?Collection;
 
     public function store(UserDto $userDto): User;

+ 2 - 2
app/Services/AuthService.php

@@ -31,7 +31,7 @@ public function login(AuthDto $credentials): ?array
         $accessToken = $user->createToken('access_token', ['access'], Carbon::now()->addMinutes(15))->plainTextToken;
         $refreshToken = $user->createToken('refresh_token', ['refresh'], Carbon::now()->addDays(30))->plainTextToken;
 
-        return ['access_token' => $accessToken, 'refresh_token' => $refreshToken];
+        return ['access_token' => $accessToken, 'refresh_token' => $refreshToken, 'user' => $user];
     }
 
     public function refresh(RefreshTokenDto $refreshToken): ?array
@@ -51,7 +51,7 @@ public function refresh(RefreshTokenDto $refreshToken): ?array
         $accessToken = $user->createToken('access_token', ['access'], Carbon::now()->addMinutes(15))->plainTextToken;
         $refreshToken = $user->createToken('refresh_token', ['refresh'], Carbon::now()->addDays(30))->plainTextToken;
 
-        return ['access_token' => $accessToken, 'refresh_token' => $refreshToken];
+        return ['access_token' => $accessToken, 'refresh_token' => $refreshToken, 'user' => $user];
     }
 
     public function logout(): void

+ 5 - 0
app/Services/UserService.php

@@ -15,6 +15,11 @@ public function __construct(
     ) {
     }
 
+    public function me(): ?User
+    {
+        return $this->userRepository->me();
+    }
+
     public function all(): ?Collection
     {
         return $this->userRepository->all();

+ 0 - 1
database/migrations/0001_01_01_000000_create_users_table.php

@@ -19,7 +19,6 @@ public function up(): void
             $table->string('password');
             $table->string('type')->default('guest');
             $table->string('language')->default('pt');
-            $table->rememberToken();
             $table->timestamps();
         });
 

+ 2 - 0
routes/authRoutes/user.php

@@ -3,6 +3,8 @@
 use Illuminate\Support\Facades\Route;
 use App\Http\Controllers\UserController;
 
+Route::get('/user/me', [UserController::class, 'me']);
+
 Route::get('/user', [UserController::class, 'index'])->middleware('permission:config.user,view');
 
 Route::post('/user', [UserController::class, 'store'])->middleware('permission:config.user,add');