UserLogin.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sunmoon<i@liming.me>
  5. * Date: 2019-07-30
  6. * Time: 16:47
  7. */
  8. namespace common\libs\logging\login;
  9. use common\helpers\Date;
  10. use common\helpers\Form;
  11. use common\models\forms\LogUserLoginForm;
  12. use common\models\Period;
  13. use Yii;
  14. class UserLogin {
  15. /**
  16. * 登录成功
  17. * @param $userInfo
  18. * @return LogUserLoginForm
  19. * @throws \Exception
  20. */
  21. public static function success($userInfo, $version){
  22. $returnResult = '';
  23. $successTimes = intval($userInfo['LOGIN_NUMS']) + 1;
  24. $result = self::recorder($userInfo['USER_NAME'], '1', $returnResult, $userInfo['FAIL_NUMS'], $successTimes, $version);
  25. return $result;
  26. }
  27. /**
  28. * 登录失败
  29. * @param $userInfo
  30. * @param $returnResult
  31. * @return LogUserLoginForm
  32. * @throws \Exception
  33. */
  34. public static function fail($userInfo, $returnResult){
  35. $failTimes = intval($userInfo['FAIL_NUMS']) + 1;
  36. $result = self::recorder($userInfo['USER_NAME'], '0', $returnResult, $failTimes, $userInfo['LOGIN_NUMS']);
  37. return $result;
  38. }
  39. /**
  40. * 记录器
  41. * @param $account
  42. * @param $optType
  43. * @param $returnResult
  44. * @param $failTimes
  45. * @param $successTimes
  46. * @return LogUserLoginForm
  47. * @throws \Exception
  48. */
  49. public static function recorder($account, $optType, $returnResult, $failTimes, $successTimes, $version = ''){
  50. $period = Period::instance();
  51. $periodNum = $period->getNowPeriodNum();
  52. $form = new LogUserLoginForm([
  53. 'user_name' => trim($account),
  54. 'ip' => Yii::$app->request->getUserIP(),
  55. 'created_at' => intval(Date::nowTime()),
  56. 'user_agent' => Yii::$app->request->getUserAgent(),
  57. 'period_num' => intval($periodNum),
  58. 'opt_type' => $optType,
  59. 'success_times' => intval($successTimes),
  60. 'fail_times' => intval($failTimes),
  61. 'device' => Yii::$app->request->getDevice(),
  62. 'request_route' => Yii::$app->requestedRoute,
  63. 'return_result' => $returnResult,
  64. 'version' => $version,
  65. ]);
  66. if(!$form->add()){
  67. throw new \Exception(Form::formatErrorsForApi($form->getErrors()));
  68. }
  69. return $form;
  70. }
  71. }