Дайте разрешение bjyauthorize на запуск приложения mvc ZF2 из CLI.
У меня есть полностью запущенное приложение mvc на ZF2. Я хочу запустить некоторые действия из командной строки. Я правильно настроил консольные маршруты и другие среды. Когда я запускаю свое приложение из CLI, я получаю исключение "Отказ в разрешении", например:
'You are not authorized to access GeneratePdf\Controller\GeneratePdf\GeneratePdf:generate-all' in /var/www/zf2-reporting/module/BjyAuthorize/src/BjyAuthorize/Guard/Controller.php:172
У меня уже есть пользователь в моей базе данных. Как я могу использовать эти учетные данные для авторизации пользователя CLI для запуска Actions?
Редактировать:
Ниже приведен массив охранников в bjyauthorize.global.php для упомянутого контроллера.
'guards' => array(
'BjyAuthorize\Guard\Controller' => array(array('controller' => 'GeneratePdf\Controller\GeneratePdf', 'roles' => array('admin', 'letters_admin'))
Я также использовал ZfcUser. Как я могу передать учетные данные пользователя из CLI. Или, если есть какой-либо способ использовать пользовательскую сессию из cli.
Спасибо
1 ответ
Я нашел решение. Я не могу дать разрешение для пользователя Cli, но это было сделано путем отключения bjyAuthorize при запуске из CLI.
Я нашел решение по этому вопросу: Как использовать BjyAuthorize в приложении CLI ZF2?
Вот объяснение для других, если они нашли эту проблему:
Чтобы отключить bjyAuthorize при запуске из cli, мы можем сделать, как показано ниже, в application.config.php.
Не добавляйте изначально "BjyAuthorize" и "BjyProfiler" в массив application.config.php. Проверьте консоль, если нет доступа к консоли, добавьте их в массив $config.
if (!Console::isConsole()) {
array_unshift($config['modules'], 'BjyAuthorize');
array_unshift($config['modules'], 'BjyProfiler');
}
return $config;
Также необходимо проверить Console в методе onBootstrap Application/Module.php, как показано ниже
if (!Console::isConsole()) {
$authorize = $sm->get('BjyAuthorize\Service\Authorize');
$acl = $authorize->getAcl();
$role = $authorize->getIdentity();
}
И последнее, но не менее важное: не забудьте импортировать класс консоли:
use Zend\Console\Console;