From 92f5f4919f38a7f28532b1ca76e4847d92d1c5ef Mon Sep 17 00:00:00 2001 From: Andy Rigby Date: Fri, 6 Mar 2015 11:47:45 +0000 Subject: [PATCH] Issue #2447209: Only set permissions for roles defined in hook_apps_app_info() Don't unset permissions for roles not specified. --- apps.module | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/apps.module b/apps.module index 63043a5..3d7fae0 100644 --- a/apps.module +++ b/apps.module @@ -698,21 +698,24 @@ function apps_app_configure_permissions($app) { $modules = user_permission_get_modules(); if (!empty($app['permissions'])) { $roles_to_permissions = array(); - $roles = user_roles(); $warned = array(); - foreach ($roles as $rid => $role_name) { - foreach ($app['permissions'] as $perm_name => $default_roles) { - if (empty($modules[$perm_name]) && empty($warned[$perm_name])) { - $warned[$perm_name] = TRUE; - $args = array('!name' => $perm_name, '!module' => $app['machine_name']); - $msg = t('Warning in apps configuration of !module. No module defines permission "!name".', $args); - drupal_set_message($msg, 'warning'); - } - else { - $roles_to_permissions[$rid][$perm_name] = in_array($role_name, $default_roles); + foreach ($app['permissions'] as $perm_name => $default_roles) { + if (empty($modules[$perm_name]) && empty($warned[$perm_name])) { + $warned[$perm_name] = TRUE; + $args = array('!name' => $perm_name, '!module' => $app['machine_name']); + $msg = t('Warning in apps configuration of !module. No module defines permission "!name".', $args); + drupal_set_message($msg, 'warning'); + } + else { + foreach ($default_roles as $role_name) { + $role = user_role_load_by_name($role_name); + if (isset($role)) { + $roles_to_permissions[$role->rid][$perm_name] = TRUE; + } } } } + foreach ($roles_to_permissions as $rid => $permissions) { user_role_change_permissions($rid, $permissions); } -- 1.9.3 (Apple Git-50)