Blame view

sources/core/command/user/resetpassword.php 2.41 KB
6d9380f96   Cédric Dupont   Update sources OC...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  <?php
  /**
   * Copyright (c) 2014 Christopher Schäpers <christopher@schaepers.it>
   * This file is licensed under the Affero General Public License version 3 or
   * later.
   * See the COPYING-README file.
   */
  
  namespace OC\Core\Command\User;
  
  use Symfony\Component\Console\Command\Command;
  use Symfony\Component\Console\Input\InputInterface;
  use Symfony\Component\Console\Input\InputArgument;
  use Symfony\Component\Console\Output\OutputInterface;
  
  class ResetPassword extends Command {
  
  	/** @var \OC\User\Manager */
  	protected $userManager;
  
  	public function __construct(\OC\User\Manager $userManager) {
  		$this->userManager = $userManager;
  		parent::__construct();
  	}
  
  	protected function configure() {
  		$this
  			->setName('user:resetpassword')
  			->setDescription('Resets the password of the named user')
  			->addArgument(
  				'user',
  				InputArgument::REQUIRED,
  				'Username to reset password'
  			)
  		;
  	}
  
  	protected function execute(InputInterface $input, OutputInterface $output) {
  		$username = $input->getArgument('user');
  
  		/** @var $user \OC\User\User */
  		$user = $this->userManager->get($username);
  		if (is_null($user)) {
  			$output->writeln("<error>There is no user called " . $username . "</error>");
  			return 1;
  		}
  
  		if ($input->isInteractive()) {
  			/** @var $dialog \Symfony\Component\Console\Helper\DialogHelper */
  			$dialog = $this->getHelperSet()->get('dialog');
f7d878ff1   kload   [enh] Update to 7...
51
52
53
54
55
56
57
58
59
  
  			if (\OCP\App::isEnabled('files_encryption')) {
  				$output->writeln(
  					'<error>Warning: Resetting the password when using encryption will result in data loss!</error>'
  				);
  				if (!$dialog->askConfirmation($output, '<question>Do you want to continue?</question>', true)) {
  					return 1;
  				}
  			}
6d9380f96   Cédric Dupont   Update sources OC...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  			$password = $dialog->askHiddenResponse(
  				$output,
  				'<question>Enter a new password: </question>',
  				false
  			);
  			$confirm = $dialog->askHiddenResponse(
  				$output,
  				'<question>Confirm the new password: </question>',
  				false
  			);
  
  			if ($password === $confirm) {
  				$success = $user->setPassword($password);
  				if ($success) {
  					$output->writeln("<info>Successfully reset password for " . $username . "</info>");
  				} else {
  					$output->writeln("<error>Error while resetting password!</error>");
  					return 1;
  				}
  			} else {
  				$output->writeln("<error>Passwords did not match!</error>");
  				return 1;
  			}
  		} else {
  			$output->writeln("<error>Interactive input is needed for entering a new password!</error>");
  			return 1;
  		}
  	}
  }