PickUp 投稿記事

Forguncy(フォーガンシー)で見積管理システムを作ってみました!(6)

Forguncy(フォーガンシー)で見積管理システムを作ってみました!(6)

Excel関数もグラフも使えて画面も変更できる、ノンプログラミングWebシステム開発ツール「Forguncy(フォーガンシー)」。

前回に引き続き、見積管理システムを作ります。

↓↓ 前回の記事はこちら ↓↓

今回は、以前作成した簡単な「見積管理システム」にマスターテーブルの編集機能を追加します。
マスターテーブルの編集は、特定のロールに制限をかけたいと思いますので、Forguncyに用意されているアクセス制御について調べてみました。

Forguncyで設定できるアクセス制御には、以下のものがありました。

  • データレベルのアクセス制御(フィールドレベル、レコードレベル、新規レコードの作成権限)
  • セルのアクセス制御
  • ページ表示権限

編集するマスターテーブルは『取引先マスタ』とします。先ずは、テーブル「取引先マスタ」を表示するページ「取引先情報」を新規作成します。

取引先情報

「新規追加」セルのセル型は「ハイパーリンク」、「編集」セルと「削除」セルのセル型は「画像」です。

テーブル「取引先マスタ」のデータを編集するためのページ「取引先マスタ編集」を新規作成します。

取引先マスタ編集

「取引先情報」ページのセルの設定は以下です。

  1. 「新規追加」セル:コマンドは「取引先マスタ編集」の「ポップアップウィンドウの表示」とし、遷移先ページのT15セルに「新規」という値を受け渡します。
  2. 「編集」セル:コマンドは「取引先マスタ編集」の「ポップアップウィンドウの表示」とし、遷移先ページへのデータ連結設定に「連結データを読み込む」を選択します。
  3. 「削除」セル:コマンドは「レコードの削除」とします。

「取引先マスタ編集」ページのボタン型セル「登録」のコマンドは以下です。

登録コマンド

「マスターページ」のメニューに「取引先情報」を追加し、コマンドに「取引先情報」へのページ遷移を設定します。

取引先情報

これで、ログインユーザーなら誰でも「取引先マスタ」テーブルを編集することができるようになりました。

デバッグ開始を使って、動作を確認します。画面左のメニューから「取引先情報」をクリックし、「新規追加」をクリックします。

「取引先情報」をクリックし、「新規追加」

「取引先マスタ編集」画面がポップアップ表示します。

「取引先マスタ編集」画面

各データを入力して、「登録」をクリックします。

各データを入力して、「登録」

データが追加されました。

データ追加

追加したデータ列の「編集」欄をクリックすると、入力欄にデータが入った「取引先マスタ編集」画面がポップアップ表示します。

「取引先マスタ編集」画面

表示されたデータを編集して「登録」をクリックします。

「登録」をクリック

データ値が変わりました。

データ値が変わる

追加したデータ列の「削除」欄をクリックすると、レコード削除を確認するメッセージが表示されます。

レコード削除を確認するメッセージ

確認メッセージの「OK」をクリックすると、レコードが削除されました。

レコードが削除される

次に、アクセス制御を使って、アクセス権を設定していきます。

先ずは、データレベルのアクセス制御を使ってみます。
「取引先マスタ」テーブルを開き、右ペイン「テーブル設定」の中にある「フィールドレベルのアクセス制御…」をクリックすることで、「フィールドレベルのアクセス制御」画面が表示されます。
今回は以下のように設定します。

フィールドレベルのアクセス制御
  1. 「フィールドレベルのアクセス制御を有効化する」にチェックを入れます。
  2. ロールが「部長」であるログインユーザーには全てのレコードに対して、「読み取り」「編集」共に許可します。
  3. ロールが「リーダー」であるログインユーザーには全てのレコードに対して、「読み取り」とフィールド「取引先名」以外の「編集」を許可します。
  4. ロールが「部長」「リーダー」以外のログインユーザーには、「読み取り」のみを許可します。

以上の設定で、動作を確認してみます。
ロールが「部長」でも「リーダー」でもないアカウントでログインします。

