composer require belcebur/belcebur-auth
Create an adapter using the service manager and indicate the name of the service.
You can use one method or both simultaneously
Crear un adaptador mediante el gestor de servicios e indicar el nombre de los servicios.
*Se puede usar un metodo o los dos simultaneamente.*
<?php
return array(
'service_manager' => array(
'factories' => array(
'serviceName1' => function (\Zend\ServiceManager\ServiceLocatorInterface $sm) {
return new \DoctrineModule\Authentication\Adapter\ObjectRepository(array(
'object_manager' => $sm->get('Doctrine\ORM\EntityManager'),
'identity_class' => 'Application\Entity\User',
'identity_property' => 'email',
'credential_property' => 'password',
'credentialCallable' => function (\Application\Entity\User $entity, $password) {
return md5($password);
}
));
},
'serviceName2' => function (\Zend\ServiceManager\ServiceLocatorInterface $sm) {
return new \DoctrineModule\Authentication\Adapter\ObjectRepository(array(
'object_manager' => $sm->get('Doctrine\ORM\EntityManager'),
'identity_class' => 'Application\Entity\Member',
'identity_property' => 'username',
'credential_property' => 'password',
'credentialCallable' => function (\Application\Entity\Member $entity,$password) {
return md5($password);
}
));
},
),
),
'belcebur' => array(
'belcebur-auth' => array(
'auth-factories' => array(
'sm-factories' => array('serviceName1',serviceName2,....),
'config-factories' => array()
)
),
),
);
<?php
return array(
'belcebur' => array(
'belcebur-auth' => array(
'auth-factories' => array(
'sm-factories' => array(),
'config-factories' => array(
'serviceName1' => array(
'identity_class' => 'Application\Entity\User',
'identity_property' => 'email',
'credential_property' => 'password',
'credentialCallable' => function (\Application\Entity\User $entity,$password) {
return md5($password);
}
)
),
)
),
),
);
Primero llamamos al servicio, y luego le pedimos el adaptador indicando el identity_class al que aplica.
/**
* @var \BelceburAuth\Service\AuthenticationFactory $authFactory
* @var \DoctrineModule\Authentication\Adapter\ObjectRepository $adapter
* @var \Zend\Authentication\Result $result
*/
$authAdapters = $this->getServiceLocator()->get('AuthenticationFactory');
$adapter = $authAdapters->getAuthAdapter('Application\Entity\User');
$adapter->setIdentity($identity);
$adapter->setCredential($password);
$result = $authAdapters->authenticate($adapter);
var_dump($this->identity());
die;