특정 역할을하는 모든 사용자에게 드 루 팔 역할 부여

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

  •  13-09-2019
  •  | 
  •  

문제

별도의 역할, 역할 Y를 부여받은 모든 Drupal 사용자에게 역할 X 역할 X를 자동으로 적용해야합니다. 다시 말해, 역할 X가 역할 Y의 하위 집합이되기를 바랍니다. 어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

당신은 구현할 수 있습니다 hook_user() 사용자 정의 모듈에서. '삽입'및/또는 '업데이트'조치에서 $account->roles 정렬. 존재하는 경우 아직없는 경우 역할 X를 추가하십시오. 이렇게하면 사용자 계정이 생성 및/또는 변경 될 때마다 귀하의 규칙이 적용되도록합니다.

부트 스트래핑/한 번 작동하려면 user_multiple_role_edit(). 다양한 사용자 ID에 대한 역할을 추가하거나 제거 할 수 있습니다. 또는 데이터베이스에서 직접 수행 할 수 있습니다.

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])
;

다른 팁

사용자 정의 모듈에서 hook_user를 사용하는 데 Henrik Opel과 동의하는 것은 사용자를 유지하고 항상 최신 상태인지 확인하는 좋은 솔루션이 될 것입니다.

일반적으로 나는 SQL이나 무언가를 쓰는 것을 신경 쓰지 않을 것입니다. 그러나이 경우 생산 사이트에 있기 때문에 다른 경로를 선호합니다. 원시 SQL을 작성할 때 무언가가 쉽게 잘못 될 수 있으면 약간의 오타가 큰 문제를 일으킬 수 있기 때문입니다. . 또 다른 좋은 점은 Drupal이 데이터베이스에서 실행하는 RAW SQL을 알지 못하고 Drupal API를 통해 일을 할 때 일반적으로 실행되는 일부 프로세스, 후크 및 기타 프로세스와 동기화되지 않기 때문에 문제가 발생할 수 있다는 것입니다.

대신 Drupal 사용자 관리 인터페이스를 사용할 수 있습니다. 나는 실제로이 경우에 가장 쉬운 원하는 것을하는 방법. 학생 인 모든 사용자를 필터링하기 만하면됩니다. 모든 사용자를 클릭하고 회원 역할을 제공하십시오. 이것은 몇 번의 클릭으로 완료되며 Drupal이 모든 SQL을 처리하기 때문에 매우 안전합니다.

업데이트되었습니다
그 많은 사용자들과 함께, 당신은 사용자 정의 사용자 및 컨텐츠 관리 페이지 설정을 사용하지 않는 것에 놀랐습니다. views_bulk_operations. 몇 분을 사용하면 사용자 상태 변경, 역할 또는 노드에 대해 유사한 작업을 수행하는 등 대량 작업을 사전 형성하는 데 사용할 수있는 관리자 페이지를 설정할 수 있습니다. 노출 된 뷰 필터를 사용하여 고유 한 필터를 만들 수 있습니다. 따라서 몇 번의 클릭으로 학생의 역할을 가진 모든 사용자를 선택할 수 있으며 회원이 아닌 모든 사용자를 선택하고 모두 선택하고 멤버 롤을 추가하십시오. 이를 수행하는 장점은 빠르고 안전하다는 것뿐만 아니라 사이트 관리자, 콘텐츠 제작자 등을위한 멋진 관리 페이지를 만들 수 있습니다.이 모듈을 살펴 보는 것을 고려해야합니다.

LDAP 모듈을 사용하면 DN을 기준으로 역할을 동적으로 할당 할 수 있습니다. 나는 실제로 우리 시스템에 맞게 조정 된 내 자신의 모듈을 작성해야했는데, 그렇지 않으면 공유하는 것이 더 행복 할 것입니다.

링크 텍스트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top