モデル単位の制御

最終更新日: 2021年7月28日

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

権限はプリンシパルという単位で用意します。ここでは新しいプリンシパル「業務管理者」を用意する例を説明します。

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

権限を作成する

手順の詳細は「環境 > 権限 > 権限を追加する」をお読みください。

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

「顧客」モデルについて、次の制御を行うようにします。

  • 一般の利用者は閲覧のみ。
  • 業務管理者プリンシパルをもったアカウントは、登録や更新が行える。

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

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

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

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

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

プリンシパルの選択

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

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

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

重要

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

業務管理者プリンシパルに閲覧用パーミッションは不要?

上の例では、業務管理者プリンシパルに閲覧用パーミッションを付与していません。この意図は、一般利用は「一般」プリンシパルのみとし、業務管理者は「一般」と「業務管理者」の二つのプリンシパルをもつようにするためです。(具体的方方法をこのあと説明します。)このように、複数のプリンシパルを持つ場合、両者をあわせたパーミッションとなります。

テストアカウントの作成

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

アカウント一覧表示へ

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

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

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

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

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

ワンポイント

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

アカウントmanagerの作成

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

実行例

業務管理者のアカウントでログオンします。 メニューから「顧客検索」を選択します。登録ボタンが表示されています。

顧客の登録画面へ

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

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

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

顧客検索画面

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

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

ワンポイント

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

重要

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

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

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

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

権限エラー

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

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

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

応用

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