# パスワードダイアログによる簡易的な保護

マニュアル > 画面作成ガイド > セキュリティ > # パスワードダイアログによる簡易的な保護 |

パスワードダイアログによる簡易的な保護

この方法は、FA-Panelにあらかじめ用意されている「パスワードダイアログ」を利用した簡易的な方法です。ユーザーレベルとは関係なく、毎回パスワードをオペレータに入力させて、確認が取れた時だけ処理を行いたい場合には、この方法が最もスマートです。

パスワードダイアログはコモンダイアログの１つで、スクリプトから呼び出すことができます。

例えば、ある特定の画面表示に対して保護を掛けたい場合、ロック対象となるポイントは画面呼び出しボタンのクリックイベントです。このイベント内でパスワードダイアログを呼び出し、パスワードの合否に応じて対象画面を表示するか否かを判定するような仕組みにします。

パスワードダイアログによる保護の実装例

ここでは、パスワードダイアログを利用した保護の実装例を紹介します。

例として、常時は無効状態になっているボタンを、パスワードダイアログから正しいパスワードが入力された時に有効に切り替える処理を作成してみます。

1.フォームにボタンを貼り付ける

Form01上に、以下のようなイメージでボタンを貼り付けます。

| •上２つのボタンのTextを、“ボタン有効化”、“ボタン無効化”にする •下３つのボタンのTextを、“ボタン１”、“ボタン２”、“ボタン３”にする •下３つのボタンのNameを、“Btn1”、“Btn2”、“Btn3”にする •下３つのボタンのEnabledをFalseにする

2.有効化ボタンのOnMouseUpの記述

ボタンのクリック時にパスワードダイアログを表示し、パスワードが正しい時のみ各ボタンを有効にするようにします。

有効化ボタンのOnMouseUpイベントに、以下のスクリプトを記述します。

    event OnMouseUp(button)
    {
    	if (parent.Btn1.Enabled == F ) {
    		::OpenPassword(this, "pass", "inputagain");
    	}
    }

ここで、第2引数に指定している文字列（この例では“pass”）が、パスワードの実体になります。また、第3引数で“inputagain”と指定すると、誤ったパスワードが入力された時にダイアログを再表示してパスワードの再入力を促す動作となります。

3.有効化ボタンのOnCommonEventの記述

有効化ボタンのOnCommonEventイベントに、以下のスクリプトを記述します。

    event OnCommonEvent(name,value)
    {
    	if (value && name == "RCPassword") {
    		parent.Btn1.Enabled = T;
    		parent.Btn2.Enabled = T;
    		parent.Btn3.Enabled = T;
    	}
    }

4.無効化ボタンのOnMouseUpの記述

無効化ボタンのOnMouseUpイベントに、以下のスクリプトを記述します。

    event OnMouseUp(button)
    {
    	parent.Btn1.Enabled = F;
    	parent.Btn2.Enabled = F;
    	parent.Btn3.Enabled = F;
    }

5.動作確認

Panel Browserで実行します。

初期状態では、ボタン１，２，３が無効の状態です。ボタン有効化をクリックして下さい。

6.パスワードダイアログが表示されました。試しに誤ったパスワードを入力してみて下さい。

誤ったパスワードが入力されると、以下のようなエラーメッセージが表示されます。

“inputagain”を指定しているため、パスワードダイアログは表示されたままの状態です。

続いて、正しいパスワードを入力して下さい。

各ボタンが有効状態になりました。

ボタン無効化をクリックすると、各ボタンが無効状態に戻ります。

このような実装パターンは、例えば設備の運転パラメータの編集時など、保護を掛けたいボタンの操作時にパスワードの入力を求め、ひととおりの操作が終了した後でボタンを無効に戻したい、といった場面で効果的な手法です。