dev-master
9999999-devMozilla Persona (BrowserID) Extension for Yii Framework
MIT
The Requires
- php >=5.3.0
Wallogit.com
2017 © Pedro Peláez
Mozilla Persona (BrowserID) Extension for Yii Framework
Add to your require section into your composer file:, (*1)
krydos/persona-yii
'ext.persona.Persona' and 'ext.persona.PersonaUserIdentity', (*2)
your import section should look like this:, (*3)
'import' => array(
'...',
'ext.persona.Persona',
'ext.persona.PersonaUserIdentity',
'...',
),
Installation complete. Hooray! :), (*4)
For adding Persona Login button into your view you can invoke the widget like that:, (*5)
<?php $this->widget('ext.persona.PersonaWidget'); ?>
PersonaWidget may take several parameters like:, (*6)
PersonaWidget is default Yii widget so you can set all this parameters like that:, (*7)
$this->widget('ext.persona.PersonaWidget', array(
'button_text' => 'Login button text',
'button_style' => 'dark',
'login_url' => $this->createUrl('site/login'),
'logout_url' => $this->createUrl('site/logout'),
));
Into your login action you should add next lines:, (*8)
$identity = new PersonaUserIdentity('User');
if($identity->authenticate()) {
Yii::app()->user->login($identity);
echo json_encode(array('url'=>Yii::app()->user->returnUrl));
Yii::app()->end();
}
Let's look on what happen here., (*9)
$identity = new PersonaUserIdentity();
this line create the PersonaUserIdentity object. This similar to default Yii UserIdentity but you can pass some parameters into., (*10)
next line is:, (*11)
if($identity->authenticate()) {
This is also similar to default UserIdentity. Here you just checking on exist user by email., (*12)
Yii::app()->user->login($identity);
This is also a default line of UserIdentity. This line a write login information too the SESSION, (*13)
echo json_encode(array('url'=>Yii::app()->user->returnUrl));
Yii::app()->end();
This a very important lines. After success login you maybe want to redirect a user into some url or previous user url in case above. You should make JSON response with 'url' field that contain url for redirect. And after this resonse you should ending the Yii application., (*14)
Because Persona working through Ajax you maybe want to check on persona request into your action. You can check it using:, (*15)
if(Persona::isPersonaRequest()) {/* continue persona auth */ }
Thats all. Feel free to send Pull Request :), (*16)
Mozilla Persona (BrowserID) Extension for Yii Framework
MIT