validateToken($this->mapper->getById($attemptId)); } /** * @param string $token * @return Token * @throws DoesNotExistException * @throws TokenExpireException */ public function getByToken(string $token): Token { return $this->validateToken($this->mapper->getByToken($token)); } /** * @param Token $token */ public function delete(Token $token): void { $this->notificationManager->clearNotification($token); $this->mapper->delete($token); } /** * @param Token $token * @return Token */ public function update(Token $token): Token { $this->notificationManager->clearNotification($token); return $this->mapper->update($token); } public function cleanupTokens(): void { $tokens = $this->mapper->getTokensForCleanup(); foreach ($tokens as $token) { $this->delete($token); } } public function generate(string $userId): Token { $token = $this->mapper->generate($userId); $this->notificationManager->newNotification($token); return $token; } /** * @param Token $token * @return Token * @throws TokenExpireException */ protected function validateToken(Token $token): Token { if (($this->timeFactory->getTime() - $token->getTimestamp()) > 60 * 10) { $this->delete($token); throw new TokenExpireException('Token expired'); } return $token; } }