it-swarm-ko.tech

사용자에게 역할이 있는지 확인

사용자에게 특정 역할이 있는지 어떻게 확인할 수 있습니까?

this 찾았지만 Drupal 6.

45
giorgio79

이미 해당 게시물 을 찾았으므로 주석도 읽으십시오. 역할 확인보다 권한 확인이 권장되는 이유를 명확하게 설명합니다. 권한을 사용하면 해당 권한을 여러 역할에 할당하여 시스템을보다 유연하게 만들 수 있습니다. 또한 역할의 이름을 바꾸면 코드가 손상 될 수 있습니다.

즉, 역할을 확인하려면 다음을 수행하십시오.

// Load the currently logged in user.
global $user;

// Check if the user has the 'editor' role.
if (in_array('editor', $user->roles)) {
  // do fancy stuff
}
88
marcvangend

현재 사용자에게 단일 역할 또는 여러 역할이 있는지 확인하려면 다음을 수행하는 것이 좋습니다.

//can be used in access callback too
function user_has_role($roles) {
    //checks if user has role/roles
    return !!count(array_intersect(is_array($roles)? $roles : array($roles), array_values($GLOBALS['user']->roles)));
};

if (user_has_role(array('moderator', 'administrator'))) {
  // $user is admin or moderator
} else if(user_has_role('tester')){
  // $user is tester
} else{
  // $user is not admin and not moderator
}
11
Sadanand Kenganal

Drupal version> = 7.36 업데이트)

Drupal API https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_has_role/7 에서 user_has_role 함수를 사용할 수 있습니다. =.

이 예를보십시오 :

<?php
function MYMODULE_foo() {
  $role = user_role_load_by_name('Author');
  if (user_has_role($role->rid)) {
    // Code if user has 'Author' role...
  }
  else {
    // Code if user doesn't have 'Author' role...
  }

  $user = user_load(123);

  if(user_has_role($role->rid, $user)) {
    // Code if user has 'Author' role...
  }
  else {
    // Code if user doesn't have 'Author' role...
  }
}
?>
9
Marcin

Devel 모듈을 설치하고 dpm ($ user)을 수행 할 수 있습니다. 사용자 역할을 포함한 모든 사용자 정보가 포함 된 배열을 인쇄합니다.

이 배열에서 "역할"의 배열 위치를 찾아 모듈에서이를 사용하여 사용자 역할을 찾을 수 있습니다.

2

역할 이름이 변경되는 경우 미래를 대비하려면 데이터베이스의 역할 테이블에서 찾을 수있는 역할 ID (rid)를 확인하는 것이 가장 좋습니다.

16을 제거하여 역할을 확인하려면 다음을 수행하십시오.

// Load the currently logged in user.
global $user;

// Check if the user has the 'editor' role, when 'editor' has role id 16
if (array_key_exists(16, $user->roles)) {
  // do fancy stuff
}
1
Hans Rossel

다음은 comment 의 실제 코드이며 허용되는 답변에서 모범 사례라고합니다.

<?php
  function mymodule_perm() {
    return array('access something special');
  }

  function dosomethingspecial() {
    // For current user
    if (user_access('access something special')) {
      // Doing something special!
    }

    // For a specific user
    if (user_access('access something special', $theuser)) {
      // Doing something special!
    }
  }
?>
1
Eric Johnson

Print_r ($ user)로 사용자의 역할을 확인할 수 있으며 출력에서 ​​이와 같은 것을 얻을 수 있습니다

 stdClass 개체 
 (
 [uid] => 0 
 [호스트 이름] => :: 1 
 [역할] => 배열 
 (
 [1] => anonymous user // 귀하의 경우 현재 사용자 역할은 익명입니다. 
) 
0
akash bhawra
global $user;
$roleid = 123; //
if(user_has_role($roleid, $user)) {
//yes this user has this role
}
0
adal

사용자에게 특정 역할이 있는지 확인하려면 다음을 수행하십시오.

function test_role(){
   global $user;
   if(isset($user->roles['my_role'])){
     return true;
   }
   else {
    return false;
 }
}
0
houmem

위의 답변은 효과가 없었습니다. 확실하지 않습니다 .- post 이 코드는`

// $ user에 관리자 역할이 있는지 확인하십시오. if (in_array ( 'administrator', array_values ​​($ user-> roles))) {// 무언가를합니다. }?>`

0
pinueve