l10n->t('Nextcloud Notification'); } #[\Override] public function getDescription(): string { return $this->l10n->t('Authenticate using a device that is already logged in to your account'); } #[\Override] public function getLightIcon(): string { return $this->url->getAbsoluteURL($this->url->imagePath(Application::APP_ID, 'app.svg')); } #[\Override] public function getDarkIcon(): string { return $this->url->getAbsoluteURL($this->url->imagePath(Application::APP_ID, 'app-dark.svg')); } #[\Override] public function getTemplate(IUser $user): ITemplate { $token = $this->tokenManager->generate($user->getUID()); $template = $this->templateManager->getTemplate(Application::APP_ID, 'challenge'); $template->assign('token', $token->getToken()); return $template; } #[\Override] public function verifyChallenge(IUser $user, string $challenge): bool { try { $token = $this->tokenManager->getByToken($challenge); } catch (DoesNotExistException $e) { return false; } $this->tokenManager->delete($token); return $token->getStatus() === Token::ACCEPTED && $token->getUserId() === $user->getUID(); } #[\Override] public function isTwoFactorAuthEnabledForUser(IUser $user): bool { return $this->stateManager->getState($user); } #[\Override] public function getPersonalSettings(IUser $user): IPersonalProviderSettings { return new Personal( $this->initialStateService, $this->templateManager, $this->stateManager->getState($user), ); } #[\Override] public function enableFor(IUser $user): void { $this->stateManager->setState($user, true); } #[\Override] public function disableFor(IUser $user): void { $this->stateManager->setState($user, false); } }