Forguncy(フォーガンシー)で見積管理システムを作ってみました!(6)
Excel関数もグラフも使えて画面も変更できる、ノンプログラミングWebシステム開発ツール「Forguncy(フォーガンシー)」。
前回に引き続き、見積管理システムを作ります。
↓↓ 前回の記事はこちら ↓↓
今回は、以前作成した簡単な「見積管理システム」にマスターテーブルの編集機能を追加します。
マスターテーブルの編集は、特定のロールに制限をかけたいと思いますので、Forguncyに用意されているアクセス制御について調べてみました。
Forguncyで設定できるアクセス制御には、以下のものがありました。
- データレベルのアクセス制御(フィールドレベル、レコードレベル、新規レコードの作成権限)
- セルのアクセス制御
- ページ表示権限
編集するマスターテーブルは『取引先マスタ』とします。先ずは、テーブル「取引先マスタ」を表示するページ「取引先情報」を新規作成します。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-2-100.jpg)
「新規追加」セルのセル型は「ハイパーリンク」、「編集」セルと「削除」セルのセル型は「画像」です。
テーブル「取引先マスタ」のデータを編集するためのページ「取引先マスタ編集」を新規作成します。
![取引先マスタ編集](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-4-100.jpg)
「取引先情報」ページのセルの設定は以下です。
- 「新規追加」セル:コマンドは「取引先マスタ編集」の「ポップアップウィンドウの表示」とし、遷移先ページのT15セルに「新規」という値を受け渡します。
- 「編集」セル:コマンドは「取引先マスタ編集」の「ポップアップウィンドウの表示」とし、遷移先ページへのデータ連結設定に「連結データを読み込む」を選択します。
- 「削除」セル:コマンドは「レコードの削除」とします。
「取引先マスタ編集」ページのボタン型セル「登録」のコマンドは以下です。
![登録コマンド](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-5-100.jpg)
「マスターページ」のメニューに「取引先情報」を追加し、コマンドに「取引先情報」へのページ遷移を設定します。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-6-100.jpg)
これで、ログインユーザーなら誰でも「取引先マスタ」テーブルを編集することができるようになりました。
デバッグ開始を使って、動作を確認します。画面左のメニューから「取引先情報」をクリックし、「新規追加」をクリックします。
![「取引先情報」をクリックし、「新規追加」](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-7-100.jpg)
「取引先マスタ編集」画面がポップアップ表示します。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-8-100.jpg)
各データを入力して、「登録」をクリックします。
![各データを入力して、「登録」](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-9-100.jpg)
データが追加されました。
![データ追加](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-10-100.jpg)
追加したデータ列の「編集」欄をクリックすると、入力欄にデータが入った「取引先マスタ編集」画面がポップアップ表示します。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-11-100.jpg)
表示されたデータを編集して「登録」をクリックします。
![「登録」をクリック](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-12-100.jpg)
データ値が変わりました。
![データ値が変わる](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-13-100.jpg)
追加したデータ列の「削除」欄をクリックすると、レコード削除を確認するメッセージが表示されます。
![レコード削除を確認するメッセージ](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-14-100.jpg)
確認メッセージの「OK」をクリックすると、レコードが削除されました。
![レコードが削除される](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-15-100.jpg)
次に、アクセス制御を使って、アクセス権を設定していきます。
先ずは、データレベルのアクセス制御を使ってみます。
「取引先マスタ」テーブルを開き、右ペイン「テーブル設定」の中にある「フィールドレベルのアクセス制御…」をクリックすることで、「フィールドレベルのアクセス制御」画面が表示されます。
今回は以下のように設定します。
![フィールドレベルのアクセス制御](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-16-100.jpg)
- 「フィールドレベルのアクセス制御を有効化する」にチェックを入れます。
- ロールが「部長」であるログインユーザーには全てのレコードに対して、「読み取り」「編集」共に許可します。
- ロールが「リーダー」であるログインユーザーには全てのレコードに対して、「読み取り」とフィールド「取引先名」以外の「編集」を許可します。
- ロールが「部長」「リーダー」以外のログインユーザーには、「読み取り」のみを許可します。
以上の設定で、動作を確認してみます。
ロールが「部長」でも「リーダー」でもないアカウントでログインします。
![ロールが「部長」でも「リーダー」でもないアカウント](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-17-100.jpg)
「編集」欄をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-18-100.jpg)
次のようなメッセージが表示されました。
![データベースへの更新操作に失敗しました](https://forguncy.zait.jp/wp-content/uploads/2022/01/11-17.png)
全てのフィールドに対しても同様で、登録データを編集することはできませんでした。
しかし、「新規追加」/「削除」欄をクリックするとレコードの追加/削除はできました。
次に、ロールが「リーダー」であるアカウントでログインします。
![ロールが「リーダー」であるアカウント](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-20-100.jpg)
「編集」欄をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-21-100.jpg)
フィールド「取引先名」を編集することはできませんでしたが、それ以外のフィールドは編集できました。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-22-100.jpg)
こちらも、「新規追加」/「削除」欄をクリックするとレコードの追加/削除ができました。
次に、ロールが「部長」であるアカウントでログインします。
![ロールが「部長」であるアカウント](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-23-100.jpg)
「編集」欄をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-24-100.jpg)
全てのフィールドが編集できました。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-25-100.jpg)
こちらも、「新規追加」/「削除」欄をクリックするとレコードの追加/削除ができました。
以上で、ロールによって編集できるフィールドを指定できることを確認できました。
レコードの追加や削除にも、アクセス権を設定したいと思います。
「取引先マスタ」テーブルを開き、テーブル設定の中にある「新規レコード作成権限…」をクリックすることで、「新規レコード作成権限の条件」の画面が表示されます。
今回は以下のように設定します。
![「新規レコード作成権限の条件」の画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-26-100.jpg)
- 「新規レコード作成権限機能を有効化する」にチェックを入れます。
- ロールが「Administrator」であるログインユーザーに、新規レコード作成の許可をします。
以上の設定で、動作を確認してみます。
ロールが「Administrator」以外のアカウントでログインします。
![ロールが「Administrator」以外のアカウント](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-27-100.jpg)
「新規追加」をクリックし、「取引先マスタ編集」画面からデータを入力して「登録」ボタンをクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-28-100.jpg)
次のようなメッセージが表示されました。
![データベースへの更新操作に失敗しました](https://forguncy.zait.jp/wp-content/uploads/2022/01/11-17.png)
「Administrator」以外の全てのログインユーザーに対して同様です。
次に、ロールが「Administrator」であるアカウントでログインします。
![ロールが「Administrator」であるアカウント](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-29-100.jpg)
「新規追加」をクリックし、「取引先マスタ編集」画面からデータを入力して「登録」ボタンをクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-30-100.jpg)
データが追加されました。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-31-100.jpg)
設定した通り、ログインユーザーのロールが「Administrator」である場合のみ、レコードを追加できることを確認できました。
レコード削除の権限については、「取引先マスタ」テーブルを開き、テーブル設定の中にある「レコードレベルのアクセス制御…」をクリックすることで、「レコードレベルのアクセス制御」の画面から設定できます。
今回は以下のように設定します。
![「レコードレベルのアクセス制御」の画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-34-100.jpg)
- 「レコードレベルのアクセス制御を有効化する」にチェックを入れます。
- ロールが「Administrator」であるログインユーザーには全てのレコードに対して、「表示」「更新」「削除」を許可します。
- ロールが「Administrator」以外であるログインユーザーには全てのレコードに対して、「表示」「更新」を許可します。
以上の設定で、動作を確認してみます。
ロールが「Administrator」であるアカウントでログインします。
![ロールが「Administrator」であるアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-35-100.jpg)
「編集」をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。
![「取引先マスタ編集」](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-36-100.jpg)
次のようなメッセージが表示されました。
![データベースへの更新操作に失敗しました](https://forguncy.zait.jp/wp-content/uploads/2022/01/11-17.png)
「Administrator」に対してレコードレベルの設定では「更新」を許可しましたが、フィールドレベルの設定では「編集」を許可していないため、レコードデータの編集はできませんでした。
「削除」をクリックすると、レコードは削除されました。
![「削除」をクリックすると、レコードは削除されました](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-37-100.jpg)
次に、ロールが「部長」であるアカウントでログインします。
![ロールが「部長」であるアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-38-100.jpg)
「編集」をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-39-100.jpg)
全てのフィールドデータが編集できました。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-40-100.jpg)
「部長」に対してレコードレベルの設定では「更新」を許可し、フィールドレベルの設定では全てのフィールドに「編集」を許可しているため、全てのフィールドデータが編集できました。
「削除」をクリックすると、以下のメッセージが表示され、レコードの削除はできませんでした。
![レコードの削除はできません](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-41-100.jpg)
次に、ロールが「リーダー」であるアカウントでログインします。
![ロールが「リーダー」であるアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-42-100.jpg)
「編集」をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-43-100.jpg)
「取引先名」を編集した場合のみエラーメッセージが表示され、それ以外のフィールドデータは編集できました。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-44-100.jpg)
「リーダー」に対してレコードレベルの設定では「更新」を許可し、フィールドレベルの設定では「取引先名」以外のフィールドに「編集」を許可しているため、「取引先名」以外のフィールドデータが編集できました。
「削除」をクリックすると、以下のメッセージが表示され、レコードの削除はできませんでした。
![レコードの削除はできません](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-45-100.jpg)
次に、ロールがないアカウントでログインします。
![ロールがないアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-46-100.jpg)
「編集」をクリックし、「取引先マスタ編集」画面からデータを編集して「登録」ボタンをクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-49-100.jpg)
全てのフィールドデータに対してエラーメッセージが表示され、データの編集はできませんでした。
「誰でも」に対してレコードレベルの設定では「更新」を許可していますが、フィールドレベルの設定では全てのフィールドに「編集」を許可していないため、データは編集できませんでした。
「削除」をクリックすると、以下のメッセージが表示され、レコードの削除もできませんでした。
![データベースへの更新操作に失敗しました](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-50-100.jpg)
以上、データレベルのアクセス制御を使って、ロール毎にアクセス権を設定することができました。
次に、セルのアクセス制御を使ってみます。
ページ「取引先情報」の「新規追加」セルを選択し、セル型にある「セルのアクセス制御…」をクリックして、「セルのアクセス制御」の画面を表示します。
今回は以下のように設定します。
![「セルのアクセス制御」の画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-51-100.jpg)
以上の設定で、動作を確認してみます。
ロールが「Administrator」であるアカウントでログインします。
![ロールが「Administrator」であるアカウント](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-52-100.jpg)
「新規追加」をクリックし、「取引先マスタ編集」画面からデータを入力して「登録」をクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-53-100.jpg)
データが追加されました。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-54-100.jpg)
ロールが「Administrator」以外であるアカウントでログインします。
![ロールが「Administrator」以外であるアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-55-100.jpg)
「新規追加」をクリックしても、何も起こりません。
セルのアクセス制御が機能していることを確認できました。
上記は、セルのアクセス制御の中の「使用可能権限」を利用したため、次は「表示権限」を設定してみます。
![「表示権限」を設定](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-57-100.jpg)
以上の設定で、動作を確認してみます。
ロールが「Administrator」であるアカウントでログインします。
![ロールが「Administrator」であるアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-57_1-100.jpg)
「新規追加」をクリックし、「取引先マスタ編集」画面からデータを入力して「登録」をクリックします。
![「取引先マスタ編集」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-58-100.jpg)
データが追加されました。
![取引先情報](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-59-100.jpg)
ロールが「Administrator」以外であるアカウントでログインします。
![ロールが「Administrator」以外であるアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-60-100.jpg)
「新規追加」セルが表示されていません。
セルの表示権限が機能していることを確認できました。
![マスターページのメニュー項目](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-61-100.jpg)
他に、「ページ表示権限」によるアクセス制御もあります。こちらはページごとに閲覧権限を設定するものです。
試しに、ページ「取引先情報」に「ページ表示権限」を設定してみます。
「ユーザー認証」タブの「ページ表示権限の管理」をクリックして、「ページ表示権限の管理」画面から設定します。
今回は以下のように設定します。
![「ページ表示権限の管理」画面](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-63-100.jpg)
ページ「取引先情報」の表示は、ロールが「Administrator」に限定します。
動作を確認します。
ロールが「Administrator」であるアカウントでログインします。
![ロールが「Administrator」であるアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-63_1-100.jpg)
「取引先情報」画面は表示されます。
ロールが「Administrator」以外であるアカウントでログインします。
![ロールが「Administrator」以外であるアカウントでログイン](https://forguncy.zait.jp/wp-content/uploads/2022/01/アートボード-64-100.jpg)
「取引先情報」画面を表示することができませんでした。
いかがでしたでしょうか。
テーブルやセル、ページごとに必要に応じてアクセス権を設定することができました。
今後もForguncyに用意されている機能を使って、簡単にアップグレードしてみたいと思います。