30分で出来るログインフロー

こんにちは。お初にお目にかかります、西日本ソリューションの勝田です。

皆様、標準カスタマイズしてますでしょうか。
何事も「実際に試してみる」以上の学習方法は無いわけですが、
日々の業務に追われて試す暇が無い!という方も多いかと思います。
そこで、「出来るだけ短時間で動作させる」という方針で設定例をご紹介したいと思います。

今回は、ログインフローを取り上げてみます。
セキュリティ、運用上の要件などで、ユーザのログイン可否を制御したいケースは多いと考えますが、
プロファイルでログインを制限すると、ログアウト不可の場合、ユーザ様にその理由は詳しく表示されません。

これでは、なぜログインできなかったのか分かりません・・・・・。
このままではシステム管理者の負担は増えるばかりです。

そこで「ログインフロー」です。

【ログインフローについて】

ログインフローはWinter'15の新機能としてリリースされました。
ログイン時にプロファイル毎にフローを実行し、ログインの制御やその他の処理を行うことが可能です。
本ブログでもDreamforce'2014 参加レポート -Winter'15新機能:ログインフローとして
紹介されておりますが、今回は実際に設定をおこなってみます。

【想定する要件】

A社ではプロファイルではログインは制限されていませんが、
所属するプロファイルに関わらず一部の社員のみ土日にログイン可能としたい。
ログイン可能でないユーザの場合には、サポートセンターに連絡を行うよう
メッセージを出力したい。

【設定手順】

1.ユーザカスタム項目「土日ログイン可能(HolidayLogin)」の項目を作成します。(5分)

2.フローを作成します。(20分)

① 設定メニューから「フロー」を検索し、新規作成を押下します。


② 最初にフロー内で利用する変数を設定します。

以下の3種類の変数を設定してください。

"LoginFlow_" から始まる2つの変数はフロー内で特別な意味を持つ変数です。

詳細はこちらから確認できますが、今回利用するものに関しては抄訳を記載しておきます。

(必ず元ドキュメントもご確認ください)

■ログインフロー起動時に自動的に設定される変数

変数名

説明

LoginFlow_UserId

ログイン中のユーザID 18桁

■設定を行うことで特定の動作を行う変数

変数名

説明

LoginFlow_ForceLogout

ユーザを即座にログアウトさせたい場合、Tureを設定します。

変数はリソースタブから新規作成可能です。

 ・ログイン中のユーザIDを保持(LoginFlow_UserId)

・強制ログアウト用(LoginFlow_ForceLogout)

・土日ログイン可能項目の保持(EnableHolidayLogin)

③ ログイン処理中のユーザIDからHolidayLoginの項目を取得し、変数 EnableHolidayLoginに結果を保持します。

パレットタブのレコードから「レコードの検索」を選択し、以下のとおり設定してください。

また設定を行った後、アイコンの右上から、「開始要素として設定」を選択して下さい。

④ 変数EnableHolidayLoginに保持された値により処理を分岐します。

パレットタブのロジックから「決定」を選択し、以下のとおり設定してください。


分岐の選択肢は「結果を追加」から行います。

⑤ LoginEnableに分岐した場合、ログイン時のメッセージを表示します。

パレットタブのユーザインターフェイスから「画面」を選択し、以下のとおり設定してください。

項目の設定を行うためには、事前に項目の追加から出力テキストを追加しておく必要があります。

⑥ LoginDisableに分岐した場合、ログアウト時のメッセージを表示します。

パレットタブのユーザインターフェイスから「画面」を選択し、以下のとおり設定してください。
項目の設定を行うためには、事前に項目の追加から出力テキストを追加しておく必要があります。

⑦ ログアウトメッセージを表示した後、変数 LoginFlow_ForceLogout に Trueを設定します。

ログアウトのメッセージを表示する前にこの設定を行うと、ログアウトメッセージは表示されません。
パレットタブのロジックから「割り当て」を選択し、以下のとおり設定してください。

⑧ LoginFlow_ForceLogoutの処理を実行させるため、ダミー画面を表示します。

LoginFlow_ForceLogoutは画面が表示された場合に動作に反映されるため、
この設定が存在しない場合、ログアウトが行われません。
特に中身を設定する必要はありません。

⑨ 下図のとおり各処理を接続してください。

Branchから接続を行う際は、予めBranch内で設定した分岐を選択する必要があります。

⑩ フローを保存します。

保存後にフローを有効化してください。

3.ログインフローを設定します。(5分)

ログインフローはプロファイル毎に設定することにご注意ください。

【動作確認】

では、早速動かしてみましょう。

土日ログイン可のチェックを外したユーザでログインすると・・

エラーメッセージが表示された後、「次へ」を押下するとログアウトされます。

なお、この時点で特定のレコードに直接アクセスを試みても、次のような画面が表示され
ログインできていないことが確認できます。

【注意すること】

・プロファイルによるログイン制限はログインフローより先に判定されます

仮にプロファイルにより土日のログインが制限されている場合は、
ログインフローの判定に関わらずログイン不可です

・ログインフローの設定はプロファイル毎です

ログインフローによる判定が行われていない場合、
まずは対象ユーザのプロファイルに対して設定が行われているか確認してください。

・一旦保存したフローを編集した場合は「保存」できません

「別名で保存」を選んだ上で、新しいバージョンとして保存してください。

・システム管理者による代理ログインではログインフローは動作しません。

【最後に】

皆様、想定どおり動作できましたでしょうか。
実際の案件ではフロー内からApexコードを呼ぶなど、更に複雑なログイン処理を構築することも可能です。
Salesforceにはこのような細やかなログイン処理にも対応できる仕組みが標準で用意されておりますので、
セキュリティを高めると共に、ユーザビリティにも配慮したシステムを容易に構築できます。