PasswordResetController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\ForgotPasswordRequest;
  4. use App\Http\Requests\VerifyCodeRequest;
  5. use App\Http\Requests\ResetPasswordRequest;
  6. use App\Services\PasswordResetService;
  7. use Illuminate\Http\JsonResponse;
  8. class PasswordResetController extends Controller
  9. {
  10. public function __construct(protected PasswordResetService $passwordResetService) {}
  11. public function forgotPassword(ForgotPasswordRequest $request): JsonResponse
  12. {
  13. $validated = $request->validated();
  14. $sent = $this->passwordResetService->sendCode(
  15. email: $validated['email'],
  16. tipo: $validated['tipo'],
  17. );
  18. if (!$sent) {
  19. return $this->errorResponse(
  20. message: __('auth.wrong_type'),
  21. code: 403,
  22. );
  23. }
  24. return $this->successResponse(
  25. message: __('auth.password_reset_sent'),
  26. );
  27. }
  28. public function verifyCode(VerifyCodeRequest $request): JsonResponse
  29. {
  30. $validated = $request->validated();
  31. $valid = $this->passwordResetService->verifyCode(
  32. email: $validated['email'],
  33. code: $validated['codigo'],
  34. );
  35. if (!$valid) {
  36. return $this->errorResponse(
  37. message: __('auth.password_reset_invalid'),
  38. code: 422,
  39. );
  40. }
  41. return $this->successResponse(
  42. message: 'OK',
  43. );
  44. }
  45. public function resetPassword(ResetPasswordRequest $request): JsonResponse
  46. {
  47. $validated = $request->validated();
  48. $reset = $this->passwordResetService->resetPassword(
  49. email: $validated['email'],
  50. code: $validated['codigo'],
  51. password: $validated['password'],
  52. );
  53. if (!$reset) {
  54. return $this->errorResponse(
  55. message: __('auth.password_reset_invalid'),
  56. code: 422,
  57. );
  58. }
  59. return $this->successResponse(
  60. message: __('auth.password_reset_success'),
  61. );
  62. }
  63. }