Nefunguje předání credentials z LoginFormu do Authenticatoru
- Džízis Crust
- Člen | 10
Zdravím :)
Potřeboval bych pomoct najít chybu v tomto gitu
Snažil jsem se dát dohromady modelloader a staticke acl.. není to sice hotové (neobsahuje autorizaci) ale autentizace by měla fungovat i samostatně.. nebo ne? :D
Notice laděnky:
Undefined offset: 1 na řádku 27
25: public function authenticate(array $credentials) {
26:
27: list($email,$password) = $credentials;
řádek 85 arguments – $credentials – array(0)
81: public function login($username = NULL, $password = NULL)
82: {
83: $this->logout(TRUE);
84: $credentials = func_get_args();
85: $this->setIdentity($this->context->authenticator->authenticate($credentials));
86: $this->setAuthenticated(TRUE);
87: $this->onLoggedIn($this);
88: }
Předem :Díky
- JuniorJR
- Člen | 181
Podívej se, kde voláš login metodu a ujisti se, že ji předáváš právě dva parametry. V presenteru:
try {
$this->user->login('niceEmail', 'nicePassword');
$this->redirect('Foo:bar');
} catch (Nette\Security\AuthenticationException $e) {
$this->flashMessage('Login failed, reason: ' . $e->getMessage());
}
Editoval JuniorJR (22. 11. 2011 19:35)
- Džízis Crust
- Člen | 10
JuniorJR: Login volám ve forms/SignInForm.php v metodě onSignInFormSubmitted ale mám to snad dobře :) V presenteru na to pak mám továrničku.. zabalil jsem to tedy do try, ale problém stále stejný..
- Džízis Crust
- Člen | 10
JuniorJR: Teď mi došlo, že když jsem se ptal na chatu, tak mi Vrtak, nebo HosipLan psal, že volám backlink jako metodu, tak jsem to opravil z backlink() na backlink. A ještě psal něco o ukládání requestu akorát tomu moc nerozumím.. nebo přesněji nevím jak to případně zkontrolovat, nebo opravit..
- Džízis Crust
- Člen | 10
Možná jsem to zmršil tím, že mám login v jiným modulu.. nebo tak něco.. někde jsem něco neupravil, nebo zapomněl napsat jinam / jinak.. ale hlava mi to už nebere a to že jsem zkoušel všechny možný řešení co mě napadly neznamená, že jsem je zkoušel správně.. takže fakt nevím čeho se chytit..
- JuniorJR
- Člen | 181
@Džízis Crust: Tak už vidím tu tvoji chybu. Oprav
si v StartPresenteru
v metodě startup()
první
podmínku:
public function startup()
{
parent::startup();
$user = $this->user;
// Tady si měl původně $user->login() a volal si tak metodu login,
// což byl logický nesmysl.
// Musíš místo toho kontrolovat, zda je uživatel přihlášený,
// a to proto, že uživatele přihlašuješ pouze po odeslání signInFormulare.
if(!$user->isLoggedIn()) {
...
} else {
...
}
}
Editoval JuniorJR (22. 11. 2011 20:38)
- Džízis Crust
- Člen | 10
Jj, už vím :) Zrovna jsem se ztrapňoval na chatu.. s tím, že při zadání špatného hesla to záhadně funguje, tak jsem začal pátrat i jinde :D Každopádně díky za ochotu.. :) A někdo by to tu mohl smazat.. :D
- Džízis Crust
- Člen | 10
JuniorJR: Máš pravdu :) Ještě jsem si to vrátil a koukám do ní.. před tím jsem se díval jen na authenticate a na http\user a řekl si, že se mi tam asi nepředávaj data z formuláře.. protože koho by napadlo, že nějakej ňouma napíše kód, kde se po úspěšný autentizaci volá znova přihlašování :D