Jak spravne na prihlasovani uzivatelu a prideleni roli
- symmetry
- Člen | 71
Zdravim, chtel bych se zeptat, zda by mi nekdo mohl popsat, jak spravne
provadet autentifikaci uzivatele.
Popripade prirazeni roli.
Login, pass i role uzivatele jsou ulozeny v MySQL db.
Cetl jsem o tom nejake clanky ale uplne presne jsem to z nich nepochopil, resp. tady na foru, se ta sama vec resila jinak.
Diky moc za radu
<!DOCTYPE html PUBLIC „-W3CDTD HTML 4.01 Transitional//EN“
„http://www.w3.org/TR/html4/loose.dtd“>
<html>
<head>
<meta http-equiv=„Content-Type“ content=„text/html;
charset=UTF-8“>
<title>Přihlášení</title>
</head>
<body>
<?php
include './lib/nette-0.9-PHP-5.2/Nette/loader.php';
Debug::enable();
$form = new Form;
$user = new User;
$form->addText('email', 'Mail:')
->addRule(Form::EMAIL, 'Zadejte prosím mail pro login');
$form->addText('password', 'Heslo:')
->addRule(Form::FILLED, 'Zadejte prosím heslo');
$form->addSubmit('send', 'Odeslat');
echo $form;
if($form ->isSubmitted())
{
if($form ->isValid())
{
//FORM HAS SENT
$authenticator = new SimpleAuthenticator(array(
'john' => 'IJ^%4dfh54*',
));
//Tady by ,mne zajimalo, jak predat ten array z log formu?
$user->setAuthenticationHandler($authenticator);
// přihlášení
$user->authenticate($userName, $password); // předáme přihlašovací jméno a heslo
//Kde ale probiha overovani uzivatel z MySQL?
// ověření, zda je uživatel přihlášen
if ($user->isAuthenticated())
{}
}
else
{
echo '<h1>Nejsou vyplněny korektne údaje</h1>';
$form->getErrors();
$form->setDefaults(array('email'=>'vas email'));
}
}
?>
</body>
</html>
Editoval symmetry (5. 11. 2009 16:52)
- Ondřej Mirtes
- Člen | 1536
O autentifikaci se ti stará třída implementující interface
IAuthenticator (a nastavuješ ji právě pomocí
setAuthenticationHandler
. Má metodu authenticate
a
buďto vyhazuje výjimku v případě chyby (špatně zadané údaje) anebo
vrací objekt Identity
s informacemi o uživateli.
BTW: Nechceš zvážit využití celého Nette včetně Application, routování a MVC?