2015-10-17 2 views
0

Этот SQL-запрос для системы ACL SugarCRM получает разрешения для каждого модуля, которые установлены для определенного списка доступа acl access.В ролях доступа к ресурсу SugarCRM ACL, что имеет приоритет, когда более одного списка задают одно и то же разрешение?

В столбце aclAccess и access_override установлено числовое значение, которое определяет разрешение этого модуля для пользователей, принадлежащих к этому списку контроля доступа.

Проблема, которую я имею, может принадлежать нескольким спискам доступа.

Предполагает, что пользователь принадлежит к 2 спискам, которые устанавливают другое разрешение на действие модуля.

Как я могу определить, какой из них применять и использовать для пользователя? Есть идеи?

Когда две или более роли доступа ACL устанавливают разные значения полномочий модуля в модуле, а пользователь принадлежит к этим ролям, какое разрешение имеет приоритет для использования?


Пример

, если я принадлежу к ACL роли доступа А и В и А наборах не приводят редактировать разрешение на нет и B устанавливает его ... Да я получил бы да или нет разрешения на редактирование для моего пользователя?


Это SQL возвращает разрешение на прилагаемую ACL Список доступа
Так что я бы запустить этот запрос на каждый список пользователь принадлежит, чтобы получить там разрешение.

Моя проблема в том, что более 1 из этих списков устанавливают разрешения для модуля, которые конфликтуют друг с другом. В этом случае я не знаю, какой из них следует применять к разрешению ACL пользователей для просмотра страниц.

SELECT acl_actions.* 
,acl_roles_actions.access_override 
FROM acl_actions 
LEFT JOIN acl_roles_actions ON acl_roles_actions.role_id = '9eda04a8-a1b7-071b-3f2f-558f5c1aaec0' AND acl_roles_actions.action_id = acl_actions.id AND acl_roles_actions.deleted = 0 
WHERE acl_actions.deleted=0 
AND category='apoll_Web_Projects' 
OR category='apoll_Web_Project_Files' 
OR category='ProjectGanttChart' 
ORDER BY acl_actions.category, acl_actions.name 

view full size image enter image description here


Преобразовать номер разрешения на отображение строки значение ...

if(!defined('ACL_ALLOW_NONE')){ 
    define('ACL_ALLOW_ADMIN_DEV', 100); 
    define('ACL_ALLOW_ADMIN', 99); 
    define('ACL_ALLOW_ALL', 90); 
    define('ACL_ALLOW_ENABLED', 89); 
    define('ACL_ALLOW_OWNER', 75); 
    define('ACL_ALLOW_NORMAL', 1); 
    define('ACL_ALLOW_DEFAULT', 0); 
    define('ACL_ALLOW_DISABLED', -98); 
    define('ACL_ALLOW_NONE', -99); 
    define('ACL_ALLOW_DEV', 95); 
} 

ответ

0

Наиболее ограничительным следует применять.

Когда пользователь принадлежит нескольким ролям, преобладает более ограничительная настройка. Например, если пользователю назначена одна роль, которая ограничивает удаление учетных записей, и тот же пользователь также назначается роли, которая позволяет удалять учетные записи, пользователь не сможет удалять учетные записи, поскольку Sugar признает наиболее ограничительные аспекты каждого назначенного роль. Права доступа для определенного пользователя отображаются в их представлении записи модуля Sugar Users.

https://support.sugarcrm.com/Knowledge_Base/Administration/Role_Management/Introduction_to_Roles/#Assigning_Multiple_Roles_to_a_User