この特集のトップページへ
>
Chapter 7:プレゼンテーション層の構築
●権限によって編集できる情報を変更する
Fig.7-24に示したFormEditCustomerフォームには,多数のテキストボックスが載せられているが,すべての項目をユーザーが編集できるというわけではない。
まず,次のテキストボックスは,ユーザーが編集することはできない。
TXT_ID
顧客番号は,ビジネスロジックによって顧客がデータベースの顧客情報テーブルに追加されたときに自動的に設定される。よってユーザーが編集することはできない。TXT_MADEUSER,TXT_LASTUSER
顧客の作成者(TXT_MADEUSER)と顧客の最終更新者(TXT_LASTUSER)はビジネスロジックによって自動的に設定されるので,ユーザーが編集することはできない。TXT_MADEDATE,TXT_LASTDATE
顧客の作成日(TXT_MADEDATE)と顧客の最終更新日(TXT_LASTDATE)はビジネスロジックによって自動的に設定されるので,ユーザーが編集することはできない。
そこで,これらのTXT_ID,TXT_MADEUSER,TXT_LASTUSER,TXT_MADEDATE,TXT_LASTDATEの5つのテキストボックスをユーザーが編集できないように設定する。それには,テキストボックスのEnabledプロパティをFalseに設定すればよい(Fig.7-25)。
Fig.7-25 Enabledプロパティの設定
この5つのテキストボックス以外にも,属するロールの種類によっては操作できないものがある。
まず,TXT_BILLDAYテキストボックスは締め日を設定するものだが,Accounting,AccountingManager,AllAdminというどのロールにも属さないユーザーは操作できない。また,それ以外のすべてのテキストボックスは,Sales,SalesManager,SalesAdmin,AllAdminというどのロールにも属さないユーザーは操作できない。
そこで,FormEditCustomerフォームがロードされたときに,ユーザーがどのロールに属しているのかを調べ,属するロールに応じて,テキストボックスが編集できるかできないかをEnabledプロパティの値として設定するような処理を実装する。先に説明したように,フォームがロードされるときにはLoadイベントが発生するから,その処理はLoadイベント内に記述すればよい。実際に処理を実装したものが,List 7-7である。List 7-7は,List 7-6に示した処理とほぼ同じで,Business.Utilityコンポーネントを実体化し,GetUserInRoleメソッドを呼び出して所属するロールを調べ,各テキストボックスのEnabledプロパティの値をTrueまたはFalseに設定しているだけである。
Chapter 7 12/65 |