1. Go to this page and download the library: Download bitgrave/persona-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// app/ApplicationKernel.php
public function registerBundles()
{
return array(
// ...
new BG\PersonaBundle\BGPersonaBundle(),
// ...
);
}
/**
* persona logincheck dummy controller.
*
* @Route("/persona_login_check")
* @Template
*
* */
public function personaLoginCheckAction()
{
return array();
}
namespace Acme\MyBundle\Security\User\Provider;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use BG\PersonaBundle\Services\BasePersona;
use Symfony\Component\HttpFoundation\Session;
class PersonaProvider implements UserProviderInterface
{
protected $userManager;
protected $validator;
protected $session;
protected $persona;
public function __construct(BasePersona $persona, $userManager, $validator, $session)
{
$this->persona = $persona;
$this->userManager = $userManager;
$this->validator = $validator;
$this->session = $session;
}
// main auth entry point, load user on exist, create user on non-existance
public function loadUserByUsername($p_persona_email)
{
$user = $this->findUserByPersonaId($p_persona_email);
$t_persona_email = $this->session->get('persona_email');
$t_persona_status = $this->session->get('persona_status');
$t_persona_expires = $this->session->get('persona_expires');
// compare persona expires microtimestamp with current one ...
if (($t_persona_status==='okay')&&($t_persona_expires>=round((microtime(true) * 1000))))
{
if (empty($user))
{
$user = $this->userManager->createUser();
$user->setEnabled(true);
$user->setPassword('');
}
$user->setPersonaId($t_persona_email);
$user->setPersonaLastStatus($t_persona_status);
$user->addRole('ROLE_PERSONA_USER');
$user->setPersonaExpires($t_persona_expires);
$this->userManager->updateUser($user);
// kill old persona session stack
$this->session->set('persona_email', null);
$this->session->set('persona_expires', null);
$this->session->set('persona_status', null);
}
if (empty($user)) {
throw new UsernameNotFoundException('The user is not authenticated on persona');
}
return $user;
}
public function findUserByPersonaId($personaEmail)
{
return $this->userManager->findUserBy(array('persona_email' => $personaEmail));
}
public function refreshUser(UserInterface $user)
{
if (!$this->supportsClass(get_class($user)) || !$user->getPersonaEmail()) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
}
return $this->loadUserByUsername($user->getPersonaEmail());
}
public function supportsClass($class)
{
return $this->userManager->supportsClass($class);
}
namespace Acme\MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Entity\User as BaseUser;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* Nmq\UserBundle\Entity\User
* @ORM\Table(name="nmq_user")
* @ORM\Entity(repositoryClass="Nmq\UserBundle\Entity\UserRepository")
* @Gedmo\SoftDeleteable(fieldName="deletedAt")
*
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
// //////////////////////////////////////
/**
* @var string $firstname
*
* @ORM\Column(name="firstname", type="string", length=80, nullable=true)
*/
protected $firstname;
/**
* @var string $lastname
*
* @ORM\Column(name="lastname", type="string", length=80, nullable=true)
*/
protected $lastname;
/**
* @param string $persona_lastStatus
*/
public function setPersonaLastStatus($persona_lastStatus)
{
$this->persona_lastStatus = $persona_lastStatus;
}
/**
* @return string
*/
public function getPersonaLastStatus()
{
return $this->persona_lastStatus;
}
/**
* @param string $persona_lastFailReason
*/
public function setPersonaLastFailReason($persona_lastFailReason)
{
$this->persona_lastFailReason = $persona_lastFailReason;
}
/**
* @return string
*/
public function getPersonaLastFailReason()
{
return $this->persona_lastFailReason;
}
public function setPersonaExpires($persona_expires)
{
$this->persona_expires = $persona_expires;
}
public function getPersonaExpires()
{
return $this->persona_expires;
}
/**
* @param string $persona_email
*/
public function setPersonaEmail($persona_email)
{
$this->persona_email = $persona_email;
}
/**
* @return string
*/
public function getPersonaEmail()
{
return $this->persona_email;
}
/**
* @var string $persona_email
*
* @ORM\Column(name="persona_email", type="string", length=255, nullable=true)
*/
protected $persona_email;
/**
* @ORM\Column(name="persona_expires", type="integer", nullable=true)
*/
protected $persona_expires;
/**
* @var string persona_lastStatus
* @ORM\Column(name="persona_last_status", type="string", length=8, nullable=true)
*/
protected $persona_lastStatus;
/**
* @var string persona_lastFailReason
* @ORM\Column(name="persona_last_fail_reason", type="string", nullable=true)
*/
protected $persona_lastFailReason;
// //////////////////////////////////////
/**
* Set lastname value for user
*/
public function setLastname($lastname)
{
$this->lastname = $lastname;
}
/**
* Get lastname value for user
* @return string
*/
public function getLastname()
{
return $this->lastname;
}
/**
* Set firstname value for user
*/
public function setFirstname($firstname)
{
$this->firstname = $firstname;
}
/**
* Get firstname value for user
* @return string
*/
public function getFirstname()
{
return $this->firstname;
}
// //////////////////////////////////////
/***
* Set users personaId
*
* @param $persona_email
*/
public function setPersonaId($persona_email)
{
$this->email = $persona_email;
$this->emailCanonical = $this->email;
$this->setUsername($this->email);
$this->setPersonaEmail($this->email);
$this->salt = '';
}
/**
* Get the full name of the user (first + last name)
* @return string
*/
public function getFullName()
{
return $this->getFirstName() . ' ' . $this->getLastname();
}
// //////////////////////////////////////
public function __construct()
{
parent::__construct();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.