GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

django-guardian

django-guardian – Djangoのオブジェクトごとのパーミッション

投稿日:

Djangoのオブジェクトごとのパーミッション https://django-guardian.readthedocs.io/

ジャンゴ・ガーディアン

django-guardianは、Djangoの認可バックエンドの上にあるオブジェクトごとのパーミッション[1]の実装です

ドキュメンテーション

オンラインドキュメントはhttps://django-guardian.readthedocs.io/で入手できます

要件

  • Python 2.7または3.4+
  • Djangoのサポートされているバージョン(現在1.8+)

Travis CIは、Djangoバージョン1.8,1.10,1.11、および2.0についてテストします。

インストール

django-guardianをインストールするには、次のコマンドを実行します。

pip install django-guardian

構成

私たちはプロジェクトにdjango-guardianをフックする必要があります。

  1. 設定モジュールであなたのINSTALLED_APPS guardianを入れてください:
INSTALLED_APPS = (
 ...
 'guardian',
)
  1. 余分な認可バックエンドをsettings.py追加settings.py
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend', # default
    'guardian.backends.ObjectPermissionBackend',
)
  1. 以下を実行してguardianデータベーステーブルを作成します。

    python manage.py migrate
    

使用法

インストールとプロジェクトフックの後、私たちは最終的にDjangoでオブジェクトパーミッションを使用することができます。

本当にすぐに始めることができます:

>>> from django.contrib.auth.models import User, Group
>>> jack = User.objects.create_user('jack', 'jack@example.com', 'topsecretagentjack')
>>> admins = Group.objects.create(name='admins')
>>> jack.has_perm('change_group', admins)
False
>>> from guardian.models import UserObjectPermission
>>> UserObjectPermission.objects.assign_perm('change_group', jack, obj=admins)
<UserObjectPermission: admins | jack | change_group>
>>> jack.has_perm('change_group', admins)
True

もちろん、ここのエージェントジャックはグローバルにchange_groupすることはできません:

>>> jack.has_perm('change_group')
False

管理者との統合

adminパネル内のオブジェクト権限をサポートするモデルのGuardedModelAdminadmin.ModelAdminGuardedModelAdmin置き換えてください。

例えば:

from django.contrib import admin
from myapp.models import Author
from guardian.admin import GuardedModelAdmin

# Old way:
#class AuthorAdmin(admin.ModelAdmin):
#    pass

# With object permissions support
class AuthorAdmin(GuardedModelAdmin):
    pass

admin.site.register(Author, AuthorAdmin)
[1] この機能に関する素晴らしい論文は、 djangoadventの記事で入手できます。







-django-guardian

執筆者: