#zend-framework2 #zfcuser #bjyauthorize #login-system
#zend-framework2 #zfcuser #bjyauthorize #система входа в систему
Вопрос:
У меня это проблема. В моем приложении ZF2 я управляю системой входа с помощью byjauthorize и zfcuser, и у меня есть два разных базовых макета. Один предназначен для страницы входа, а другой — для приложения, когда пользователь входит в систему. Это код в модуле приложения в module.config.php:
'template_map' => array(
'layout/login_layout' => __DIR__ . '/../view/layout/login_layout.phtml',
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
Теперь модуль приложения всегда в Module.php я установил этот код:
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$application = $e->getTarget();
// Change default layout if user is logged
$sm = $application->getServiceManager();
$auth = $sm->get('zfcuser_auth_service');
if ($auth->hasIdentity()) {
$eventManager->attach("dispatch", function($e) {
$controller = $e->getTarget();
$s_matchedRoute = $e->getParam('route-match')->getMatchedRouteName();
if ($s_matchedRoute === 'zfcuser/login') {
$controller->layout('layout/login_layout');
} else {
$controller->layout('layout/layout');
}
});
/*
* Check Admin ACL with BjyAuthorize:
* use RedirectionStrategy (that redirects to ZfcUser's login route by default)
*/
$strategy = new RedirectionStrategy();
$strategy->setRedirectRoute('application/error');
$e->getTarget()->getEventManager()->attach($strategy);
} else {
$eventManager->attach("dispatch", function($e) {
$controller = $e->getTarget();
$controller->layout('layout/login_layout');
});
$strategy = new RedirectionStrategy();
$strategy->setRedirectRoute('zfcuser/login');
$e->getTarget()->getEventManager()->attach($strategy);
}
/**
* Format style login page
*/
$this->layoutFormLogin($eventManager);
// Setting function to handler error
set_error_handler(array('ApplicationModule','handlePhpErrors'));
}
Но когда значение $auth-> hasIdentity равно false, стратегия перенаправления не перенаправляет маршрут в zfcuser/login. Где ошибка? p.s мой application.config.php это:
// 3rd part modules
'DoctrineModule',
'DoctrineORMModule',
'ZendDeveloperTools',
'ZfcBase',
'ZfcUser',
'ZfcUserDoctrineORM',
'BjyAuthorize',
'DOMPDFModule',
'WebinoImageThumb',
//My Module
'Application',