Contao\BackendPassword::run PHP Method

run() public method

Run the controller and parse the password template
public run ( ) : Response
return Symfony\Component\HttpFoundation\Response
    public function run()
    {
        /** @var BackendTemplate|object $objTemplate */
        $objTemplate = new \BackendTemplate('be_password');
        if (\Input::post('FORM_SUBMIT') == 'tl_password') {
            $pw = \Input::postUnsafeRaw('password');
            $cnf = \Input::postUnsafeRaw('confirm');
            // The passwords do not match
            if ($pw != $cnf) {
                \Message::addError($GLOBALS['TL_LANG']['ERR']['passwordMatch']);
            } elseif (Utf8::strlen($pw) < \Config::get('minPasswordLength')) {
                \Message::addError(sprintf($GLOBALS['TL_LANG']['ERR']['passwordLength'], \Config::get('minPasswordLength')));
            } elseif ($pw == $this->User->username) {
                \Message::addError($GLOBALS['TL_LANG']['ERR']['passwordName']);
            } else {
                // Make sure the password has been changed
                if (\Encryption::verify($pw, $this->User->password)) {
                    \Message::addError($GLOBALS['TL_LANG']['MSC']['pw_change']);
                } else {
                    $this->loadDataContainer('tl_user');
                    // Trigger the save_callback
                    if (is_array($GLOBALS['TL_DCA']['tl_user']['fields']['password']['save_callback'])) {
                        foreach ($GLOBALS['TL_DCA']['tl_user']['fields']['password']['save_callback'] as $callback) {
                            if (is_array($callback)) {
                                $this->import($callback[0]);
                                $pw = $this->{$callback[0]}->{$callback[1]}($pw);
                            } elseif (is_callable($callback)) {
                                $pw = $callback($pw);
                            }
                        }
                    }
                    $objUser = \UserModel::findByPk($this->User->id);
                    $objUser->pwChange = '';
                    $objUser->password = \Encryption::hash($pw);
                    $objUser->save();
                    \Message::addConfirmation($GLOBALS['TL_LANG']['MSC']['pw_changed']);
                    $this->redirect('contao/main.php');
                }
            }
            $this->reload();
        }
        $objTemplate->theme = \Backend::getTheme();
        $objTemplate->messages = \Message::generate();
        $objTemplate->base = \Environment::get('base');
        $objTemplate->language = $GLOBALS['TL_LANGUAGE'];
        $objTemplate->title = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['pw_new']);
        $objTemplate->charset = \Config::get('characterSet');
        $objTemplate->action = ampersand(\Environment::get('request'));
        $objTemplate->headline = $GLOBALS['TL_LANG']['MSC']['pw_change'];
        $objTemplate->submitButton = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['continue']);
        $objTemplate->password = $GLOBALS['TL_LANG']['MSC']['password'][0];
        $objTemplate->confirm = $GLOBALS['TL_LANG']['MSC']['confirm'][0];
        return $objTemplate->getResponse();
    }

Usage Example

 /**
  * Renders the "set new password" form.
  *
  * @return Response
  *
  * @Route("/password", name="contao_backend_password")
  */
 public function passwordAction()
 {
     $this->container->get('contao.framework')->initialize();
     $controller = new BackendPassword();
     return $controller->run();
 }
BackendPassword