ロールが「部長」でも「リーダー」でもないアカウント

「編集」欄をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。

「取引先マスタ編集」画面

次のようなメッセージが表示されました。

データベースへの更新操作に失敗しました

全てのフィールドに対しても同様で、登録データを編集することはできませんでした。
しかし、「新規追加」/「削除」欄をクリックするとレコードの追加/削除はできました。

次に、ロールが「リーダー」であるアカウントでログインします。

ロールが「リーダー」であるアカウント

「編集」欄をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。

「取引先マスタ編集」画面

フィールド「取引先名」を編集することはできませんでしたが、それ以外のフィールドは編集できました。

取引先情報

こちらも、「新規追加」/「削除」欄をクリックするとレコードの追加/削除ができました。

次に、ロールが「部長」であるアカウントでログインします。

ロールが「部長」であるアカウント

「編集」欄をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。

「取引先マスタ編集」画面

全てのフィールドが編集できました。

取引先情報

こちらも、「新規追加」/「削除」欄をクリックするとレコードの追加/削除ができました。

以上で、ロールによって編集できるフィールドを指定できることを確認できました。

レコードの追加や削除にも、アクセス権を設定したいと思います。
「取引先マスタ」テーブルを開き、テーブル設定の中にある「新規レコード作成権限…」をクリックすることで、「新規レコード作成権限の条件」の画面が表示されます。
今回は以下のように設定します。

「新規レコード作成権限の条件」の画面
  1. 「新規レコード作成権限機能を有効化する」にチェックを入れます。
  2. ロールが「Administrator」であるログインユーザーに、新規レコード作成の許可をします。

以上の設定で、動作を確認してみます。
ロールが「Administrator」以外のアカウントでログインします。

ロールが「Administrator」以外のアカウント

「新規追加」をクリックし、「取引先マスタ編集」画面からデータを入力して「登録」ボタンをクリックします。

「取引先マスタ編集」画面

次のようなメッセージが表示されました。

データベースへの更新操作に失敗しました

「Administrator」以外の全てのログインユーザーに対して同様です。

次に、ロールが「Administrator」であるアカウントでログインします。

ロールが「Administrator」であるアカウント

「新規追加」をクリックし、「取引先マスタ編集」画面からデータを入力して「登録」ボタンをクリックします。

「取引先マスタ編集」画面

データが追加されました。

取引先情報

設定した通り、ログインユーザーのロールが「Administrator」である場合のみ、レコードを追加できることを確認できました。

レコード削除の権限については、「取引先マスタ」テーブルを開き、テーブル設定の中にある「レコードレベルのアクセス制御…」をクリックすることで、「レコードレベルのアクセス制御」の画面から設定できます。
今回は以下のように設定します。

「レコードレベルのアクセス制御」の画面
  1. 「レコードレベルのアクセス制御を有効化する」にチェックを入れます。
  2. ロールが「Administrator」であるログインユーザーには全てのレコードに対して、「表示」「更新」「削除」を許可します。
  3. ロールが「Administrator」以外であるログインユーザーには全てのレコードに対して、「表示」「更新」を許可します。

以上の設定で、動作を確認してみます。
ロールが「Administrator」であるアカウントでログインします。

ロールが「Administrator」であるアカウントでログイン

「編集」をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。

「取引先マスタ編集」

次のようなメッセージが表示されました。

データベースへの更新操作に失敗しました

「Administrator」に対してレコードレベルの設定では「更新」を許可しましたが、フィールドレベルの設定では「編集」を許可していないため、レコードデータの編集はできませんでした。

「削除」をクリックすると、レコードは削除されました。

「削除」をクリックすると、レコードは削除されました

次に、ロールが「部長」であるアカウントでログインします。

ロールが「部長」であるアカウントでログイン

「編集」をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。

「取引先マスタ編集」画面

全てのフィールドデータが編集できました。

取引先情報

「部長」に対してレコードレベルの設定では「更新」を許可し、フィールドレベルの設定では全てのフィールドに「編集」を許可しているため、全てのフィールドデータが編集できました。

