PHPackages                             lexus27/php-abac - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. lexus27/php-abac

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

lexus27/php-abac
================

Library for Attribute Based Access Control \[ABAC\]

16[4 issues](https://github.com/lexus27/php-abac/issues)PHP

Since Oct 30Pushed 6y ago1 watchersCompare

[ Source](https://github.com/lexus27/php-abac)[ Packagist](https://packagist.org/packages/lexus27/php-abac)[ RSS](/packages/lexus27-php-abac/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

ABAC: Attribute Based Access Control
====================================

[](#abac-attribute-based-access-control)

Внимание! Компонент В данный момент к прямому использованию не пригоден, в связи с поставленными [Issues](https://github.com/lexus27/php-abac/issues), При желании Вы можете внести свой вклад в развитие данного компонента в конечном итоге с расчетом на результат и интегрирование с другими фреймворками и библиотеками.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[](#внимание-компонент-в-данный-момент-к-прямому-использованию-не-пригоден-в-связи-с-поставленными-issues-при-желании-вы-можете-внести-свой-вклад-в-развитие-данного-компонента-в-конечном-итоге-с-расчетом-на-результат-и-интегрирование-с-другими-фреймворками-и-библиотеками)

Определения
-----------

[](#определения)

- **Контекст** - это источник информации на момент вычисления доступа. (Что?(Объект) Кто?(Пользователь) Зачем?(Применяемое действие), Где?(Данные окружения))
- **Вычисляемый** - Объект который можно вычислить благодаря Контексту и получить Результат вычисления, субъективно, имеется ввиду что то одно из Правила, Политики или Группы политик.
- **Комбинатор** - метод перебора множества Вычисляемых, комбинирующий решения дочерних Вычисляемых поголовно, таким образом чтобы дать результирующее решение контейнера.
- **Агрегатор** - контейнер содержащий множество Вычисляемых объектов и использующий Комбинатор для результата вычисления.
- **Цель** - это абстрактный барьер перед выполнением Агрегации, является провайдером Условий.
- **Правило** - это конкретный объект вычисляющий решение, также является провайдером одного Условия.
- **Условие** - заданная сверка двух значений, значения каждого операнда(стороны сравнения) могут представлятся статично или ссылкой на Контекст.
- **Политика** - Агрегатор Правил, проверяет применимость Цели к Контексту, после чего выполняет дальнейшую Агрегацию.
- **Группа политик** - Агрегатор Политик, проверяет применимость Цели к Контексту, после чего выполняет дальнейшую Агрегацию.

Статусы возращаемые Вычисляемым
-------------------------------

[](#статусы-возращаемые-вычисляемым)

- ***NOT\_APPLICABLE*** (Не применимо) - Условия Целей или Правил не соответствуют Контексту.
- ***INDETERMINATE*** (Не определено) - Ошибка помешавшая выявить решение
- ***PERMIT*** (Разрешить) TRUE - Разрешение
- ***DENY*** (Заретить) FALSE - Запрет

Итоговое решение о предоставлении прав доступа
----------------------------------------------

[](#итоговое-решение-о-предоставлении-прав-доступа)

Итоговое решение может быть только *PERMIT* или *DENY*

- ***NOT\_APPLICABLE*** - это означает что ни один Вычисляемый не имел соответствий с Контекстом, поэтому итоговое значение будет назначено исходя из базирования менеджера(Разрешающий(Permit) или Запрещающий(Deny))
- ***INDETERMINATE*** - склонен к отказу, т.к вычислить всё до конца не удастся изза ошибки на этапах связанных с вычислениями или завершения оных.
- ***NOT\_APPLICABLE*** - Возможно интерпретировать из NULL значения, т.к NOT\_APPLICABLE является переопределяемым от контейнера (итоговое)
- ***INDETERMINATE*** - Возможно реализовать при помощи Исключений

Примеры основного определения:
------------------------------

[](#примеры-основного-определения)

```
