tokenManager->getById($attemptId); } catch (DoesNotExistException $e) { return new DataResponse([], Http::STATUS_NOT_FOUND); } catch (TokenExpireException $e) { return new DataResponse([], Http::STATUS_FORBIDDEN); } if ($token->getUserId() !== $this->userId) { return new DataResponse([], Http::STATUS_FORBIDDEN); } $token->setStatus(Token::ACCEPTED); $this->tokenManager->update($token); return new DataResponse([], Http::STATUS_ACCEPTED); } #[NoAdminRequired] public function disapprove(int $attemptId): DataResponse { try { $token = $this->tokenManager->getById($attemptId); } catch (DoesNotExistException $e) { return new DataResponse([], Http::STATUS_NOT_FOUND); } catch (TokenExpireException $e) { return new DataResponse([], Http::STATUS_FORBIDDEN); } if ($token->getUserId() !== $this->userId) { return new DataResponse([], Http::STATUS_FORBIDDEN); } $token->setStatus(Token::REJECTED); $this->tokenManager->update($token); return new DataResponse([], Http::STATUS_OK); } #[PublicPage] public function poll(string $token): DataResponse { try { $token = $this->tokenManager->getByToken($token); } catch (DoesNotExistException $e) { return new DataResponse([], Http::STATUS_NOT_FOUND); } catch (TokenExpireException $e) { return new DataResponse([], Http::STATUS_FORBIDDEN); } if ($token->getStatus() === Token::PENDING) { return new DataResponse(['status' => 'pending']); } if ($token->getStatus() === Token::ACCEPTED) { return new DataResponse(['status' => 'accepted']); } if ($token->getStatus() === Token::REJECTED) { return new DataResponse(['status' => 'rejected']); } return new DataResponse([], Http::STATUS_FORBIDDEN); } }