پرش به محتویات

۳. بسته‌ها

بسته همان Group در Django است: مجوزهایی که با هم داده می‌شوند. هر مجوزی که در آن است یک دامنه دارد - اینکه به کدام ردیف‌ها می‌رسد. هر شخص همان چیزی را دارد که بسته‌هایش به او می‌دهند.

فهرست

دسترسی، بسته‌ها:

بسته‌های فروشگاه

یک بسته

یک بسته یک جدول است: در هر ردیف یک مدل، در هر ستون یک اکشن، و کنار هر مجوزی که داده شده یک دامنه. بسته‌ی Branch managers در فروشگاه view، edit، approve و print_invoice را روی سفارش‌ها می‌دهد، هر کدام در دامنه‌ی سفارش‌های شعبه‌شان:

جدول بسته‌ی Branch managers

اکشنی که در چهار ستون نیست - approve، قیمت، اکشنی که در کد پیدا شده - زیر مجوزهای دیگر، در سطر خود مدل است. زیر جدول، صفحه دارندگان بسته را فهرست می‌کند.

یک شخص

دسترسی، افراد، و یک شخص: نقش‌هایش، بسته‌هایش، مجوزهایی که مستقیم به خودش داده شده، آنچه از او گرفته شده - و آنچه در نهایت اجازه دارد، با اینکه هر مجوز از کجا آمده:

آنچه north_manager در نهایت اجازه دارد، و اینکه هر کدام از کجا آمده

از همین صفحه یک بسته داده می‌شود، و یک مجوز به یک شخص داده یا از او گرفته می‌شود، هر چه بسته‌هایش بگویند، همراه با دلیل گرفتن آن.

در کد

صفحه‌ها AccessService را صدا می‌زنند؛ یک پروژه هم می‌تواند:

from clearance.services import AccessService

access = AccessService(actor=request.user)

managers = access.create_bundle(
    'Branch managers',
    grants={'shop.order_view': 'branch', 'shop.order_edit': 'branch'},
)
access.give_bundle(person, managers)
access.revoke(person, 'shop.order_edit', reason='Under review')

کسی که تغییری می‌دهد نمی‌تواند بیشتر از آنچه خودش دارد بدهد، و نمی‌تواند دسترسی خودش را تغییر دهد: هر بار از actor پرسیده می‌شود.