La concessione di un ruolo Drupal a tutti gli utenti che hanno un certo ruolo

StackOverflow https://stackoverflow.com/questions/1669785

  •  13-09-2019
  •  | 
  •  

Domanda

Ho bisogno di applicare automaticamente un ruolo, Ruolo X, a tutti gli utenti Drupal cui è stato concesso un ruolo distinto, Y. Ruolo In altre parole, vorrei che per il ruolo X per essere un sottoinsieme di Y. Ruolo Come posso fare questo?

È stato utile?

Soluzione

Si potrebbe implementare hook_user() in un modulo personalizzato. Sul 'inserto' e / o azione 'update', che ci si controlla per il ruolo Y nella matrice $account->roles. Se presente, aggiungere il ruolo X se non è già lì. Ciò garantirebbe che la regola viene applicata ogni volta che un account utente viene creato e / o modificato.

Per un / un'operazione volta bootstrap, un'occhiata a user_multiple_role_edit() . Esso consente di aggiungere o rimuovere i ruoli per una serie di user id. In alternativa, è possibile farlo direttamente nel database:

INSERT INTO users_roles (uid, rid)
  SELECT uid, [roleX_ID] AS rid FROM users_roles
    WHERE uid IN
      (SELECT uid FROM users_roles WHERE rid = [roleY_ID])
    AND uid NOT IN
      (SELECT uid FROM users_roles WHERE rid = [roleX_ID])
;

Altri suggerimenti

Sono d'accordo con Henrik Opel sull'utilizzo hook_user in un modulo personalizzato sarebbe una buona soluzione per mantenere gli utenti e assicurarsi che siano aggiornati per tutto il tempo.

Normalmente non mi dispiacerebbe scrivere SQL o qualcosa di simile, ma in questo caso, dal momento che è su un sito di produzione, io preferirei un percorso diverso, dal momento che se qualcosa può facilmente andare storto durante la scrittura di SQL prime, un po 'di errore di battitura posso causare grossi problemi. Un altro buon punto è che si può incorrere in problemi come Drupal non sarà a conoscenza di ciò che SQL prime si esegue sul database e potrebbe ottenere dalla sincronizzazione con alcuni processi, ganci e altri processi che è normalmente corrono quando si fanno le cose attraverso l'API di Drupal.

Invece è possibile utilizzare l'interfaccia utente Drupal. Io in realtà penso che in questo caso, è il semplice modo per fare quello che vuoi. Semplicemente filtrare tutti gli utenti che sono gli studenti. Fare clic su tutti gli utenti e dare loro il ruolo membro. Questo viene fatto con pochi clic in pochissimo tempo, ed è molto sicuro in quanto Drupal gestirà tutto lo SQL per voi.

Aggiornamento
Con che molti utenti, sono sorpreso che non si dispone di un'impostazione di pagina utente personalizzata e gestione di contenuti utilizzando views_bulk_operations . Utilizzando un paio di minuti, è possibile impostare una pagina di amministrazione, che è possibile utilizzare per preforme operazioni di massa come cambiare lo stato dell'utente, ruoli, o svolgere compiti simili per i nodi. È possibile creare i propri filtri usando Visto esposti i filtri. Quindi, con pochi click è possibile selezionare tutti gli utenti con il ruolo di studente e che non è membro, selezionarli tutti e aggiungere il rotolo membro a loro. Il vantaggio facendo questo non solo che è veloce e sicura è, ma è possibile creare alcune pagine che gestiscono piacevole per i vostri amministratori del sito, creatori di contenuti, ecc Si dovrebbe prendere in considerazione esaminando questo modulo.

Il modulo LDAP consente di assegnare dinamicamente i ruoli sulla base di DN. Ho dovuto scrivere il mio modulo che è su misura per il nostro sistema, altrimenti sarei più che felice di condividere.

testo del link

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top