Attribute-based access control for Django
Само правило состоит из нескольких частей:
Бизнес-правила могут быть как разрешающими, так и запрещающими. Для указания этого в правиле существует еще одна часть — эффект (effect). Он может принимать значения «разрешить» (permit) или «запретить» (deny). Самое главное, что нужно знать: эффект правила срабатывает только в случае положительного вычисления (evaluate) этого правила. То есть эффект применяется только в случае, когда результатом вычисления логического условия в цели и в условии будет «истина» (true). В случае, когда результатом вычисления логического выражения цели или условия является «ложь» (false), результатом оценки правила будет «не применимо» (not applicable). Если же в процессе вычисления логического условия цели или условия произошла ошибка, то результат оценки правила будет «не определен» (indeterminate). Таким образом, результатом вычисления правила может быть одно из четырех значений: «разрешить», «запретить», «не применимо», «не определено».
В Python стиле это можно записать следующим образом:
try:
if TARGET:
if CONDITION:
return EFFECT
return NOT_APPLICABLE
except:
return INDETERMINATE