【Power Apps】Power Appsでアクセス権限を実装する際のポイント

「この画面は部長だけアクセスできるようにしてほしい」、「この画面に一般社員がアクセスできるとセキュリティ面が心配・・・」などのアクセス権限に関する実装要望は少なくありません。

この記事では、Power Appsで画面のアクセス権限を実装する方法を紹介します。

アクセス権限を実装する前に知っておくべき前提知識

アクセス権限を実装するには、以下の要素が必要です:

  • If関数やSwitch関数
  • User関数
  • 適切なテーブル設計

以下で、それぞれについて紹介します。

If関数やSwitch関数

マイクロソフトの公式ドキュメントでIf関数の構文は

If条件1ThenResult1 [, 条件2ThenResult2, … [, DefaultResult ] ] )

マイクロソフトの公式ドキュメントでSwitch関数の構文は

Switch数式一致1結果1 [, 一致2結果2, … [, デフォルトの結果 ] ] )

一般的には、1つの条件に対して判断を行う場合はIf関数を使用し、条件分岐で判断して実行を行う場合はSwitch関数を使用します。ただし、If関数を使って条件分岐で判断することも可能です。

これら2つの関数は、Power Appsで画面のアクセス権限を実装する際に欠かせません。

User関数

Power AppsのUser関数の構文は

User()

User関数を使えば、ログインユーザーの情報を取得できます。User関数で取得できるログインユーザーの情報は下記となります:

  • メールアドレス
  • フルネーム
  • Microsoft Entraのオブジェクト ID
  • プロフィール画像のURL

例えば、以下のコードを記述すると:

User().Email

ログインユーザーのメールアドレスを取得できます。

User関数は、アクセス権限を実装する際に欠かせない重要な関数です。

適切なテーブル設計

アクセス権限を実装する際には、権限を管理・コントロールするためのテーブルが必要です。このテーブルには、最低限以下の必須列が含まれるべきです。:

  • Email
  • ロール

これら2つの列が必要な理由は、User関数とIf関数を活用するためです。

実装例

実例を示しながら解説しますので、まず以下の従業員テーブルを用意します:

employee_idnamemailrole
1山田花子YamadaHanako@xxx.com部長
2山田一郎YamadaIchiro@xxx.com課長
3鈴木太郎SuzukiTaro@xxx.com係長

次に、3つのテキストコントロールを用意します:

「部長ロールが見えます」テキストコントロールのVisibleプロパティに以下のコードを記述します:

If(
LookUp(
AccessTable,
mail = User().Email
).role = "部長",
true,
false
)

「課長ロールが見えます」テキストコントロールのVisibleプロパティに以下のコードを記述します:

If(
LookUp(
AccessTable,
mail = User().Email
).role = "課長",
true,
false
)

「係長ロールが見えます」テキストコントロールのVisibleプロパティに以下のコードを記述します:

If(
LookUp(
AccessTable,
mail = User().Email
).role = "係長",
true,
false
)

以上の実装が完了し、「山田一郎」のアカウントでPower Appsにログインすると、

↑「部長ロールが見えます」テキストコントロールと「係長ロールが見えます」テキストコントロールが非表示になり、「課長ロールが見えます」テキストコントロールだけが表示されます。

Visibleプロパティのコードを簡単に解説します。LookUp関数で従業員テーブルを検索し、User関数で取得したログインユーザーのメールアドレスと一致するレコードを抽出します。その後、If関数で条件を評価し、条件と一致すれば表示され、一致しなければ非表示となります。

この実装方法を活用することで、VisibleプロパティやDisplayModeプロパティにコードを記述し、画面のアクセス権限を制限することが可能です。

まとめ

今回の記事では、Power Appsでアクセス権限を実装方法について紹介しました。

アクセス権限を実装するには、If関数とUser関数を活用することに加え、アクセス権限を管理するためのテーブルを設計する際に、従業員メールアドレスとロールを格納する列を必須項目として設定する必要がありますです。

タイトルとURLをコピーしました