【Tips】特定のユーザーに特定のフィールドを操作させてくない

前々回、レポートを非表示にするというテーマで非表示への対処法を記載した。

これに類似するような要件で掲題の要望もよく発生する。

「操作させたくない」は「見せたくない」を含むものとして捉えて頂いても構わない。

このような要望に対して、どのような実装方法があるだろうか。

ぱっと思いつくものとしては以下があげられる。

・OnloadのJScriptで非表示にするなど、スクリプトによる制御

・保存時にデータベース上の値と比較して、警告を表示させるようなPluginによる制御

・フィールドセキュリティ機能を利用した制御

簡易な実装、簡易な運用を想定したとき、上記の方法はいずれも難がある。

上2つに関しては単純であるがコーディングが発生する。

フィールドセキュリティに関してはユーザーの増加時、グループに参加させるなど追加運用が発生する。

他には方法はないだろうか。

1つ提案できる方法としては「複数フォームとセキュリティロールによる制御」である。

例えば、取引先企業に[取引先企業番号]という項目が存在するとする。

これは、顧客を判別するキー項目であるとし、一般のユーザーには変更等操作をさせたくないとする。

この場合、まずは以下のようにフォームを2つ準備する。

・取引先企業番号フィールドに対し制御がないフォーム

2014-10-21 13_49_07

・取引先企業番号フィールドに対し制御があるフォーム

2014-10-21 13_49_21

これらのフォームに対し、以下のセキュリティロールを2つ作成する。

2つというところがポイントであり、設定内容は全く同じでかまわない。

2014-10-21 13_52_45

作成したセキュリティロールはそれぞれのフォームに割り当てる。

割り当てる手順はフォームのカスタマイズの[セキュリティロールの有効化]

2014-10-21 13_56_35

上記の場合は制御なしであるため、制御なしと位置付けたセキュリティロールに割り当てる。

2014-10-21 13_55_26

制御ありも同様に設定することで準備は完了である。

あとはユーザーへのセキュリティロール付与であるが、これは制御すべきか否かで適用すればいい。

制御しないユーザーの表示:crmuser1([営業担当者 編集可]のセキュリティロール付与)

[企業番号制御なし]のフォームのみが表示され、番号は編集できる状態のものが表示される。

2014-10-21 14_03_22

制御しするユーザーの表示:crmuser2([営業担当者 読み取り専用]のセキュリティロール付与)

[企業番号制御あり]のフォームのみが表示され、番号は編集できない状態のものが表示される。

2014-10-21 14_06_23

以上。

フォームとセキュリティロールを利用した対処法を提示してみた。

注意点はレポート時と同様「高度な検索」である。

上記の例は読み取り専用であったが、フォーム上非表示とした場合は高度な検索に注意が必要である。

列の追加をしてしまえば、高度な検索で値が表示されてしまう。

これも制御したいということであれば、Pluginで制御するような複雑な制御が必要となってくる。

従って、要件レベルを確認すると共に制御の程度が低い対処法でも

問題ないと位置付けて設計/実装することが大切である。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中