見出し画像

【タレントダッシュボード構築 #9】ユーザー権限を設定する

今回は、ログインユーザとその権限の管理についてまとめていきます。

具体的には、特定の人には評価情報を見せないように制御する、という実装をどのように行うかを検討します。

評価の参照権限があるユーザから見える画面
評価の参照権限がないユーザから見える画面

ユーザーの作成

前提として、カスタムユーザーモデルの導入が完了しているものとします。詳細および導入の方法についてはこちらの公式ドキュメントをご覧ください。

superuserで管理サイトにログインします。

まずは、評価を参照できない権限のユーザーグループを作成します。
「認証と認可」配下の「グループ」の追加ボタンをクリックします。

評価に関連する権限を除き、「選択されたパーミッション」領域に指定したうえで、保存します。

今度は、「ユーザー管理」配下の「ユーザー」の追加ボタンをクリックします。

上記のように入力し、「保存して編集を続ける」をクリックします。

詳細情報を入力する画面に遷移しますので、氏名等を入力します。
その後、「パーミッション」エリアにて、「選択されたグループ」領域で先ほど作成したグループを指定します。

なお今回の例では、アプリのログイン画面を通常のログイン機能として使うため、「スタッフ権限」にチェックを入れた状態でユーザを作成してください。

画面への表示

あとは、画面表示の際にパーミッションの確認をして制御をするだけです。

[templates/app/contents_6mo.html]

{% load filter %}

【半期毎の記録】

{% if perms.app.view_evsho %}
<a data-toggle="tooltip" data-html="true" title="4月レコード:夏賞与の評価ランクを設定、10月レコード:冬賞与の評価ランクを設定。"><font color="#007bff"> ※評価ランクに関する注意事項</font></a>
{% endif %}

<!-- 中略:タブ定義 -->

<div class="tab-content">
  <div class="tab-pane fade show active" id="item-6mos-short" role="tabpanel" aria-labelledby="item-6mos-short-tab">
    <div class="row pt-2 pb-2 pl-2 pr-2">
        {% if item_6mos_short %}
            <div class="container">
            <table class="table table-hover table-sm">
                <thead class="thead-light">
                  <tr>
                    <th>期</th>
                    <th>会社</th>
                    <th>部室</th>
                    <th>課</th>
                    <th>級</th>
                    <th>号</th>
                    {% if perms.app.view_evsho %}
                      <th>評価ランク</th>
                    {% endif %}
                  </tr>
                </thead>
                <tbody>
                  {% for item_6mo in item_6mos_short reversed %}
                    <div>
                      <tr>
                        <th>{{ item_6mo.date|date:"Y/n" }}</th>
                        <th>{{ item_6mo.main_company }}</th>
                        <th>{{ item_6mo.dept }}</th>
                        <th>{{ item_6mo.ka }}</th>
                        <th>{{ item_6mo.kyu }}</th>
                        <th>{{ item_6mo.go }}</th>
                          {% if perms.app.view_evsho %}
                              <th>{{ item_6mo.evsho }}</th>
                          {% endif %}
                      </tr>
                    </div>
                    {% endfor %}
                </tbody>
              </table>
            </div>
        {% else %}
        表示するレコードがありません。
        {% endif %}                
    </div>
  </div>

<!-- 中略:2つ目のタブ 詳細定義 -->

{% if perms.app.view_evsho %} という形で考課ランクの参照権限を確認し、表示制御を行いました。


9回にわたって、PythonおよびWebアプリケーションフレームワーク(Django)を利用した「タレントダッシュボード」構築の方法を大まかに説明してきました。

細かな点は割愛している部分もあるため理解しづらい部分もあったかと思いますが、何かの助けになったという方がお一人でもいらっしゃれば幸いです。

番外編として、環境面についても別途まとめたいと考えておりますので、よろしければマガジンをチェックしてください。

ありがとうございました!

この記事が気に入ったらサポートをしてみませんか?