프로그래밍 방식으로 사용자 역할 할당


12

내 웹 사이트에 여러 역할이 있으며 일부 사용자가 내 사이트에 등록 할 때 특정 역할을 지정하려고합니다.

신규 사용자가 등록 양식을 제출할 때 프로그래밍 방식으로 특정 역할을 할당하려면 어떻게해야합니까?
logintoboggan, autoassignrole과 같은 모듈을 사용해 보았지만 사이트에 등록하는 모든 사용자가 아닌 특정 사용자에게 역할을 할당하려는 경우 등록시 기본 사용자 역할을 제공합니다.

답변:


10

이것을 "프로그래밍 방식"으로 간주하지는 않지만 규칙 모듈을 사용하여 이를 수행 할 수 있습니다 .

"새 사용자 계정을 저장 한 후"이벤트에 모듈을 설치하고 새 규칙을 작성하십시오. 작업의 경우 사용자 역할을 ABC로 설정하려고합니다 (ABC는 할당하려는 역할).

조건을 추가하여 특정 사용자로 역할을 제한 할 수 있습니다. 예를 들어, 사용자가 등록 양식에서 특정 값을 선택한 경우에만 "데이터 비교"조건을 사용하여 규칙을 적용 할 수 있습니다 (상세 예 : 등록시 성별을 "여성"으로 선택한 사용자에게만 규칙을 제한하십시오. ).

수여하려는 각 조건 / 역할 조합에 대한 규칙을 만들어야합니다. 그러나 규칙은 널리 사용되는 모듈이며 수동으로 또는 기능 모듈과 함께 내보낼 수 있으므로 많은 유연성을 제공합니다.


13

또한 user_multiple_role_edit () 함수 로이 작업을 해결했습니다 . 우리의 유스 케이스에서는 레지스터 양식에 반응하지 않고 사용자를 즉시 ​​생성하기 위해 특별한 메뉴 콜백에 반응했습니다.

첫째 : 사용자 만들기

$user = new stdClass();
$user->name = $name;
$user->status = 1;
user_save($user);

둘째 : 사용자를 역할에 할당

$role = user_role_load_by_name("my custom role");
user_multiple_role_edit(array($user->uid), 'add_role', $role->rid);

5

기본 역할 4, 5 및 6이됩니다.

function mymodule_form_user_register_form_alter(&$form, &$form_state, $form_id){
    $form['account']['roles']['#default_value'][] = '4';
    $form['account']['roles']['#default_value'][] = '5';
    $form['account']['roles']['#default_value'][] = '6';
}

2

필자의 경우에는 profile2 프로파일이 4 개 밖에 없었지만 등록 양식에 특정 값이 있으면 새 역할에 추가해야했습니다. 여기 내가 한 일이 있습니다.

<?php 
function MYMODULE_user_insert(&$edit, $account, $category){
  if (array_key_exists('profile_club', $account)) {
    $is_uni = FALSE;
    if ($account->profile_club['field_uni_club']['und'][0]['value'] == 1 ) {
      $is_uni = TRUE;
    }
    if ($is_uni) {
      $uid = $account->uid;
      $role_name = 'uni_club';
      if ($role = user_role_load_by_name($role_name)) {
        user_multiple_role_edit(array($uid), 'add_role', $role->rid);
      }
    }
  }
}
?>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.