Jak spravne na prihlasovani uzivatelu a prideleni roli

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

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
+
0
-

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.

Více info.

BTW: Nechceš zvážit využití celého Nette včetně Application, routování a MVC?