LightSwitch HTML Client でアクセス権によって利用できる機能を制限する方法 ~ Part 2

前の記事で HTML Client でアクセス権制御する方法を紹介しました。
LightSwitch にしては珍しく、サーバーサイド (C#) でもクライアントサイド (jQuery) でもコードが必要になります。それでも他のツールに比べると簡単に実現できるのではないでしょうか。

さて、確かに一見うまく動いているように見えますが、実際に起動してみると問題があるのが分かると思います。
画面の生成後に非同期でアクセス権を取得しに行くため、権限有無に関わらずボタンを押せてしまう時間が出てきます。マズいですね。

対処方法は簡単で、

  • 初期状態ではボタンを非表示にしておく
  • アクセス権を取得した後で、権限によりボタンを表示する

とすればいいだけです。難しい話ではありませんが、念のため実際にステップバイステップで紹介します。

1. ボタンの初期状態を非表示にする

プロパティウィンドウで [表示] チェックボックスをオフにします。それだけです、簡単ですね。

image

2. 画面の created イベントハンドラーの変更

権限があればボタンを表示する、とすればいいので、1行追加します。ここも簡単。

image

  1. /// <reference path=”../GeneratedArtifacts/viewModel.js” />
  2. myapp.Home.created = function (screen) {
  3.     // Write code here.
  4.     $.getJSON(“../Perms/UserPermissions/”, function (data) {
  5.         myapp.permissions = data;
  6.         if (myapp.permissions[“LightSwitchApplication:EditCustomer”]) {
  7.             screen.findContentItem(“AddCustomer”).isVisible = true;
  8.             screen.findContentItem(“AddCustomer”).isEnabled = true;
  9.         }
  10.         else {
  11.             screen.findContentItem(“AddCustomer”).isEnabled = false;
  12.         }
  13.     });
  14. };

以上です。なんだ、簡単じゃん(笑)。


せっかくなので、関連する話題をもう一つ。
ボタンを非表示にするのではなくて無効状態で表示したい場合は、

  • プロパティーウィンドウで [無効な場合は表示されません] をオフにする
  • 画面の created をさらに一部変更

の2つの変更で OK です。要は、デフォルト非表示にして、「権限がある場合」に isVisible = true; にした上で、isEnabled で有効/無効を操作するということですね。

  1. /// <reference path=”../GeneratedArtifacts/viewModel.js” />
  2. myapp.Home.created = function (screen) {
  3.     // Write code here.
  4.     $.getJSON(“../Perms/UserPermissions/”, function (data) {
  5.         myapp.permissions = data;
  6.         if (myapp.permissions[“LightSwitchApplication:EditCustomer”]) {
  7.             screen.findContentItem(“AddCustomer”).isEnabled = true;
  8.         }
  9.         else {
  10.             screen.findContentItem(“AddCustomer”).isEnabled = false;
  11.         }
  12.         screen.findContentItem(“AddCustomer”).isVisible = true;
  13.     });
  14. };

アクセス権がない場合はこんな感じに。

image

広告
カテゴリー: LightSwitch タグ: , パーマリンク

LightSwitch HTML Client でアクセス権によって利用できる機能を制限する方法 ~ Part 2 への1件のフィードバック

  1. ピンバック: LightSwitch HTML Client でアクセス権によって利用できる機能を制限する方法 ~ Part 1 | 技術との戯れ

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中