보다 쉬운 설치를 위해 프로그래밍 방식으로 일부 역할에 할당 할 권한이 있습니다.
모듈을 설치하고 권한과 역할을 모두 생성하기 때문에 권한을 설정하려는 역할 ID가 없습니다. 지금까지는 역할 ID가 필요한 프로그래밍 방식으로 역할 을 할당 하는 방법 만 찾았습니다 .
어떻게 든 이름 (문자열)으로 역할을 조회하고 역할 ID를 검색 한 다음 권한을 할당 할 수 있는지 궁금합니다. 기분이 좋지 않습니다.
보다 쉬운 설치를 위해 프로그래밍 방식으로 일부 역할에 할당 할 권한이 있습니다.
모듈을 설치하고 권한과 역할을 모두 생성하기 때문에 권한을 설정하려는 역할 ID가 없습니다. 지금까지는 역할 ID가 필요한 프로그래밍 방식으로 역할 을 할당 하는 방법 만 찾았습니다 .
어떻게 든 이름 (문자열)으로 역할을 조회하고 역할 ID를 검색 한 다음 권한을 할당 할 수 있는지 궁금합니다. 기분이 좋지 않습니다.
답변:
기능 모듈은이 기능을 매우 잘 수행하므로 한 번에 역할과 권한 (및 기타 여러 가지)을 한 번에 내보낼 수 있습니다.
http://drupal.org/project/features
그러나 자신의 롤아웃 권한 API를 롤링하려면 다음을 수행하십시오.
기능은 이와 같은 것들에 매우 편리합니다. 그러나 프로그래밍 방식으로 역할을 만들고 권한을 추가해야하는 경우에는 데이터베이스를 직접 파헤칠 필요가 없습니다.
로 새 사용자 역할을 만들면 user_role_save()
지정된 새 사용자 역할 ID로 전달한 객체가 업데이트됩니다. standard_install()
표준 설치 프로파일 의 기능 에서이 예를 볼 수 있습니다 .
$admin_role = new stdClass();
$admin_role->name = 'administrator';
...
user_role_save($admin_role);
user_role_grant_permissions($admin_role->rid, array_keys(module_invoke_all('permission')));
이 예는 새 사용자 역할을 만든 다음 rid
에 채워진 해당 속성에 액세스 할 수 있음을 보여줍니다 user_role_save()
. 또한을 사용하여 해당 역할에 권한을 추가하는 방법도 보여줍니다 user_role_grant_permissions()
. 이 경우 '관리자'역할에 사용 가능한 모든 권한이 부여됩니다.
다른 사람이 작성한 사용자 역할의 ID user_role_load_by_name()
를 가져와야하는 경우 해당 사용자 역할의 오브젝트를 얻는 데 사용할 수 있습니다 . 그런 다음으로 ID를 가져옵니다 $role->rid
.
프로그래밍 방식으로 기존 역할에 권한을 할당하는 방법에 대한 원래 질문에 더 가까운 코드 예제를 추가하고 싶습니다.
이름으로 역할을 찾고 역할 ID를 검색 한 후 다음과 같이 권한을 할당 할 수 있습니다 (예 : hook_update 구현).
function custommodule_update_7001() {
$permissions = array('view my custom entity');
foreach(array('anonymous user', 'authenticated user') as $role_name) {
$role = user_role_load_by_name($role_name);
user_role_grant_permissions($role->rid, $permissions);
}
}