【Salesforce】Apexでログイン履歴を取得する
Salesforceの標準機能で、ログイン履歴を取得することが出来ますね。
[設定]>[ユーザの管理]>[ログイン履歴]と遷移することで、ログイン履歴を取得することができます。
先日、SalesforceのSObjectを一覧にして眺めていると、ログイン履歴というレコードを見つけました。
項目を見てみると、「ログイン履歴」で表示されている項目と一致するようです。
調べてみると、SOQLで取得できるようです。
ということは、自動でログイン履歴を保存することも出来るわけですね。
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.