Změna hesla uživatelů jako správce
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- .:M@rt!n:.
 - Člen | 201
 
Rád bych měl možnost jako přihlášený admin v administraci měnit hesla ostatních uživatelů (v případě že původní zapomenou), ale nějak se mě nedaří přijít na řešení.
Vytvoření formuláře:
protected function createComponentUzivatelForm() {
        $form = new Form();
        $ucet = array(
            'admin'=>'admin',
            'user'=>'user'
        );
        $form->addText('username', 'Jméno:');
        $form->addPassword('password', 'Heslo:')
                ->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaků.', 5);
        $form->addPassword('confirmPassword', 'Potvrzení hesla:')
                ->addRule(Form::FILLED, 'Heslo je nutné zadat ještě jednou pro potvrzení.')
                ->addRule(Form::EQUAL, 'Zadná hesla se musejí shodovat.', $form['password']);
        $form->addSelect('ucet', 'Typ účtu: ', $ucet)
                ->setPrompt('-------------- Vyberte --------------')
                ->addRule(Form::FILLED, 'Je nutné vybrat typ účtu.');
        $presenter = $this;
        $form->addSubmit('create', 'Přidat')->setAttribute('class', 'default');
        $form->addSubmit('cancel', 'Zrušit')->setValidationScope(FALSE)
                ->onClick[] = function () use ($presenter) {
                    $presenter->redirect('default');
                };
        $form->onSuccess[] = callback($this, 'uzivatelFormSubmitted');
        $form->addProtection('Vypršel časový limit, odešlete formulář znovu.'); //Obrana před Cross-Site Request Forgery (CSRF)
        return $form;
    }
a obsluha:
public function uzivatelFormSubmitted(Form $form) {
        $id = (int) $this->getParameter('id');
        if ($id > 0) {
            $this->uzivatel->find($id)->insert(array(
                'username' => $form->values->username,
                'password' => md5($form->values->password),
                'ucet' => $form->values->ucet
            ));
            $this->flashMessage('Uživatel upraven.', 'success');
        } else {
            $this->context->createUzivatel()->insert(array(
                'username' => $form->values->username,
                'password' => md5($form->values->password),
                'ucet' => $form->values->ucet
            ));
            $this->flashMessage('Uživatel přidán.', 'success');
        }
        $this->redirect('this');
    }
Bohužel takto změna hesla neproběhne… Prosím tedy o radu, jak mohu do
této obsluhy zakomponovat změnu hesla pro daného uživatele??
Zkoušel jsem to i podle quickstartu, kde si každý uživatel změní své
heslo, ale neúspěšně…

- .:M@rt!n:.
 - Člen | 201
 
Jo díky, této chyby jsem si vůbec nevšiml, tam má být samozřejmě update a už to jde. Víc očí víc vidí ;)