アプリのカスタマイズ
ロールベースのアクセス制御
Morphで構築するデータアプリでは、アクセスするユーザーの情報を活用してロールベースのアクセス制御を行うことができます。
Morphのフレームワーク上のPython関数では、context: MorphGlobalContext
という引数を受け取ることができます。
このcontext
のuser_info
という変数にユーザー情報が格納されています。
context.user_info
の変数の型は以下の通りです。
変数 | 説明 | 型 |
---|---|---|
user_id | ユーザーID | str |
email | ユーザーのメールアドレス | str |
username | ユーザー名 | str |
first_name | ユーザーの名前 | str |
last_name | ユーザーの苗字 | str |
roles | ユーザーのプロジェクトロール | list[str] |
プロジェクトロールの設定方法
MorphGlobalContext
に格納されるユーザー情報のroles
という変数には、ユーザーのプロジェクトロールが格納されています。
プロジェクトロールは、プロジェクトごとにユーザーに設定できるロールです。プロジェクト詳細の”Member Access”タブで設定できます。
開発環境でのユーザー情報の使用方法
開発環境ではダッシュボードの認証情報を渡していないので、context.user_info
には、以下の固定の値が格納されます。
カスタマイズしたユーザー情報を使用する
/path/to/project/.mock_user_context.json
を作成して、上記のJSONと同じ型で値を保存すると、自動的にcontext.user_info
の値が切り替わります。
rolesの設定値を変更してロールベースのアクセス制御の実装を行うことができます。
認証用のJSONデータを署名なしのJWTトークンとして、authorizationヘッダーに渡すことでも同様にユーザー情報を切り替えることができます。
サンプルコード
以下のサンプルコードは、ユーザーがAdminロールを持っている場合のみにPygwalkerを使用したダッシュボードを表示するコードです。