モデル単位の制御
最終更新日: 2020年3月14日
R8 | R9
ここでは「商品」モデルを対象に、設定を行います。
"環境 > 権限" タブ内の "プリンシパル" を開きます。ギアアイコンから "新規" を選択し、プリンシパルを追加してみます。
新しいプリンシパルが用意されました。名前は仮で設定されていますので、適切な名前(英語/日本語) をセットします。
プリンシパル名は国際化に対応した特別表記ルールに基づいて設定してください。[詳細...] ここでは次のように設定しています。
また、プリンシパルIDは、プリンシパル名の英語表記と同じとしてください。
開発者が「商品」モデルを用意した、とします。このモデルを「商品管理者」プリンシパルで制御できるようにします。
"権限 > 機能権限" タブを開きます。標準では「一般ユーザ」プリンシパルが用意されています。
ギアアイコンから、"プリンシパル追加" を選びます。
追加するプリンシパルを選択します。環境のプリンシパル一覧で、"選択肢表示" が有効となっているプリンシパルが選択肢に表示されます。(図2を参照)
一般ユーザと、商品管理者プリンシパルにパーミッションを割り当てます。ここでは一般ユーザは閲覧のみとし、商品管理者プリンシパルは更新系のパーミッションを割り当てた例を示します。
プリンシパルには、一つ以上有効なパーミッションが必要です。パーミッションが未設定(一つも選択されていない)プリンシパルは作成されません。
設定後、ビルドを行い、アプリケーションを起動します。
外部データベースご利用時は、「プリンシパルを追加したときに行うこと」の記載に従いデータのインポートを行ってください。
以下のテストはトライアルキットではお試しいただけません。アカウントの追加処理を行うためです。開発キットをご利用ください。
はじめに、システム管理者でログオンします。管理処理メニューから「アカウント一覧表示」を選択します。
アカウントの新規登録を行います。
アカウント「user」(一般利用者)を作成します。
もう一つのアカウント「manager」(マスタデータ管理者)を作成します。
複数のプリンシパルを選択することができます。このとき「一般ユーザ」かつ「商品管理者」のロールを持ちます。
複数のプリンシパル(例「一般ユーザ」と「商品管理者」)を有効にしたとき、このアカウントが持つパーミッションは、各プリンシパルに紐づくパーミッションすべて(和集合)となります。
この二つのテスト用アカウントを作成後、システム管理者をログオフします。
マスタデータ管理者でログオンします。
メニューから「商品検索」を選択します。登録ボタンが表示されています。
商品データを登録後の詳細画面では、登録・更新・削除といった操作が行えるようになっていることがわかります。
ログオフし、次に一般利用者でログオンします。
このアカウントは検索と表示のみ行えるようになっています。
すべての画面遷移のボタンは、権限管理によって表示制御されます。例えば更新権限をもたない利用者では、「更新」ボタンは表示されない、という動作になります。
権限管理の動作テストでは、システム管理者を用いないようにしてください。(システム管理者はすべての権限を持つという設定になっています。)
システム管理者でログオンすると、すべてのメニューが表示されます。それ以外のユーザでログオンすると、許可された権限に対応したメニューだけが表示されます。
権限を持たない利用者が、許可されていないモデルの操作を行おうとアドレスバーにURLを直接入力するとエラー画面が表示されます。
また、ログファイル (wagbyapp/logs/system.log) には次のような記録が残ります。
ログレベルは ERROR ではなく INFO です。セキュリティエラーの検出は正常な処理であるためです。この検出を行う場合は、ログコード "JFC-00108" で検索してください。
ここでは更新権限の制御方法を紹介しましたが、用途に合わせてパーミッションを組み合わせることができます。例えば「削除」を許可しないプリンシパルや、「CSVダウンロード・アップロード更新」処理専用のプリンシパルなどを作成することができます。
新しいプリンシパルの追加
{"en":"productmgr","ja":"商品管理者"}
モデルにプリンシパルを設定する
注意
ビルド後の手順
テストアカウントの作成
重要
プリンシパルに「共通処理」「パスワード変更」「一般ユーザ」を選択します。
プリンシパルに「共通処理」「パスワード変更」「一般ユーザ」「商品管理者」を選択します。
ワンポイント
ワンポイント
実行例
メニューから「商品検索」を選択します。登録ボタンは表示されていません。
ワンポイント
重要
メニューの扱い
権限外の機能を操作しようとした場合
20xx-xx-xx 00:00:00 [INFO jp.jasminesoft.jfc.controller.BaseController checkPermission] (user1) JFC-00108:セキュリティエラーです。権限は [JFCAppPermission [JFCBasePermission Name:juser Actionlist:insert ] ] となっています。
応用