モデル単位の制御

最終更新日: 2020年3月14日
R8 | R9

新しいプリンシパルの追加

ここでは「商品」モデルを対象に、設定を行います。

"環境 > 権限" タブ内の "プリンシパル" を開きます。ギアアイコンから "新規" を選択し、プリンシパルを追加してみます。

図1 機能権限

新しいプリンシパルが用意されました。名前は仮で設定されていますので、適切な名前(英語/日本語) をセットします。

英語名は国際化対応のためと、システム内部での管理用IDとして用いられます。
図2 プリンシパルの追加(1)
図3 プリンシパルの追加(2)

プリンシパル名は国際化に対応した特別表記ルールに基づいて設定してください。[詳細...] ここでは次のように設定しています。

{"en":"productmgr","ja":"商品管理者"}

また、プリンシパルIDは、プリンシパル名の英語表記と同じとしてください。

モデルにプリンシパルを設定する

開発者が「商品」モデルを用意した、とします。このモデルを「商品管理者」プリンシパルで制御できるようにします。

"権限 > 機能権限" タブを開きます。標準では「一般ユーザ」プリンシパルが用意されています。

図4 モデルに設定されたプリンシパル

ギアアイコンから、"プリンシパル追加" を選びます。

図5 プリンシパルの追加(1)
図6 プリンシパルの追加(2)

追加するプリンシパルを選択します。環境のプリンシパル一覧で、"選択肢表示" が有効となっているプリンシパルが選択肢に表示されます。(図2を参照)

図7 プリンシパルの選択

一般ユーザと、商品管理者プリンシパルにパーミッションを割り当てます。ここでは一般ユーザは閲覧のみとし、商品管理者プリンシパルは更新系のパーミッションを割り当てた例を示します。

図8 プリンシパルにパーミッションを割り当てる

注意

プリンシパルには、一つ以上有効なパーミッションが必要です。パーミッションが未設定(一つも選択されていない)プリンシパルは作成されません。

ビルド後の手順

設定後、ビルドを行い、アプリケーションを起動します。

外部データベースご利用時は、「プリンシパルを追加したときに行うこと」の記載に従いデータのインポートを行ってください。

テストアカウントの作成

重要

以下のテストはトライアルキットではお試しいただけません。アカウントの追加処理を行うためです。開発キットをご利用ください。

はじめに、システム管理者でログオンします。管理処理メニューから「アカウント一覧表示」を選択します。

図9 アカウント一覧表示へ

アカウントの新規登録を行います。

図10 アカウント新規登録画面へ

アカウント「user」(一般利用者)を作成します。
プリンシパルに「共通処理」「パスワード変更」「一般ユーザ」を選択します。

図11 アカウントuserの作成(1)
図12 アカウントuserの作成(2)

もう一つのアカウント「manager」(マスタデータ管理者)を作成します。
プリンシパルに「共通処理」「パスワード変更」「一般ユーザ」「商品管理者」を選択します。

ワンポイント

複数のプリンシパルを選択することができます。このとき「一般ユーザ」かつ「商品管理者」のロールを持ちます。

図13 アカウントmanagerの作成

ワンポイント

複数のプリンシパル(例「一般ユーザ」と「商品管理者」)を有効にしたとき、このアカウントが持つパーミッションは、各プリンシパルに紐づくパーミッションすべて(和集合)となります。

この二つのテスト用アカウントを作成後、システム管理者をログオフします。

実行例

マスタデータ管理者でログオンします。 メニューから「商品検索」を選択します。登録ボタンが表示されています。

図14 商品の登録画面へ

商品データを登録後の詳細画面では、登録・更新・削除といった操作が行えるようになっていることがわかります。

図15 更新に関する処理ボタンが表示される

ログオフし、次に一般利用者でログオンします。
メニューから「商品検索」を選択します。登録ボタンは表示されていません。

図16 商品検索画面

このアカウントは検索と表示のみ行えるようになっています。

図17 更新に関する処理ボタンは表示されない

ワンポイント

すべての画面遷移のボタンは、権限管理によって表示制御されます。例えば更新権限をもたない利用者では、「更新」ボタンは表示されない、という動作になります。

重要

権限管理の動作テストでは、システム管理者を用いないようにしてください。(システム管理者はすべての権限を持つという設定になっています。)

メニューの扱い

システム管理者でログオンすると、すべてのメニューが表示されます。それ以外のユーザでログオンすると、許可された権限に対応したメニューだけが表示されます。

権限外の機能を操作しようとした場合

権限を持たない利用者が、許可されていないモデルの操作を行おうとアドレスバーにURLを直接入力するとエラー画面が表示されます。

図18 権限エラー

また、ログファイル (wagbyapp/logs/system.log) には次のような記録が残ります。

20xx-xx-xx 00:00:00 [INFO jp.jasminesoft.jfc.controller.BaseController checkPermission] (user1) JFC-00108:セキュリティエラーです。権限は [JFCAppPermission [JFCBasePermission Name:juser Actionlist:insert ] ] となっています。

ログレベルは ERROR ではなく INFO です。セキュリティエラーの検出は正常な処理であるためです。この検出を行う場合は、ログコード "JFC-00108" で検索してください。

応用

ここでは更新権限の制御方法を紹介しましたが、用途に合わせてパーミッションを組み合わせることができます。例えば「削除」を許可しないプリンシパルや、「CSVダウンロード・アップロード更新」処理専用のプリンシパルなどを作成することができます。