OpenIDForm autentizace komponenta

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

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.