OpenIDForm autentizace komponenta
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- stanley
- Člen | 22
Ahoj, napsal jsem takovou jednoduchou komponenticku, vyrobi formular pro OpenID autentizaci, treba se to bude nekomu hodit.
Pouziva se to jednoduse:
<?php
//tovarnicka v prezenteru
public function createComponentOpenIDForm() {
$oid = new \OpenIDForm\OpenIDForm();
//nastaveni povinnych uzivatelskych atributu
$oid->setRequired( 'contact/email' );
//nastaveni volitelnych uzivatelskych atributu
$oid->setOptional( 'namePerson/friendly' );
$oid->setOptional( 'language/pref' );
//callback pri uspesnem prihlaseni
$oid->onSignin[] = callback( $this, 'openIDSigned' );
return $oid;
}
/* callback - prvni parametr je identita,
se kterou se uzivatel autentizoval,
druhy je pole uzivatelskych atributu */
public function openIDSigned( $identity, $attributes ) {
try {
//provede se prihlaseni pouze s identitou
$this->user->login( array( $identity ) );
$this->redirect( 'logged' );
}
catch ( Nette\Security\AuthenticationException $e ) {
//neni-li uzivatel nalezen, mel by se s touto
//identitou registrovat
$oidsession = Environment::getSession( 'openid' );
//odlozim ziskane udaje do session, vyuziju je
//k predvyplneni registracniho formulare
$oidsession->identity = $identity;
$oidsession->attributes = $attributes;
$this->redirect( 'register' );
}
}
?>
K ziskani na https://github.com/…k/openidform,
jakekoliv komentare a pripominky vitany!
Pridal jsem to do addons, snad to nicemu nevadi.