Skip to content

Commit

Permalink
feat: reset password
Browse files Browse the repository at this point in the history
  • Loading branch information
amrron committed Oct 26, 2024
1 parent 6f6838d commit 2801917
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 0 deletions.
41 changes: 41 additions & 0 deletions app/Http/Controllers/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
use App\Http\Requests\LoginRequest;
use App\Http\Resources\UserResource;
use App\Http\Requests\RegisterRequest;
use App\Http\Requests\ResetPasswordRequest;
use App\Http\Resources\SummaryResource;
use Illuminate\Support\Facades\Storage;
use App\Http\Requests\UserUpdateRequest;
use App\Http\Requests\UpdateProfileImageRequest;
use App\Notifications\EmailVerificationNotification;
use Illuminate\Support\Facades\Hash;

class UserController extends Controller
{
Expand Down Expand Up @@ -240,4 +242,43 @@ public function removeImage() {
], 501);
}
}

public function resetPassword(ResetPasswordRequest $request) {
$user = auth()->user();
$request->validated();

try {
DB::beginTransaction();

if (!Hash::check($request->current_password, $user->password)) {
return response()->json([
'success' => false,
'status' => 'error',
'message' => 'Password lama salah',
], 401);
}

$user->password = Hash::make($request->new_password);
$user->save();

DB::commit();

return response()->json([
'success' => true,
'status' => 'success',
'message' => 'Berhasil mereset password',
'data' => new UserResource($user)
]);

} catch (\Throwable $th) {
DB::rollBack();

return response()->json([
'success' => false,
'status' => 'error',
'message' => 'Gagal mereset password',
'error' => $th->getMessage()
], 501);
}
}
}
40 changes: 40 additions & 0 deletions app/Http/Requests/ResetPasswordRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;

class ResetPasswordRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'current_password' => 'required',
'new_password' => 'required|min:8|confirmed',
];
}

public function failedValidation(Validator $validator){
throw new HttpResponseException(response([
'success' => false,
'status' => 'error',
'message' => 'Validasi error',
'error' => $validator->getMessageBag()
], 400));
}
}
1 change: 1 addition & 0 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
Route::middleware(['auth:sanctum', 'email_verified'])->group(function(){
Route::controller(UserController::class)->group(function(){
Route::put('/user', 'update');
Route::put('/user/password', 'resetPassword');
Route::post('/user/image', 'updateImage');
Route::get('/user/summary', 'summary');
Route::delete('/user/image', 'removeImage');
Expand Down

0 comments on commit 2801917

Please sign in to comment.