Django ユーザー認証

ユーザーとグループを Admin サイトではなくプログラムで作成する方法のまとめ。

ユーザーの作成

create_user() ヘルパー関数を使う。

https://docs.djangoproject.com/en/1.8/topics/auth/default/#creating-users

スーパーユーザーの作成

manage.py createsuperuser コマンドを使う。

https://docs.djangoproject.com/en/1.8/topics/auth/default/#creating-superusers

もしくは、create_user() で作ったユーザーに対して、User.is_admin = True を設定。
スーパーユーザーは全パーミッションが認可されている。

グループの作成

In Django, how do you programmatically create a group with permissions

new_group, created = Group.objects.get_or_create(name='new_group')
# Code to add permission to group ???
ct = ContentType.objects.get_for_model(Project)

# Now what - Say I want to add 'Can add project' permission to new_group?
permission = Permission.objects.create(codename='can_add_project',
                                   name='Can add project',
                                   content_type=ct)
new_group.permissions.add(permission)

ユーザーが所属するグループの編集

myuser.groups = [group_list]
myuser.groups.add(group, group, ...)
myuser.groups.remove(group, group, ...)
myuser.groups.clear()

https://docs.djangoproject.com/en/1.8/topics/auth/default/#permissions-and-authorization

ユーザーに割り当てられたパーミッションの取得

View から取得する場合

request.user.get_all_permissions()

これでユーザー個人とユーザーが所属するグループに割り当てられたパーミッションがすべて取得できる。
request.user.user_permissions.all() ではユーザー個人直接割り当てられたパーミッションのみ。

Last updated on November 16, 2015