2011-11-07 61 views
0

我有一个超过20个角色和权限的相当大的网站。然而,它始终是相同的权限,但取决于谁创建的内容,权限不同...配置具有相同权限的多个角色

所以我现在做的是这样的:

// Make the new role 
    $role = new stdClass; 
    $role->name = 'Redacteur 1'; 
    $role->weight = 3; 
    user_role_save($role); 

    // Permissions to assign to the role. 
    // Note these are defined in hook_permission() 
    $perms = array(
    'access content','access content overview' 
    ); 

    // Grant the permissions. This function takes care of all necessary cache resets 
    user_role_grant_permissions($role->rid, $perms); 

    // Make the new role 
    $role = new stdClass; 
    $role->name = 'Redacteur 2'; 
    $role->weight = 3; 
    user_role_save($role); 

    // Permissions to assign to the role. 
    // Note these are defined in hook_permission() 
    $perms = array(
    'access content','access content overview' 
    ); 

    // Grant the permissions. This function takes care of all necessary cache resets 
    user_role_grant_permissions($role->rid, $perms); 

难道没有办法做这与某种阵列,所以我不会结束1000行代码。当你想改变某些权限时,你必须修改所有角色......这样做一定比较容易。有什么建议?

回答

0

我写了一些默认功能acomplish这一目标:

function _load_permission_settings($role_index = null) { 
    // Blocks 
    $perms['administer blocks'] =   array(0, 0, 0); 
    // Comments 
    $perms['administer comments'] =   array(0, 1, 0); 
    $perms['access comments'] =    array(1, 1, 1); 
    $perms['post comments'] =    array(1, 1, 1); 
    $perms['skip comment approval'] =  array(1, 1, 1); 
    $perms['edit own comments'] =   array(1, 1, 1); 
     ... 


function _create_users() { 
    require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc'); 

    $roles = user_roles(true); 

    $users[] = array('an', array(3)); 
    $users[] = array('ben', array(4, 6, 8)); 
    ... 

function _set_roles_and_permissions() { 
    // Enable default permissions for system roles. 
    user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access content')); 
    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, _load_permission_settings(0)); 

    // Permissions to assign to the roles. (all Thema-related roles share the same permissions) 
    $perms_eind = _load_permission_settings(1); 
    $perms_red = _load_permission_settings(2); 

    $user_roles = _load_thema_user_role_names(''); 
    foreach ($user_roles as $name) { 
     // Role1 
      $role = new stdClass; 
     $role->name = 'Role 1 - ' . $name; 
     user_role_save($role); 
     user_role_grant_permissions($role->rid, $perms_eind); 
     // Role2 
     $role = new stdClass; 
     $role->name = 'Role 2 - ' . $name; 
     user_role_save($role); 
     user_role_grant_permissions($role->rid, $perms_red); 
    } 
} 
0

您可以更改数据库中的字段。我希望我可以帮助你更多,但我只做了小调整。

相关问题