「削除」をクリックすると、以下のメッセージが表示され、レコードの削除はできませんでした。

レコードの削除はできません

次に、ロールが「リーダー」であるアカウントでログインします。

ロールが「リーダー」であるアカウントでログイン

「編集」をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。

「取引先マスタ編集」画面

「取引先名」を編集した場合のみエラーメッセージが表示され、それ以外のフィールドデータは編集できました。

取引先情報

「リーダー」に対してレコードレベルの設定では「更新」を許可し、フィールドレベルの設定では「取引先名」以外のフィールドに「編集」を許可しているため、「取引先名」以外のフィールドデータが編集できました。

「削除」をクリックすると、以下のメッセージが表示され、レコードの削除はできませんでした。

レコードの削除はできません

次に、ロールがないアカウントでログインします。

ロールがないアカウントでログイン

「編集」をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。

「取引先マスタ編集」画面

全てのフィールドデータに対してエラーメッセージが表示され、データの編集はできませんでした。

「誰でも」に対してレコードレベルの設定では「更新」を許可していますが、フィールドレベルの設定では全てのフィールドに「編集」を許可していないため、データは編集できませんでした。

「削除」をクリックすると、以下のメッセージが表示され、レコードの削除もできませんでした。

データベースへの更新操作に失敗しました

以上、データレベルのアクセス制御を使って、ロール毎にアクセス権を設定することができました。

次に、セルのアクセス制御を使ってみます。
ページ「取引先情報」の「新規追加」セルを選択し、セル型にある「セルのアクセス制御…」をクリックして、「セルのアクセス制御」の画面を表示します。
今回は以下のように設定します。

「セルのアクセス制御」の画面

以上の設定で、動作を確認してみます。
ロールが「Administrator」であるアカウントでログインします。

ロールが「Administrator」であるアカウント

「新規追加」をクリックし、「取引先マスタ編集」画面からデータを入力して「登録」をクリックします。

「取引先マスタ編集」画面

データが追加されました。

取引先情報

ロールが「Administrator」以外であるアカウントでログインします。

ロールが「Administrator」以外であるアカウントでログイン

「新規追加」をクリックしても、何も起こりません。
セルのアクセス制御が機能していることを確認できました。

上記は、セルのアクセス制御の中の「使用可能権限」を利用したため、次は「表示権限」を設定してみます。

「表示権限」を設定

以上の設定で、動作を確認してみます。
ロールが「Administrator」であるアカウントでログインします。

ロールが「Administrator」であるアカウントでログイン

「新規追加」をクリックし、「取引先マスタ編集」画面からデータを入力して「登録」をクリックします。

「取引先マスタ編集」画面

データが追加されました。

取引先情報

ロールが「Administrator」以外であるアカウントでログインします。

ロールが「Administrator」以外であるアカウントでログイン

「新規追加」セルが表示されていません。
セルの表示権限が機能していることを確認できました。

リストビューの中のセルにはアクセス制御を設定することはできないようです。

マスターページのメニュー項目にも「表示権限」を設定することができます。

マスターページのメニュー項目

他に、「ページ表示権限」によるアクセス制御もあります。こちらはページごとに閲覧権限を設定するものです。
試しに、ページ「取引先情報」に「ページ表示権限」を設定してみます。
「ユーザー認証」タブの「ページ表示権限の管理」をクリックして、「ページ表示権限の管理」画面から設定します。
今回は以下のように設定します。

「ページ表示権限の管理」画面

ページ「取引先情報」の表示は、ロールが「Administrator」に限定します。
動作を確認します。

ロールが「Administrator」であるアカウントでログインします。

ロールが「Administrator」であるアカウントでログイン

「取引先情報」画面は表示されます。

ロールが「Administrator」以外であるアカウントでログインします。

ロールが「Administrator」以外であるアカウントでログイン

「取引先情報」画面を表示することができませんでした。

いかがでしたでしょうか。
テーブルやセル、ページごとに必要に応じてアクセス権を設定することができました。
今後もForguncyに用意されている機能を使って、簡単にアップグレードしてみたいと思います。