<< Click to Display Table of Contents >> マニュアル > 画面作成ガイド > セキュリティ > ログイン機能によるセキュリティ保護 > ユーザーレベルによる保護 |
セキュリティタグとは
Panel Serverに対するログインが成功すると、Panel ServerからPanel Browserへ「ユーザーレベル」が通知されます。
ユーザーレベルは0から100までの数値で、Panel Serverにあらかじめ登録されたユーザー情報とともに定義された番号です。Panel Serverから通知されたユーザーレベルは、ルートのPSUserLevelプロパティに格納されます。
このPSUserLevelルートプロパティにブラウザタグを出力バインドするように設定しておくことにより、ユーザーレベルの値と同期したブラウザタグを作成することができます。このタグのことを「セキュリティタグ」と呼びます。
セキュリティタグを作成しておくことで、クライアント側の様々な処理からセキュリティレベルを簡単に利用することができるようになります。
ブラウザタグはPanel Browserのみで使用されるタグです。ブラウザタグに関する詳細については、「ブラウザタグ」を参照してください。 |
セキュリティタグを作成する
セキュリティタグの設定手順は以下のとおりです。ここでは例として、ブラウザタグ「$D0」を使用します。
1.Panel Editorを起動し、プロパティダイアログからルートを選択する。
2.バインドタブを開き、PSUserLevelルートプロパティにセキュリティタグとして動作させたいタグに出力バインドを行う。
ここでは例として、ブラウザタグ「$D0」をセキュリティタグとして使用します。尚、バインドするタグは、数値型であればどのタグでもかまいません。
バインドダイアログの設定例(かんたん設定タブ)
プロパティ |
かんたん設定の内容(ダイレクトリンク) |
バインド式 |
PSUserLevel |
OUT:$D0 |
OUT:$D0 |
上記の設定により、$D0をセキュリティタグとして利用することができるようになります。
ユーザーレベルによるコントロールの操作ロック
上記にて作成したセキュリティタグを利用して、ユーザーレベルに応じてコントロールの操作可否を簡単に切り替えることができます。
設定の内容としては、目的のコントロールのEnabledプロパティにセキュリティタグを入力バインドするだけでOKです。
例として、エディットコントロールの操作をユーザーレベルに応じてロックする設定方法を紹介します。
※以下、ブラウザタグ「$D0」がセキュリティタグとして設定されているものとします。
1)ユーザーレベルによる操作制限を設定したいコントロール(この例ではエディットコントロール)を選択し、バインドタブを開く。
2)エディットコントロールのEnabledにセキュリティタグの比較式をバインドする。
ここでは例として、「$D0 >= 5」とします。
エディットコントロール
プロパティ |
かんたん設定の内容(ダイレクトリンク) |
バインド式 |
Enabled |
$D0 >= 5 |
$D0 >= 5 |
3)Panel Serverをオンラインの状態にし、Panel Browserを実行してみます。
ユーザーレベルが5未満の時、エディットコントロールは操作不能になります。
上記のエディットボックスは、ユーザーレベルが5以上のユーザーでログインすると有効になります。
フォームに存在するすべてのコントロールを一括でまとめてロックしたい場合は、フォームのEnabledプロパティにセキュリティ条件をバインドすることで対応可能です。 |
コントロールの中には、EnabledプロパティがFALSEになると、表示が淡色になるものがあります。表示色などの外観を変えずにマウスやキーボード操作のみをロックしたい場合は、EnabledInputプロパティの方にバインドする事で対応可能です。 |
スクリプトからのユーザーレベル参照
スクリプトからユーザーレベルを取得するには、ルートのPSUserLevelプロパティを直接参照します。
以下の例では、ボタンのクリックに応じて以下のような動作となります。
•ユーザーレベルが1の時はForm02を開く
•ユーザーレベルが2の時はForm03を開く
•ユーザーレベルが3の時はForm04を開く
event OnMouseUp(button) { switch (::PSUserLevel) // ユーザーレベルにより判定 { case 1 : ::OpenForm("Form02"); // Form02を開く break; case 2 : ::OpenForm("Form03"); // Form03を開く break; case 3 : ::OpenForm("Form04"); // Form04を開く break; default: ::OpenMsg("Can't open form"); // いずれでも無いときは開かない } }