LoginController.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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. class LoginController extends MobileBaseController
  12. {
  13. /**
  14. * @var AuthService
  15. */
  16. protected $authService;
  17. /**
  18. * @var SmsService
  19. */
  20. protected $smsService;
  21. /**
  22. * @var GeetestService
  23. */
  24. protected $geetestService;
  25. protected $sub_site = '';
  26. /**
  27. * LoginController constructor.
  28. * @param AuthService $authService
  29. * @param SmsService $smsService
  30. * @param GeetestService $geetestService
  31. */
  32. public function __construct(
  33. AuthService $authService,
  34. SmsService $smsService,
  35. GeetestService $geetestService
  36. )
  37. {
  38. $this->authService = $authService;
  39. $this->smsService = $smsService;
  40. $this->geetestService = $geetestService;
  41. /*$this->middleware(function ($request, Closure $next) {
  42. if (strpos($request->route()->getName(), 'mobile.logout') === false) {
  43. if (Auth::guard('web-member')->check() || Auth::guard('web-company')->check()) {
  44. return redirect(route('mobile.home'));
  45. }
  46. }
  47. return $next($request);
  48. });*/
  49. if (get_subsite_id() > 0) {
  50. $this->sub_site = 'jkq.';
  51. }
  52. }
  53. public function showLoginForm()
  54. {
  55. if (request()->has('redirect_url')) {
  56. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  57. }
  58. return view('mobile.app.auth.login', ['wap_title' => "个人登录"]);
  59. }
  60. public function showLoginMobileForm()
  61. {
  62. if (request()->has('redirect_url')) {
  63. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  64. }
  65. return view('mobile.app.auth.login_mobile', ['wap_title' => "个人登录"]);
  66. }
  67. public function showLoginCompanyForm()
  68. {
  69. if (request()->has('redirect_url')) {
  70. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  71. }
  72. return view('mobile.app.auth.login_company', ['wap_title' => "企业登录"]);
  73. }
  74. public function loginByAccount(AuthValidatorRequest $request)
  75. {
  76. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  77. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  78. // }
  79. if (!$member = $this->authService->loginByAccount($request->account, $request->password, $request->autoLogin)) {
  80. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  81. config('aix.system.site_safety.site_vo_code.members_login')
  82. );
  83. return $this->sendErrorResponse("用户名或密码错误", $data);
  84. }
  85. if ($member->status == 0) {
  86. Auth::guard('web-member')->logout();
  87. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  88. }
  89. return $this->sendSuccessResponse([
  90. 'redirect_url' => url($request->session()
  91. ->pull('url.intended', route($this->sub_site . 'mobile.person.index')))]);
  92. }
  93. public function loginBySms(AuthValidatorRequest $request)
  94. {
  95. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  96. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  97. // }
  98. if (!$this->smsService->checkAuthSms(
  99. $request->mobile,
  100. Smser::TEMPLATE_AUTH_LOGIN,
  101. $request->code
  102. )) {
  103. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  104. config('aix.system.site_safety.site_vo_code.members_login')
  105. );
  106. return $this->sendErrorResponse("短信验证码不对", $data);
  107. }
  108. if (!$member = $this->authService->loginByAccount($request->mobile, '', $request->autoLogin)) {
  109. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  110. config('aix.system.site_safety.site_vo_code.members_login')
  111. );
  112. return $this->sendErrorResponse("用户不存在,请先注册账号", $data);
  113. }
  114. if ($member->status == 0) {
  115. Auth::guard('web-member')->logout();
  116. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  117. }
  118. return $this->sendSuccessResponse([
  119. 'redirect_url' => url($request->session()
  120. ->pull('url.intended', route($this->sub_site . 'mobile.person.index')))]);
  121. }
  122. public function loginByCompany(AuthValidatorRequest $request)
  123. {
  124. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  125. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  126. // }
  127. if (!$company = $this->authService->loginByCompany(
  128. $request->company_account,
  129. $request->company_password,
  130. $request->autoLogin
  131. )) {
  132. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  133. config('aix.system.site_safety.site_vo_code.members_login')
  134. );
  135. return $this->sendErrorResponse("用户名或密码错误", $data);
  136. }
  137. if ($company->user_status == 0) {
  138. Auth::guard('web-company')->logout();
  139. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  140. }
  141. return $this->sendSuccessResponse([
  142. 'redirect_url' => url($request->session()->pull('url.intended', route($this->sub_site . 'mobile.firm.index'))
  143. )]);
  144. }
  145. public function logout()
  146. {
  147. $this->authService->logout();
  148. return redirect(route($this->sub_site . 'mobile.home'));
  149. }
  150. }