2012.5.11 continue 1
>>> Role-based access control continue 1<<<
1. create protected/commands/shell/RbacCommand.php
内容如下:
class RbacCommand extends CConsoleCommand
{
private $_authManager;
public function getHelp()
{
return << USAGE
rbac
DESCRIPTION
This command generates an initial RBAC authorization hierarchy.
EOD;
}
/**
* Execute the action.
* @param array command line parameters specific for this command
*/
public function run($args)
{
//ensure that an authManager is defined as this is mandatory for creating an auth heirarchy
if(($this->_authManager=Yii::app()->authManager)===null)
{
echo "Error: an authorization manager, named 'authManager' must be configured to use this command.\n";
echo "If you already added 'authManager' component in application configuration,\n";
echo "please quit and re-enter the yiic shell.\n";
return;
}
//provide the opportunity for the use to abort the request
echo "This command will create three roles: Owner, Member, and Reader and the following premissions:\n";
echo "create, read, update and delete user\n";
echo "create, read, update and delete device\n";
echo "Would you like to continue? [Yes|No] ";
//check the input from the user and continue if they indicated yes to the above question
if(!strncasecmp(trim(fgets(STDIN)),'y',1))
{
//first we need to remove all operations, roles, child relationship and assignments
$this->_authManager->clearAll();
//create the lowest level operations for users
$this->_authManager->createOperation("createUser","create a new user");
$this->_authManager->createOperation("readUser","read user profile information");
$this->_authManager->createOperation("updateUser","update a users information");
$this->_authManager->createOperation("deleteUser","remove a user from a device");
//create the lowest level operations for devices
$this->_authManager->createOperation("createDevice","create a new device");
$this->_authManager->createOperation("readDevice","read device information");
$this->_authManager->createOperation("updateDevice","update device information");
$this->_authManager->createOperation("deleteDevice","delete a device");
//create the reader role and add the appropriate permissions as children to this role
$role=$this->_authManager->createRole("reader");
$role->addChild("readDevice");
//create the member role, and add the appropriate permissions, as well as the reader role itself, as children
$role=$this->_authManager->createRole("member");
$role->addChild("reader");
$role->addChild("createDevice");
$role->addChild("updateDevice");
$role->addChild("deleteDevice");
//create the owner role, and add the appropriate permissions, as well as both the reader and member roles as children
$role=$this->_authManager->createRole("owner");
$role->addChild("reader");
$role->addChild("member");
$role->addChild("createUser");
$role->addChild("updateUser");
$role->addChild("deleteUser");
//provide a message indicating success
echo "Authorization hierarchy successfully generated.";
}
}
}
2. use phpmyadmin to import sql file from C:\xampp\yii\framework\web\auth\schema-mysql.sql
C:\xampp\yii\power> yiic shell
>> rbac
>>> End of Role-based access control continue 1 <<<