【Salesforce】Apexでログイン履歴を取得する

【Salesforce】Apexでログイン履歴を取得する

Salesforceの標準機能で、ログイン履歴を取得することが出来ますね。

[設定]>[ユーザの管理]>[ログイン履歴]と遷移することで、ログイン履歴を取得することができます。

先日、SalesforceのSObjectを一覧にして眺めていると、ログイン履歴というレコードを見つけました。

項目を見てみると、「ログイン履歴」で表示されている項目と一致するようです。

調べてみると、SOQLで取得できるようです。

https://developer.salesforce.com/docs/atlas.ja-jp.208.0.api.meta/api/sforce_api_objects_loginhistory.htm

ということは、自動でログイン履歴を保存することも出来るわけですね。

List<LoginHistory> loginHistoryList;

// 前日のログイン履歴を取得する
loginHistoryList = [select
                        Id,
                        UserId,
                        LoginTime,
                        SourceIP,
                        Status
                    from 
                        LoginHistory
                    where
                       LoginTime = YESTERDAY];

毎日のバッチであればこのようなクエリで前日のログイン履歴を取得することが出来ます。

毎月であれば「LoginTime = YESTERDAY」を「LoginTime = LAST_MONTH」にするだけです。

List<LoginHistory> loginHistoryList;

// 前月のログイン履歴を取得する
loginHistoryList = [select
                        Id,
                        UserId,
                        LoginTime,
                        SourceIP,
                        Status
                    from 
                        LoginHistory
                    where
                       LoginTime = LAST_MONTH];

取得したレコードをCSV等に吐き出してドキュメント等に保存すれば、ログイン履歴の管理ができますね。

レコードの件数が多すぎるようであれば、特定のものだけを抜き出しても良いですね。

List<LoginHistory> loginHistoryList;

// 前月のログイン履歴を取得する
loginHistoryList = [select
                        Id,
                        UserId,
                        LoginTime,
                        SourceIP,
                        Status
                    from 
                        LoginHistory
                    where
                       LoginTime = LAST_MONTH
                    and
                       UserId IN (select
                                      Id
                                  from 
                                      User
                                  where
                                      Profile.Name = 'システム管理者')];

システム管理者のログイン情報のみを抜き出しています。

Statusで絞込を行えるかと思ったのですが、残念ながらフィルタリングできない項目でした。

イベントログと違ってすぐにレコードが作成されるようなので、ログイン履歴に関してはこちらの方が良いかもしれませんね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です