I have a completely running mvc application on ZF2. I want to run some actions from command line. I have properly set up my console routes and other environments. When I run my app from CLI, I got Permission denied exception like this:
'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
I already have some user in my database. How can I use those credentials to authorize a CLI user to run Actions?
Edit:
Following is the guards array in bjyauthorize.global.php for mentioned controller.
'guards' => array(
'BjyAuthorize\Guard\Controller' => array(array('controller' => 'GeneratePdf\Controller\GeneratePdf', 'roles' => array('admin', 'letters_admin'))
I have used ZfcUser as well. How can I pass user login credentials from CLI. Or if there is any way to use user session from cli.
Thanks
I found the solution. I am not able to give permission for cli user but it has done by disabling bjyAuthorize while running from CLI.
I found solution on this: How to use BjyAuthorize in ZF2 CLI application?
Here is the explanation for others if they found this issue:
To disable bjyAuthorize while running from cli, we can do like below in application.config.php.
Do not add "BjyAuthorize" and "BjyProfiler" in your application.config.php array initially. Check for console, if not console access then add them in $config array.
if (!Console::isConsole()) {
array_unshift($config['modules'], 'BjyAuthorize');
array_unshift($config['modules'], 'BjyProfiler');
}
return $config;
Also it is necessary to check Console in Application/Module.php's onBootstrap method like below
if (!Console::isConsole()) {
$authorize = $sm->get('BjyAuthorize\Service\Authorize');
$acl = $authorize->getAcl();
$role = $authorize->getIdentity();
}
Last but not least, do not forget to import Console class:
use Zend\Console\Console;