1<?php 2/** 3 * @copyright Copyright (c) 2016, ownCloud, Inc. 4 * 5 * @author Christoph Wurst <christoph@winzerhof-wurst.at> 6 * @author Joas Schilling <coding@schilljs.com> 7 * 8 * @license AGPL-3.0 9 * 10 * This code is free software: you can redistribute it and/or modify 11 * it under the terms of the GNU Affero General Public License, version 3, 12 * as published by the Free Software Foundation. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU Affero General Public License for more details. 18 * 19 * You should have received a copy of the GNU Affero General Public License, version 3, 20 * along with this program. If not, see <http://www.gnu.org/licenses/> 21 * 22 */ 23namespace OC\Core\Command\TwoFactorAuth; 24 25use OC\Authentication\TwoFactorAuth\ProviderManager; 26use OCP\IUserManager; 27use Symfony\Component\Console\Input\InputArgument; 28use Symfony\Component\Console\Input\InputInterface; 29use Symfony\Component\Console\Output\OutputInterface; 30 31class Disable extends Base { 32 33 /** @var ProviderManager */ 34 private $manager; 35 36 /** @var IUserManager */ 37 protected $userManager; 38 39 public function __construct(ProviderManager $manager, IUserManager $userManager) { 40 parent::__construct('twofactorauth:disable'); 41 $this->manager = $manager; 42 $this->userManager = $userManager; 43 } 44 45 protected function configure() { 46 parent::configure(); 47 48 $this->setName('twofactorauth:disable'); 49 $this->setDescription('Disable two-factor authentication for a user'); 50 $this->addArgument('uid', InputArgument::REQUIRED); 51 $this->addArgument('provider_id', InputArgument::REQUIRED); 52 } 53 54 protected function execute(InputInterface $input, OutputInterface $output): int { 55 $uid = $input->getArgument('uid'); 56 $providerId = $input->getArgument('provider_id'); 57 $user = $this->userManager->get($uid); 58 if (is_null($user)) { 59 $output->writeln("<error>Invalid UID</error>"); 60 return 1; 61 } 62 if ($this->manager->tryDisableProviderFor($providerId, $user)) { 63 $output->writeln("Two-factor provider <options=bold>$providerId</> disabled for user <options=bold>$uid</>."); 64 return 0; 65 } else { 66 $output->writeln("<error>The provider does not support this operation.</error>"); 67 return 2; 68 } 69 } 70} 71