AuthRepositoryInterface.php 852 B

123456789101112131415161718192021222324252627
  1. <?php
  2. namespace App\Repositories;
  3. use App\Models\User;
  4. use App\Models\PersonalAccessToken;
  5. use App\DTO\AuthDTO;
  6. use Illuminate\Contracts\Auth\Authenticatable;
  7. interface AuthRepositoryInterface
  8. {
  9. public function findUserByEmail(string $email): ?User;
  10. public function findToken(string $token): ?PersonalAccessToken;
  11. public function createAccessToken(User $user, string $deviceId): string;
  12. public function createRefreshToken(User $user, string $deviceId): string;
  13. public function updateTokenExpiration(PersonalAccessToken $token, \DateTime $expirationTime): void;
  14. public function deleteUserTokensByDevice(User|Authenticatable $user, string $deviceId): void;
  15. public function attemptLogin(AuthDTO $credentials): bool;
  16. public function refreshToken(PersonalAccessToken $token, User $user, string $deviceId): array;
  17. }