LoginSignup
5
5

More than 5 years have passed since last update.

PowerAppsで利用者の所属グループを判定するFlow

Posted at

やりたかったこと

PowerAppsでアプリを作る際に、「管理者モード」と「利用者モード」を用意したかった。
ただしアプリを分けるのではなく、ログインユーザー(アプリの利用者)に応じて1つのアプリで。

今回はこれを実現するために、アプリの管理者をまとめたセキュリティグループを作成して、アプリの利用者がそのグループのメンバーかを判定するFlowを作成しましたので、紹介します。

参考にしたのは:Geetha Sivasaliamさんのブログ

用意するもの

  • AzureAD connectorで「ユーザーのグループを取得」できるアカウント
  • 3画面作ったPowerAppsアプリ(テスト用)

AzureAD connectorで利用するアカウントはFlow内で使いまわします。この手順は後ほど

Flowを作る

まずは変数を2つ作成します。IsMemberとGroupID。
GroupID: PowerAppsから渡します。アプリによって判定するグループを変更するため変数化します
IsMember: 利用者がGroupIDで指定されるグループに所属するかどうかのフラグです
inivariable.PNG

AzureAD connectorでアプリ利用者のメールアドレスをキーにして、所属グループ一覧を取得します。
searchGroup.PNG

一覧を取得後、ForEachで取得したグループのIDが、GroupIDに等しいかを判定します。
一致したらIsMemberをTrueに変更。
foreach.PNG

最後にIsMemberをPowerAppsに返します。
respond.PNG
※なぜかBooleanを返しているはずが、あとで見るとStringになっている。。。

PowerAppsでの確認

PowerAppsではデフォルトのスクリーンのOnVisibleに作成したFlowの実行を設定します。

タイマーコントロールは、Flowの実行結果を監視するために利用しています。
タイマーのOnTimerEndで、Flow実行が終わったら、かつグループのメンバーだったら「Admin Screen」に遷移、メンバーではなかったら「User Screen」に遷移させます。
powerapp1.PNG
グループIDさえ変えてしまえば、ほかのアプリでも流用できます。

最後に

Flowを作成したユーザー以外がこのFlowを使う場合には、Flowを共有する際に、Connectorの接続アカウントで「実行専用のユーザーによって・・・」を使わないように注意してください。
最初の接続時にAzureAD Connectorを実行できるユーザーでのサインインが発生するので。
embedd.PNG

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5