Salesアプリケーションのデモ
このページでは、事前定義された認証メカニズムによってアクセスを制御する販売アプリケーションのデモを示します。そのアプリケーションの名前はSalesです。
このアプリケーションを通じて、階層化されたロールアプローチの使用方法を示します。このシンプルなアプリケーションには、エンドユーザーモジュールが1つのみ含まれています。そして、このモジュールには複数の画面が含まれています。階層化されたロールアプローチを必要とする今後のビジネスアプリケーションは、このアプリケーションに似たものになるでしょう。
この記事で説明している階層化されたロールの例をOutSystems Forgeからダウンロードして、開発インフラ環境でパブリッシュします。これを参照として使用するか、コードを調整してビジネスケースを実装します。
最初の記事で、ロールの概要とそれぞれの用途について説明しました。
-
画面レベルの認証メカニズム: どのユーザーがどの画面にアクセスできるか
-
表示される情報の制御: どのユーザーが画面内で何を閲覧できるか
-
使用可能なアクションの制御: どのユーザーが何を更新/挿入/削除できるか
新しい階層化されたロールアプローチを使用して、このような3つのシナリオに対応する方法について説明します。
画面レベルの認証メカニズム
開発インフラのどのロールがセールス画面にアクセスできるかを制御するには、ビルトインの画面のRoles機能を利用します。
このアプリケーションのすべての画面で、前に作成した固有のロール(Sales)を割り当てる必要があります。
表示される情報の制御
画面のPreparationで、前に説明したHasAccessByFunctionIdアクションを呼び出します。この方法で、特定のユーザー/職務に画面全体または画面の一部へのアクセス権限があるかどうかを特定します。
ユーザーに画面へのアクセス権限がないときは、例外を発生させ、[Invalid Permissions]画面にユーザーをリダイレクトします。
以下の図は、ロジックのHasAccessByFunctionIdアクションと例外を示しています。
使用可能なアクションの制御
ユーザーがレコードの更新やレポートのインポートなどのアクションを実行できる画面で、これらのアクションに対するユーザーの権限を検証する必要がある場合があります。この検証を実行するには、それらの画面のPreparationでGetPermissionsByUserIdを呼び出します。このアクションの出力を確認すると、ユーザーに読み取り/書き込みの権限があるかどうかを確認できます。
以下の図は、[SalesDashboard]画面のPreparationを示しています。
以下の図は、PreparationロジックでのGetPermissionByUserIdアクションの使用と、権限を確認するための割り当てを示しています。
Salesモジュールは、以下のようになります。
SalesDashboard画面
[SalesDashboard]画面にはすべてのロールがアクセスできます。この画面はホームページであり、職務による制限はありません。
PreparationでGetPermissionsByUserIdアクションを呼び出して、画面の一部を表示または非表示にし、画面での操作を許可または禁止します。
以下の2人のユーザーと2つの職務について考えます。
-
Account ManagerであるAgnes Marvs
-
AgentであるAngela Arthur
バックオフィスの構成でAccount Managerロールに読み取り/書き込み権限を付与し、Agentロールに読み取り専用権限を付与することができます。
以下の図に示されているように、Account ManagerであるAgnes Marvsは「Pay Bills」アクションと「Transfer」アクションを実行できます。
AgentであるAngela Arthurにはアクションが表示されません。
その他の画面
その他のダッシュボードは職務専用です。つまり、階層内の指定された職務またはそれより上位の職務のみがダッシュボード画面にアクセスできます。例を2つ示します。
-
DashboardAgent(Agent専用): Agentは階層内で最も低いため、すべての職務がアクセスできます。
-
DashboardRegionalManager(Regional Manager専用): Regional Manager以上のロールのみがアクセスできます。Account ManagerやAgentの職務はこの画面にアクセスできません。
このアクセスを実装するには、PreparationでHasAccessByFunctionIdアクションを追加し、画面へのアクセスを制限または許可する必要があります。
同じユーザーと同じ職務、つまり、Agnes Marvs(Account Manager)およびAngela Arthur(Agent)を使用して実際に示します。
Agentの職務は、[Dashboard Agent]にアクセスします。
Account Managerまたはその他の任意の職務は、[Dashboard Agent]にアクセスします。
Account Managerの職務は、[Dashboard Account Manager]にアクセスします。
Agentロールは、[Dashboard Account Manager]にはアクセスできません。