I run my console command, the errors:
d:\xampp\htdocs\trackstar>protected\yiic shell
Yii Interactive Tool v1.1 (based on Yii v1.1.15-dev)
Please type ‘help’ for help. Type ‘exit’ to quit.
>> rbac
exception ‘CDbException’ with message 'CDbCommand failed to execute the SQL statement: SQLSTATE[3D00
0]: Invalid catalog name: 1046 No database selected. The SQL statement executed was: DELETE FROM `Au
thAssignment`’ in D:\xampp\htdocs\YII\framework\db\CDbCommand.php:358
Stack trace:
#0 D:\xampp\htdocs\YII\framework\db\CDbCommand.php(1300): CDbCommand->execute(Array)
#1 D:\xampp\htdocs\YII\framework\web\auth\CDbAuthManager.php(560): CDbCommand->delete('AuthAssignmen
t’)
#2 D:\xampp\htdocs\YII\framework\web\auth\CDbAuthManager.php(550): CDbAuthManager->clearAuthAssignme
nts()
#3 D:\xampp\htdocs\trackstar\protected\commands\shell\RbacCommand.php(23): CDbAuthManager->clearAll(
)
#4 D:\xampp\htdocs\trackstar\protected\commands\shell\RbacCommand.php(102): RbacCommand->actionCreat
eRBAC()
#5 D:\xampp\htdocs\YII\framework\cli\commands\ShellCommand.php(125): RbacCommand->run(Array)
#6 D:\xampp\htdocs\YII\framework\cli\commands\ShellCommand.php(99): ShellCommand->runShell()
#7 D:\xampp\htdocs\YII\framework\console\CConsoleCommandRunner.php(71): ShellCommand->run(Array)
#8 D:\xampp\htdocs\YII\framework\console\CConsoleApplication.php(92): CConsoleCommandRunner->run(Arr
ay)
#9 D:\xampp\htdocs\YII\framework\base\CApplication.php(180): CConsoleApplication->processRequest()
#10 D:\xampp\htdocs\YII\framework\yiic.php(33): CApplication->run()
#11 D:\xampp\htdocs\trackstar\protected\yiic.php(7): require_once(‘D:\xampp\htdocs…’)
#12 {main}
<?php
class RbacCommand extends CConsoleCommand{
private $_authManager;
public function getHelp(){
if (($this->_authManager = Yii::app()->authManager) === null){
echo <<<END
Error: There is no authManager object.
Please configure a component named 'authManager' in main.php.
END;
}
echo <<<END
This command will create three role: reader, member, owner
and following permission:
create,read,update,delete project
create,read,update,delete issue
create,read,update,delete user\n
END;
}
/**
* create role, permission and operation
*/
public function actionCreateRBAC(){
$this->_authManager->clearAll();
$roleAdmin = $this->_authManager->createRole('admin', 'administor');
$roleReader = $this->_authManager->createRole('reader', 'reader of project');
$roleMember = $this->_authManager->createRole('member', 'member of project');
$roleOwner = $this->_authManager->createRole('owner', 'administrator');
$roleProject = $this->_authManager->createRole('projectAdmin', 'project admin');
$roleIssue = $this->_authManager->createRole('issueAdmin', 'issue admin');
$roleUser = $this->_authManager->createRole('memberAdmin', 'user admin');
$taskSystem = $this->_authManager->createTask('systemManage', 'System task');
$taskProject = $this->_authManager->createTask('projectManage', 'Project manage');
$taskIssue = $this->_authManager->createTask('issueManage', 'Issue manage');
$taskMember = $this->_authManager->createTask('memberManage', 'Member manage');
$taskSystem->addChild('projectManage');
$taskSystem->addChild('issueManage');
$taskSystem->addChild('memberManage');
$readIssue = $this->_authManager->createOperation('readIssue', 'Read issue');
$createIssue = $this->_authManager->createOperation('createIssue', 'create issue');
$updateIssue = $this->_authManager->createOperation('updateIssue', 'update issue');
$deleteIssue = $this->_authManager->createOperation('deleteIssue', 'delete issue');
$readProject = $this->_authManager->createOperation('readProject', 'Read project');
$createProject = $this->_authManager->createOperation('createProject', 'create project');
$updateProject = $this->_authManager->createOperation('updateProject', 'update project');
$deleteProject = $this->_authManager->createOperation('deleteProject', 'delete project');
$readMember = $this->_authManager->createOperation('readMember', 'Read member');
$createMember = $this->_authManager->createOperation('createMember', 'create member');
$updateMember = $this->_authManager->createOperation('updateMember', 'update member');
$deleteMember = $this->_authManager->createOperation('deleteMember', 'delete member');
$taskIssue->addChild('readIssue');
$taskIssue->addChild('createIssue');
$taskIssue->addChild('updateIssue');
$taskIssue->addChild('deleteIssue');
$taskProject->addChild('readProject');
$taskProject->addChild('createProject');
$taskProject->addChild('updateProject');
$taskProject->addChild('deleteProject');
$taskMember->addChild('readMember');
$taskMember->addChild('createMember');
$taskMember->addChild('updateMember');
$taskMember->addChild('deleteMember');
$roleProject->addChild('projectManage');
$roleIssue->addChild('issueManage');
$roleUser->addChild('memberManage');
$roleReader->addChild('readIssue');
$roleReader->addChild('readProject');
$roleReader->addChild('readMember');
$roleMember->addChild('reader');
$roleMember->addChild('createIssue');
$roleMember->addChild('updateIssue');
$roleMember->addChild('deleteIssue');
$roleOwner->addChild('member');
$roleOwner->addChild('createProject');
$roleOwner->addChild('updateProject');
$roleOwner->addChild('deleteProject');
$roleAdmin->addChild('reader');
$roleAdmin->addChild('member');
$roleAdmin->addChild('owner');
$roleAdmin->addChild('projectAdmin');
$roleAdmin->addChild('issueAdmin');
$roleAdmin->addChild('memberAdmin');
$this->_authManager->save();
echo 'Roles and Permission have been generated successfully.';
}
public function run($args){
$this->actionCreateRBAC();
}
}
my config/console.php
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'name'=>'My Console Application',
// preloading 'log' component
'preload'=>array('log'),
// application components
'components'=>array(
'db'=>array(
'connectionString' => 'mysql:host=xxxx;dbname=trackstar_test',
'emulatePrepare' => true,
'username' => 'root',
'password' => '********************',
'charset' => 'utf8',
'tablePrefix' => 'tbl_',
),
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning',
),
),
),
//RBAC configuration
'authManager' => array(
'class' => 'CDbAuthManager',
'connectionID' => 'db',
),
),
);