LoginController.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <?php
  2. namespace App\Http\Controllers\Mobile\Auth;
  3. use Aix\Sms\Contracts\Smser;
  4. use App\Http\Controllers\Mobile\MobileBaseController;
  5. use App\Services\Auth\AuthService;
  6. use App\Services\Common\GeetestService;
  7. use App\Services\Common\SmsService;
  8. use App\Validators\AuthValidatorRequest;
  9. use Closure;
  10. use Illuminate\Support\Facades\Auth;
  11. use Illuminate\Support\Facades\Cache;
  12. class LoginController extends MobileBaseController
  13. {
  14. /**
  15. * @var AuthService
  16. */
  17. protected $authService;
  18. /**
  19. * @var SmsService
  20. */
  21. protected $smsService;
  22. /**
  23. * @var GeetestService
  24. */
  25. protected $geetestService;
  26. protected $sub_site = '';
  27. /**
  28. * LoginController constructor.
  29. * @param AuthService $authService
  30. * @param SmsService $smsService
  31. * @param GeetestService $geetestService
  32. */
  33. public function __construct(
  34. AuthService $authService,
  35. SmsService $smsService,
  36. GeetestService $geetestService
  37. )
  38. {
  39. $this->authService = $authService;
  40. $this->smsService = $smsService;
  41. $this->geetestService = $geetestService;
  42. /*$this->middleware(function ($request, Closure $next) {
  43. if (strpos($request->route()->getName(), 'mobile.logout') === false) {
  44. if (Auth::guard('web-member')->check() || Auth::guard('web-company')->check()) {
  45. return redirect(route('mobile.home'));
  46. }
  47. }
  48. return $next($request);
  49. });*/
  50. if (get_subsite_id() > 0) {
  51. $this->sub_site = 'jkq.';
  52. }
  53. }
  54. public function showLoginForm()
  55. {
  56. if (request()->has('redirect_url')) {
  57. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  58. }
  59. return view('mobile.app.auth.login', ['wap_title' => "个人登录"]);
  60. }
  61. public function showLoginMobileForm()
  62. {
  63. if (request()->has('redirect_url')) {
  64. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  65. }
  66. return view('mobile.app.auth.login_mobile', ['wap_title' => "个人登录"]);
  67. }
  68. public function showLoginCompanyForm()
  69. {
  70. if (request()->has('redirect_url')) {
  71. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  72. }
  73. return view('mobile.app.auth.login_company', ['wap_title' => "企业登录"]);
  74. }
  75. public function loginByAccount(AuthValidatorRequest $request)
  76. {
  77. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  78. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  79. // }
  80. if (!$member = $this->authService->loginByAccount($request->account, $request->password, $request->autoLogin)) {
  81. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  82. config('aix.system.site_safety.site_vo_code.members_login')
  83. );
  84. $redis = Cache::getRedis();
  85. $value = $redis->get('user_'.$request->account);
  86. //dd($value);
  87. if(!$value){
  88. $value = 0;
  89. }
  90. if($value >= 5){
  91. $redis->expire('user_'.$request->account,900);
  92. return $this->sendErrorResponse("连续登录失败5次,请15分钟后再尝试!", $data);
  93. }
  94. $redis->set('user_'.$request->account,++$value);
  95. return $this->sendErrorResponse("账号或密码错误或密码已超过90天未修改,请使用找回密码功能", $data);
  96. }
  97. if ($member->status == 0) {
  98. Auth::guard('web-member')->logout();
  99. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  100. }
  101. return $this->sendSuccessResponse([
  102. 'redirect_url' => url($request->session()
  103. ->pull('url.intended', route($this->sub_site . 'mobile.person.index')))]);
  104. }
  105. public function loginBySms(AuthValidatorRequest $request)
  106. {
  107. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  108. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  109. // }
  110. if (!$this->smsService->checkAuthSms(
  111. $request->mobile,
  112. Smser::TEMPLATE_AUTH_LOGIN,
  113. $request->code
  114. )) {
  115. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  116. config('aix.system.site_safety.site_vo_code.members_login')
  117. );
  118. return $this->sendErrorResponse("短信验证码不对", $data);
  119. }
  120. if (!$member = $this->authService->loginByAccount($request->mobile, '', $request->autoLogin)) {
  121. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  122. config('aix.system.site_safety.site_vo_code.members_login')
  123. );
  124. return $this->sendErrorResponse("用户不存在,请先注册账号", $data);
  125. }
  126. if ($member->status == 0) {
  127. Auth::guard('web-member')->logout();
  128. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  129. }
  130. return $this->sendSuccessResponse([
  131. 'redirect_url' => url($request->session()
  132. ->pull('url.intended', route($this->sub_site . 'mobile.person.index')))]);
  133. }
  134. public function loginByCompany(AuthValidatorRequest $request)
  135. {
  136. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  137. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  138. // }
  139. if (!$company = $this->authService->loginByCompany(
  140. $request->company_account,
  141. $request->company_password,
  142. $request->autoLogin
  143. )) {
  144. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  145. config('aix.system.site_safety.site_vo_code.members_login')
  146. );
  147. $redis = Cache::getRedis();
  148. $value = $redis->get('user_'.$request->account);
  149. //dd($value);
  150. if(!$value){
  151. $value = 0;
  152. }
  153. if($value >= 5){
  154. $redis->expire('user_'.$request->account,900);
  155. return $this->sendErrorResponse("连续登录失败5次,请15分钟后再尝试!", $data);
  156. }
  157. $redis->set('user_'.$request->account,++$value);
  158. return $this->sendErrorResponse("账号或密码错误或密码已超过90天未修改,请使用找回密码功能", $data);
  159. }
  160. if ($company->user_status == 0) {
  161. Auth::guard('web-company')->logout();
  162. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  163. }
  164. return $this->sendSuccessResponse([
  165. 'redirect_url' => url($request->session()->pull('url.intended', route($this->sub_site . 'mobile.firm.index'))
  166. )]);
  167. }
  168. public function logout()
  169. {
  170. $this->authService->logout();
  171. return redirect(route($this->sub_site . 'mobile.home'));
  172. }
  173. }