diff --git a/api/app/Http/Controllers/UserController.php b/api/app/Http/Controllers/UserController.php index 7825179..46f6490 100644 --- a/api/app/Http/Controllers/UserController.php +++ b/api/app/Http/Controllers/UserController.php @@ -127,6 +127,28 @@ class UserController extends Controller return response()->json($user); } + + public function updatePassword(Request $request, User $user) + { + $this->authorize('update', $user); + + $validated = $request->validate([ + 'current_password' => 'required|string', + 'new_password' => 'required|string|min:3|confirmed', + ]); + + // Verificar se a password atual está correta + if (!Hash::check($validated['current_password'], $user->password)) { + return response()->json(['message' => 'Current password is incorrect'], 403); + } + + // Atualizar para a nova password + $user->password = Hash::make($validated['new_password']); + $user->save(); + + return response()->json(['message' => 'Password updated successfully']); + } + /** * DELETE /api/users/{user} * Apagar conta (Soft Delete) diff --git a/api/routes/api.php b/api/routes/api.php index b4991af..02bbaff 100644 --- a/api/routes/api.php +++ b/api/routes/api.php @@ -4,8 +4,8 @@ use App\Http\Controllers\AuthController; use App\Http\Controllers\GameController; use App\Http\Controllers\MatchController; use App\Http\Controllers\ProfileController; -use App\Http\Controllers\UserController; use App\Http\Controllers\StatisticsController; +use App\Http\Controllers\UserController; use Illuminate\Support\Facades\Route; Route::prefix('v1')->group(function () { @@ -23,6 +23,7 @@ Route::prefix('v1')->group(function () { Route::prefix('users/me')->group(function () { Route::get('/', [ProfileController::class, 'show']); Route::put('/', [ProfileController::class, 'update']); + Route::patch('/password', [ProfileController::class, 'updatePassword']); Route::delete('/', [ProfileController::class, 'destroy']); Route::get('/coins', [ProfileController::class, 'getCoins']); Route::put('/password', [ diff --git a/bruno_collection/Auth/Login.bru b/bruno_collection/Auth/Login.bru index 3f1d35a..92f0f18 100644 --- a/bruno_collection/Auth/Login.bru +++ b/bruno_collection/Auth/Login.bru @@ -12,7 +12,7 @@ post { body:json { { - "email":"a1@mail.pt", + "email":"pa@mail.pt", "password":"123" } } diff --git a/bruno_collection/Auth/Patch Password.bru b/bruno_collection/Auth/Patch Password.bru new file mode 100644 index 0000000..dbdff1a --- /dev/null +++ b/bruno_collection/Auth/Patch Password.bru @@ -0,0 +1,23 @@ +meta { + name: Patch Password + type: http + seq: 3 +} + +patch { + url: {{api_url}}/users/me + body: json + auth: none +} + +headers { + Accept: application/json + Authorization: Bearer {{token}} +} + +body:json { + { + "current_password":"123", + "new_password": "456" + } +}