نصب¶
۱. نصب بسته¶
pip install django-clearance # with Django's views and admin site
pip install 'django-clearance[drf]' # and Django REST framework
[drf] یک extra است: همان بسته، که Django REST framework هم کنارش نصب
میشود. پروژهای که API ندارد آن را نمینویسد.
۲. اضافه کردن به تنظیمات¶
INSTALLED_APPS = [
'clearance.admin.apps.ClearanceAdminConfig', # instead of 'django.contrib.admin'
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'clearance',
'clearance.roles', # optional: roles and ceilings
'clearance.translations', # optional: names in every language
# ... your own apps
]
AUTHENTICATION_BACKENDS = ['clearance.backends.ClearanceBackend']
سه نکته:
- اپ ادمین جای اپ Django را میگیرد.
ClearanceAdminConfigهمان پنل ادمین Django است، با صفحههای دسترسی، و هر صفحه از قانونها میپرسد. کلاسهایModelAdminشما همانطور که هستند میمانند. این اپ اختیاری است: بدون آن صفحههای دسترسی وجود ندارند، و چیز دیگری عوض نمیشود. - backend جای
ModelBackendرا میگیرد. بستههای یک شخص، مجوزهایی که مستقیم به خودش داده شده و آنچه از او گرفته شده را میخواند. نگه داشتنModelBackendکنار آن هر مجوزِ گرفتهشده را پس میداد، پس پروژه با آن بالا نمیآید. - اپهای اختیاری بعد از
'clearance'میآیند.
۳. با Django REST framework¶
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ['clearance.drf.permissions.ModelPolicyPermission'],
}
بعد از آن هر view در API از policy مدل خودش میپرسد. viewای که نه مدل دارد و نه policyای نام میبرد، موقع بالا آمدن پروژه رد میشود - آموزش را ببینید.
۴. مایگریت¶
۵. بررسی¶
python manage.py check # what start-up can tell
python manage.py clearance_check # what only the database can tell
بررسیهای سیستمی Django موقع بالا آمدن پروژه چیزی را که نمیتواند کار کند رد میکنند - backendی که نیست یا دو بار آمده، اپ اختیاریای که جایش درست نیست، viewای که نمیتواند از policy بپرسد:
| بررسی | چه چیزی اشتباه است |
|---|---|
clearance.E006 |
ClearanceBackend در AUTHENTICATION_BACKENDS نیست |
clearance.E007 |
ModelBackend کنار آن است |
clearance.E008 |
یک اپ اختیاری بدون 'clearance'، یا قبل از آن، نصب شده |
clearance.E009 |
viewای که policy از آن محافظت میکند نمیتواند از آن بپرسد |
clearance.E016 |
پنل ادمین، پنل کتابخانه نیست |
فهرست کامل در طراحی است.
قدم بعدی¶
شروع سریع در چند خط به یک شخص دسترسی به ردیفهای خودش را میدهد.