Я установил ZendFramework bjyauthorize.
Я также установил zfcuser, но я не хочу использовать это.
У меня есть другой модуль аутентификации.
Я хотел бы знать, как я могу запустить или загрузить bjyauthorize role / ACL, после того как пользователь будет аутентифицирован.
Это правильный поставщик?
namespace Firewall\Provider\Identity;
//use BjyAuthorize\Provider\Identity;
//use BjyAuthorize\Exception\InvalidRoleException;
//use Zend\Db\Adapter\Adapter;
//use Zend\Db\Sql\Where;
//use Zend\Db\Sql\Sql;
//use Zend\Db\Sql\Select;
//use Zend\Permissions\Acl\Role\RoleInterface;
//use Zend\Authentication\Storage\Session as SessionStorage;
//use BjyAuthorize\Provider\Identity\ProviderInterface;
//use Zend\Db\TableGateway\TableGateway;
//use Zend\Db\Sql\Expression;
//use Zend\Authentication\AuthenticationService;
//
//class Myprovider implements ProviderInterface {
//
//
//
//public function setDbAdapter();
//public function getDbAdapter();
//public function getIdentityRoles();
//public function getDefaultRole();
//public function getRoles();
//
//}
use BjyAuthorize\Provider\Identity\ProviderInterface;
use Zend\Authentication\AuthenticationService;
class Myprovider implements ProviderInterface
{
// public function getDefaultRole()
// {
// $aTest = "test";
// return new Debug();
// }
public function getIdentityRoles()
{
$oIdentity = $this->getIdentity();
$aRoles = [];
if(!empty($oIdentity))
{
$aRoles = $oIdentity->getRoles();
}
return $aRoles;
}
protected $authService;
public function __construct(AuthenticationService $authService)
{
$this->authService = $authService;
}
public function setAdapter($adapter)
{
return $this->authService->setAdapter($adapter);
}
public function getAdapter()
{
return $this->authService->getAdapter();
}
public function getStorage()
{
return $this->authService->getStorage();
}
public function getIdentity()
{
return $this->authService->getIdentity();
}
public function clearIdentity()
{
return $this->authService->clearIdentity();
}
}
bjyAuthorize не взаимодействует напрямую с вашим модулем аутентификации. Ему просто нужна роль текущего вошедшего в систему пользователя. Это происходит через провайдера идентификации. Поэтому вы должны расширить ProviderInterface для провайдера идентификации, чтобы он возвращал роли, принадлежащие текущему вошедшему в систему пользователю.
Интерфейс провайдера идентификации
Возможно, вам также следует изменить (или сделать свой собственный) поставщик ролей по умолчанию, чтобы он возвращал роли, которые вы определили для своего модуля аутентификации.
Других решений пока нет …