djangoの開発を進めていくと、個別のページ毎に権限(パーミッション)をかけたくなることがあるかもしれません。
例えば、クックパッドのようなサイトであれば、ユーザーは他の人の投稿を編集できないようにしなければいけません。
また、料理の投稿はできても、管理人が書くニュースのような記事を書けるようにしてはいけません。
このように、それぞれの機能毎にアクセス制限をかけることは結構手間なのですが、djangoでは簡単に編集することができるように設定されています。
今回は、権限設定の方法について学んでいきましょう。
権限の設定は、管理画面を使おう
権限の設定をするには、管理画面を使いましょう。
コードの中でも設定はできるのですが、管理画面で設定ができますので、簡単に操作ができる管理画面を使っていきましょう。
まずは、ベースとなるプロジェクトを作ります。
ベースプロジェクトの具体的なコードの書き方は、コードの初期設定という記事を参考にして下さい。
ひな型を作ったら、スーパーユーザーを作成して、管理画面にログインしましょう。
権限を設定するためにユーザーを作る
次に、権限の設定を進めていくためにユーザーの登録をしていきましょう。
ログインすると以下のような画面がでてきますので、まずはUsersをクリックしてみましょう。
すると、以下のような画面がでてきますので、右のADD USERボタンをクリックして、ユーザーを追加しましょう。
usernameとパスワードを入力してユーザーを作成します。今回は、user1という名前でユーザーを作りました。
ユーザーを作成したら、一度管理画面のトップに戻り、Usersボタンを押してみましょう。
すると、このような画面になりますので、新しく作ったユーザーをクリックしてみましょう。
すると、このような画面が出てきました。
この中で、権限の設定をするために使うのは、画面の真ん中あたりにあるPermissionsという部分です。
ここから、Permissonの設定内容について一つずつ見ていきましょう。
権限の設定の仕方
ここから、権限の設定の仕方をみていきます。
ざっくり分けると、ユーザーのレベルをまずは設定し、その設定の下に個別の権限の設定がある、というイメージです。
まずはユーザーのレベルの設定方法についてみていきましょう。
1 Active, Staff status, Superuser status
上部にある三つの項目がユーザーのレベルを設定する内容です。
Active
Activeは、そのユーザーをdjango上で認識させるかどうかの設定をします。
このActiveのチェックボックスがオフになっていると、ユーザーとして認識されませんので、ユーザーとしてログインすることができません。つまり何もすることができません。
一時的に退会しているが、詳細また戻ってくる可能性があるユーザーなどの場合にこの設定をします。
Staff status
管理画面にログインすることができるかを決めます。
サイトの運営側のスタッフの場合などは、このチェックボックスにチェックを入れておくと良いでしょう。
Superuser status
スーパーユーザーとするかどうかを決めます。Superuserの場合、無条件で全ての権限が与えられますので、この権限を付与するかどうかは慎重に決めるようにしましょう。
この3つを使うことによって、ざっくりとユーザーのアクセス制限を設定することができます。
次に、さらに細かい設定をするために、Permissionsの残りの部分を見ていきましょう。
2 GroupsとUser permissions
次に、細かい設定をしていくために使うGroupsとUser permissionsをみていきましょう。
イメージは、Groupでざっくりとしたアクセス制限を作り、さらにUser permissionsで細かい作りこみをしていく形です。
アクセス制限の内容は同じですので、個別のユーザーの場合を例に、設定のやりかたについてみていきましょう。
User permissions
user permissoinの設定は、一番したの画面の左側に見える項目で行います。
これは、大きく2つのカテゴリーに分類されます。
1つは「どのテーブルの内容」に対する権限を与えるのかという点、もう1つは削除や編集など、「どの操作」に対する権限を与えるのかという点です。
テーブルの内容
まずは、テーブルの内容からみていきましょう。主要な項目に絞ってみていきます。
1. auth
authは管理画面の操作に関する権限です。
authの中でも、ユーザーの登録や、groupの権限設定など、項目ごとに権限を与えることができます。
2. app
appは、アプリにひもづいたモデルの操作に関する権限です。
ECサイトなどでユーザーに情報を投稿してもらう場合は、この部分の権限の設定をするとよいでしょう。
権限の種類
最後は権限の種類です。大きくわけて4つの種類があります。
1. 追加(作成)権限
データを追加(作成)することができるかを設定をします。
2. 変更権限
データの変更をすることができるかを設定します。
3. 削除権限
データの削除をすることができるかを設定します。
4. 閲覧権限
データを閲覧することができるかを設定します。