diff --git a/API/JWT/app/Http/Controllers/API/Auth/Password/NotificationPasswordController.php b/API/JWT/app/Http/Controllers/API/Auth/Password/NotificationPasswordController.php new file mode 100644 index 0000000..3853fbb --- /dev/null +++ b/API/JWT/app/Http/Controllers/API/Auth/Password/NotificationPasswordController.php @@ -0,0 +1,37 @@ +only('email') + ); + if ($status === Password::ResetLinkSent) { + return response()->json([ + 'status' => 1, + 'message' => "We’ve emailed you the password reset link. Please check your inbox!", + ], 200); + } else { + return response()->json([ + 'status' => 0, + 'message' => "We can’t find a user with that email address.", + ], 200); + } + } catch (\Exception $e) { + return response()->json([ + 'status' => 0, + 'error' => 'We couldn’t send the password reset email due to an error. Please try again later.', + 'message' => $e->getMessage(), + ], 500); + } + } +} diff --git a/API/JWT/app/Http/Controllers/API/Auth/Password/ResetPasswordController.php b/API/JWT/app/Http/Controllers/API/Auth/Password/ResetPasswordController.php new file mode 100644 index 0000000..21c9860 --- /dev/null +++ b/API/JWT/app/Http/Controllers/API/Auth/Password/ResetPasswordController.php @@ -0,0 +1,48 @@ +only('email', 'password', 'password_confirmation', 'token'), + function (User $user, string $password) { + $user->forceFill([ + 'password' => Hash::make($password) + ])->setRememberToken(Str::random(60)); + $user->save(); + event(new PasswordReset($user)); + } + ); + if ($status === Password::PasswordReset) { + return response()->json([ + 'status' => 1, + 'message' => 'Your password has been reset!' + ]); + } else { + return response()->json([ + 'status' => 1, + 'message' => 'This password reset token is invalid.' + ]); + } + } catch (\Exception $e) { + return response()->json([ + 'status' => 0, + 'error' => 'We couldn’t process the request due to an error. Please try again later.', + 'message' => $e->getMessage(), + ], 500); + } + } +} diff --git a/API/JWT/app/Http/Requests/NotificationPasswordRequest.php b/API/JWT/app/Http/Requests/NotificationPasswordRequest.php new file mode 100644 index 0000000..b56b9e4 --- /dev/null +++ b/API/JWT/app/Http/Requests/NotificationPasswordRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + "email" => "required|email|exists:users,email", + ]; + } +} diff --git a/API/JWT/app/Http/Requests/ResetPasswordRequest.php b/API/JWT/app/Http/Requests/ResetPasswordRequest.php new file mode 100644 index 0000000..fc47663 --- /dev/null +++ b/API/JWT/app/Http/Requests/ResetPasswordRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + 'token' => 'required', + 'email' => 'required|email|exists:users,email', + 'password' => 'required|min:8|confirmed', + ]; + } +} diff --git a/API/JWT/routes/api.php b/API/JWT/routes/api.php index e5e5166..34e52e6 100644 --- a/API/JWT/routes/api.php +++ b/API/JWT/routes/api.php @@ -5,6 +5,8 @@ use App\Http\Controllers\API\Auth\LoginController; use App\Http\Controllers\API\Auth\LogoutController; use App\Http\Controllers\API\Auth\Mail\SendMailNotificationController; use App\Http\Controllers\API\Auth\Mail\VerifyMailController; +use App\Http\Controllers\API\Auth\Password\NotificationPasswordController; +use App\Http\Controllers\API\Auth\Password\ResetPasswordController; use App\Http\Controllers\API\Auth\RegisterController; use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; @@ -24,3 +26,9 @@ Route::group(['middleware' => 'auth:api'], function () { Route::post('/email/verification-notification', [SendMailNotificationController::class, 'mailNotification'])->name('mail.notification'); Route::get('/email/verify/{id}/{hash}', [VerifyMailController::class, 'verifyMail'])->name('verification.verify'); }); + +//reset password +Route::group(['middleware' => 'guest'], function () { + Route::post('forgot-password', [NotificationPasswordController::class, 'passwordNotification'])->name('password.notification'); + Route::post('reset-password', [ResetPasswordController::class, 'resetPassword'])->name('password.reset'); +});