2011-11-07 63 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

您可以更改數據庫中的字段。我希望我可以幫助你更多,但我只做了小調整。

相關問題