Этот 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
Преобразовать номер разрешения на отображение строки значение ...
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);
}