setName('twofactorauth:state'); $this->setDescription('Get the two-factor authentication (2FA) state of a user'); $this->addArgument('uid', InputArgument::REQUIRED); } protected function execute(InputInterface $input, OutputInterface $output): int { $uid = $input->getArgument('uid'); $user = $this->userManager->get($uid); if (is_null($user)) { $output->writeln('Invalid UID'); return 1; } $providerStates = $this->registry->getProviderStates($user); $filtered = $this->filterEnabledDisabledUnknownProviders($providerStates); [$enabled, $disabled] = $filtered; if (!empty($enabled)) { $output->writeln("Two-factor authentication is enabled for user $uid"); } else { $output->writeln("Two-factor authentication is not enabled for user $uid"); } $output->writeln(''); $this->printProviders('Enabled providers', $enabled, $output); $this->printProviders('Disabled providers', $disabled, $output); return 0; } private function filterEnabledDisabledUnknownProviders(array $providerStates): array { $enabled = []; $disabled = []; foreach ($providerStates as $providerId => $isEnabled) { if ($isEnabled) { $enabled[] = $providerId; } else { $disabled[] = $providerId; } } return [$enabled, $disabled]; } private function printProviders(string $title, array $providers, OutputInterface $output) { if (empty($providers)) { // Ignore and don't print anything return; } $output->writeln($title . ':'); foreach ($providers as $provider) { $output->writeln('- ' . $provider); } } }