Drupal虽然提供了界面操作用户和拥护权限,但有时候需要通过程序自动创建新角色和管理权限,下面就通过程序新增角色和管理角色权限。
Drupal上角色是保存在role表,而角色的权限则是保存在role_permission表。现在知道了保存的位置,程序上的实现就简单了。
$values = array();
$config['新角色']['permission'] = array(
1 => array('node' => 'access content')
);
if(isset($role_config[$role_name])) {
$transaction = isset($transaction) ? $transaction : db_transaction();
try{
$insert = db_insert('role');//创建角色
$state = $insert->fields(array(
'name' => $role_name,
'weight'=> 100,
))->execute();
if($state) {
foreach($role_config[$role_name]['permission'] as $val_arr) {
foreach($val_arr as $module => $permission) {
$values[] = array(
'rid' => $state,
'permission'=> $permission,
'module' => $module
);
}
}
$insert2 = db_insert('role_permission');//勾选角色拥有的权限
$insert2->fields(array('rid', 'permission','module'));
foreach($values as $value) {
$insert2->values($value);
}
$insert2->execute();
}
}catch(Exception $e) {
$transaction->rollback();
}
}