registrace a přihlašování Nette 2.1.1

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
TorrX
Člen | 40
+
0
-

Zdravím,

mám trošku problém s registrací a loginem. Podle věcí, které jsem se dočetl na fóru se mi povedla rozhýbat registrace pomocí:

public function registerSubmitted($form) {
		$values = $form->getValues();

		$email = $this->database->table('users')->where('username', $values->name)
				->fetch();
		if($email) {
			$form->addError('Tento email je již používán.');
		} else {
			$this->user->getAuthenticator()->add($values->username, $values->password);
			$this->flashMessage('Uživatel registrován.');
			$this->redirect('Homepage:default');
		}
	}

Nicméně samotný login mi neustále tvrdohlavě říká, že heslo je špatně zadané.
Pro login mám následující:

public function signInFormSucceeded($form)
	{
		$values = $form->getValues();

		if ($values->remember) {
			$this->getUser()->setExpiration('+ 14 days', FALSE);
		} else {
			$this->getUser()->setExpiration('+ 20 minutes', TRUE);
		}

		try {
            $this->getUser()->login($values->username, $values->password);
		} catch (Nette\Security\AuthenticationException $e) {
			$form->addError($e->getMessage());
			return;
		}

		$this->redirect('Admin:default');
	}

nevíte někdo, co je špatně? Jak jsem vyrozuměl tak se využívá UserManager.php

TorrX
Člen | 40
+
0
-

Případně by bodl nějaký krátký návod jak správně použít to nové přihlašování a registraci :B

japlavaren
Člen | 404
+
0
-

ahoj,

neviem sice kde je problem, ale poradim ako to zistit:
pozri si aky hash hesla ti to ulozilo do db a potom v autentizatore::login si dumplni aky ti generuje pri prihaseni. pravdepodobne budu rozdielne a tambude problem

TorrX
Člen | 40
+
0
-

Nojo, koukám na to, hash z db je: „$2y$10$JaNnKgKCdKGjh0LVFQ6UYOUOhbCvik2iG4CKWawM7Ho“
a hash, kterej to generuje pro porovnání je: „$2y$10$JaNnKgKCdKGjh0LVFQ6UYOUOhbCvik2iG4CKWawM7Ho9n3l2OWnYS“

Tak teď už ot vubec nechápu.

Šaman
Člen | 2666
+
0
-

Zakomentuj řádky 47 a 48 UserManagera (jinak řečeno hackni kontrolu hesla :) a pak se přihlaš libovolným heslem (možná jen bude muset projít validací na minimální délku). Pak si heslo změň a ty rádky můžeš odkomentovat.

P.S. Možná nebude ani nutné heslo měnit, vypadá to, že po kontrole hesla to ještě aktualizuje heslo pokud je potřeba rehash (co to je?). Takže je možnost, že když zadáš nějaké heslo při přihlášení a nezasekne se to na té kontrole (máš ji zakomentovanou), tak to zjistí, že heslo je nějaké divné a uloží so ho do db znovu s aktuálím hashem. Napiš pak, jak to dopadlo.

Editoval Šaman (15. 3. 2014 12:51)

TorrX
Člen | 40
+
0
-

Už jsem na to přišel, chyba byla mezi stolem a židlí…

aneb políčko password v db bylo CHAR 50… a hash byl dlouhý 60, proto jsem měl kratší hash před a po, protože do db se uložilo jen 50 prvních znaků.

japlavaren
Člen | 404
+
0
-

:D