feat: api users change password endpoint

This commit is contained in:
2025-12-30 10:55:46 +00:00
parent 3d23627433
commit 54b4fc7cb1
4 changed files with 48 additions and 2 deletions
@@ -127,6 +127,28 @@ class UserController extends Controller
return response()->json($user); 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} * DELETE /api/users/{user}
* Apagar conta (Soft Delete) * Apagar conta (Soft Delete)
+2 -1
View File
@@ -4,8 +4,8 @@ use App\Http\Controllers\AuthController;
use App\Http\Controllers\GameController; use App\Http\Controllers\GameController;
use App\Http\Controllers\MatchController; use App\Http\Controllers\MatchController;
use App\Http\Controllers\ProfileController; use App\Http\Controllers\ProfileController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\StatisticsController; use App\Http\Controllers\StatisticsController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::prefix('v1')->group(function () { Route::prefix('v1')->group(function () {
@@ -23,6 +23,7 @@ Route::prefix('v1')->group(function () {
Route::prefix('users/me')->group(function () { Route::prefix('users/me')->group(function () {
Route::get('/', [ProfileController::class, 'show']); Route::get('/', [ProfileController::class, 'show']);
Route::put('/', [ProfileController::class, 'update']); Route::put('/', [ProfileController::class, 'update']);
Route::patch('/password', [ProfileController::class, 'updatePassword']);
Route::delete('/', [ProfileController::class, 'destroy']); Route::delete('/', [ProfileController::class, 'destroy']);
Route::get('/coins', [ProfileController::class, 'getCoins']); Route::get('/coins', [ProfileController::class, 'getCoins']);
Route::put('/password', [ Route::put('/password', [
+1 -1
View File
@@ -12,7 +12,7 @@ post {
body:json { body:json {
{ {
"email":"a1@mail.pt", "email":"p[email protected]",
"password":"123" "password":"123"
} }
} }
+23
View File
@@ -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"
}
}