ServiceTokenRepository.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Services\Auth;
  3. use App\MicroApi\Services\UserService;
  4. use Illuminate\Auth\Passwords\TokenRepositoryInterface;
  5. use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
  6. use Illuminate\Support\Str;
  7. class ServiceTokenRepository implements TokenRepositoryInterface
  8. {
  9. /**
  10. * @var UserService
  11. */
  12. protected $userService;
  13. public function __construct()
  14. {
  15. $this->userService = resolve('microUserService');
  16. }
  17. /**
  18. * Create a new token.
  19. *
  20. * @param \Illuminate\Contracts\Auth\CanResetPassword $user
  21. * @return string
  22. */
  23. public function create(CanResetPasswordContract $user)
  24. {
  25. $email = $user->getEmailForPasswordReset();
  26. $key = config('app.key');
  27. if (Str::startsWith($key, 'base64:')) {
  28. $key = base64_decode(substr($key, 7));
  29. }
  30. $token = hash_hmac('sha256', Str::random(40), $key);
  31. $payload = ['email' => $email, 'token' => $token];
  32. $this->userService->createPasswordReset($payload);
  33. return $token;
  34. }
  35. /**
  36. * Determine if a token record exists and is valid.
  37. *
  38. * @param \Illuminate\Contracts\Auth\CanResetPassword $user
  39. * @param string $token
  40. * @return bool
  41. */
  42. public function exists(CanResetPasswordContract $user, $token)
  43. {
  44. return $this->userService->validatePasswordResetToken($token);
  45. }
  46. /**
  47. * Delete a token record.
  48. *
  49. * @param \Illuminate\Contracts\Auth\CanResetPassword $user
  50. * @return void
  51. */
  52. public function delete(CanResetPasswordContract $user)
  53. {
  54. return $this->userService->deletePasswordReset($user->email);
  55. }
  56. /**
  57. * Delete expired tokens.
  58. *
  59. * @return void
  60. */
  61. public function deleteExpired()
  62. {
  63. // TODO: Implement deleteExpired() method.
  64. }
  65. }