Drupal 7 - Dê permissão para gerenciar usuários, mas não permissões

11

Configuramos um site no Drupal 7 no qual gostaríamos que certos usuários tivessem acesso à página de gerenciamento de usuários e pudéssemos criar novos usuários, atribuir funções etc., mas não queremos dar a eles acesso ao Páginas Funções e Permissões.

Atualmente, o Drupal possui apenas 2 permissões Administer Permissionse Administer users.

Com a Administer userspermissão, o usuário tem acesso à página Gerenciamento de usuários e pode criar novos usuários, mas não pode atribuir funções aos usuários.

Se o usuário tiver a Administer permissionspermissão, ele poderá atribuir funções aos usuários e também acessar as páginas de permissão e gerenciamento de funções.

Como você concederia a um usuário o direito de atribuir funções a ele, mas impediria que ele acessasse a página de permissão?

E. de Saint Chamas
fonte

Respostas:

16

Eu tinha exatamente o mesmo requisito e pude usar o módulo de delegação de funções para construí-lo com perfeição :-)

Aqui está o meu cenário para fornecer mais contexto -

  1. Eu tinha um site drupal com funções - A, B, C, Admin, Manutenção
  2. Eu queria que os usuários com a função Maint pudessem criar novos usuários e também lhes atribuir funções ao fazê-lo
  3. Eu também queria limitar os usuários do Maint para poder atribuir apenas as funções A, B, C aos novos usuários e não a função Admin
  4. Tudo isso com apenas alguns cliques no módulo Delegação de Funções

Espero que isto ajude.

Sumeet Pareek
fonte
1
Usando a delegação de funções Parece que não consigo configurar quem pode criar usuários. Eles podem editá-los para atribuir funções, mas não criá-los. Estou esquecendo de algo?
precisa saber é o seguinte
2

Hummm ... Interessante que não parece haver uma maneira clara de fazer isso. Parece que isso pode ser um recurso comum para as pessoas. Encontrei algumas soluções:

http://drupal.org/project/protect_permissions - No entanto, isso ainda não está pronto para uso em produção.

No entanto, acho que você pode conseguir o que deseja com: http://drupal.org/project/permissions_lock

Você também precisará de: http://drupal.org/project/user_permissions

O último parece fazer o oposto do que você quer, mas o primeiro parece fazer exatamente o que você quer. Eu não testei nenhum deles no meu site de desenvolvimento para garantir 100%, é o que funcionará para você. Se eu encontrar alguma outra coisa, atualizarei esta resposta.

Brandon Bearden
fonte
1
Também comecei a pensar nas mesmas linhas que você sugeriu, mas depois encontrei o módulo Delegação de Funções ( drupal.org/project/role_delegation ). Verifique para esse tipo de requisitos. Isso funciona muito bem.
Sumeet Pareek
Impressionante! Eu marquei isso, boa descoberta.
precisa
2

A delegação de funções deixa uma brecha na segurança. Você precisa atribuir às pessoas os usuários administrativos para que eles possam usar a página de administração e as ferramentas que ela possui.

Mas se você fizer isso, essa função poderá editar até superadmin. Verifique a permissão de Cuidado com o administrador do Drupal para obter uma descrição completa.

Minha solução é delegação de funções + este gancho


function hook_user_presave(&$edit, $account, $category) {
    if( $account->uid == 1 || in_array('adminrole',$account->roles)){ //trying to edit an admin
        global $user;
        if($user->uid != 1){//only super admin can do that
            drupal_set_message( "You attempted to edit an admin or dev user name and you are not allowed, this attempt was logged." ,'error');
            watchdog('permissions_extra','Logged in user %user tried to edit account %account', array('%user' => $user->uid, '%account' => $account->uid), WATCHDOG_ERROR);
            drupal_goto('/admin/people');
        }
    }
}
Anthony Phillips
fonte
0

Ultimamente, estamos usando o módulo de transferência automática , que faz exatamente o que você está pedindo. É fundamentalmente idêntico ao módulo role_delegation, mas pode ser uma alternativa se você precisar de algo um pouco diferente.

Uma diferença importante é como você decide quais funções estão disponíveis para serem atribuídas. Com a roleassign, você apenas seleciona quais deseja disponibilizar e adiciona apenas uma nova permissão para atribuir essas funções: roleassign

O módulo role_delegation parece conceder uma nova permissão para cada função existente no site: Permissões do módulo role_delegation

O módulo role_delegation também parece ter quase o triplo do número de instalações e uma versão "recomendada" do Drupal 8. A fila de problemas também parece estar em melhor forma, portanto é provavelmente a melhor opção?

davidneedham
fonte