. */ namespace SP\Domain\User\Ports; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; use SP\Domain\Core\Exceptions\SPException; use SP\Domain\User\Models\UserPassRecover as UserPassRecoverModel; use SP\Infrastructure\Database\QueryResult; /** * Class UserPassRecoverRepository * * @template T of UserPassRecoverModel */ interface UserPassRecoverRepository { /** * Checks recovery limit attempts by user's id and time * * @param int $userId * @param int $time * * @return int * @throws ConstraintException * @throws QueryException */ public function getAttemptsByUserId(int $userId, int $time): int; /** * Adds a hash for a user's id * * @param int $userId * @param string $hash * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function add(int $userId, string $hash): QueryResult; /** * Toggles a hash used * * @param string $hash * @param int $time * * @return int The updated rows. If no rows are updated, it means that the hash doesn't exist or it's expired * @throws SPException */ public function toggleUsedByHash(string $hash, int $time): int; /** * Comprobar el hash de recuperación de clave. * * @param string $hash * @param int $time * * @return QueryResult */ public function getUserIdForHash(string $hash, int $time): QueryResult; }