LoginController.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. namespace App\Http\Controllers\Jkq\Auth;
  3. use Aix\Sms\Contracts\Smser;
  4. use App\Http\Controllers\Jkq\JkqBaseController;
  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 JkqBaseController
  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. /**
  26. * LoginController constructor.
  27. * @param AuthService $authService
  28. * @param SmsService $smsService
  29. * @param GeetestService $geetestService
  30. */
  31. public function __construct(
  32. AuthService $authService,
  33. SmsService $smsService,
  34. GeetestService $geetestService
  35. ) {
  36. $this->authService = $authService;
  37. $this->smsService = $smsService;
  38. $this->geetestService = $geetestService;
  39. }
  40. public function showLoginForm()
  41. {
  42. if (request()->has('redirect_url')) {
  43. session(['url.intended'=>urldecode(request()->get('redirect_url'))]);
  44. }
  45. return view('jkq.auth.login');
  46. }
  47. public function showLoginCompanyForm()
  48. {
  49. if (request()->has('redirect_url')) {
  50. session(['url.intended'=>urldecode(request()->get('redirect_url'))]);
  51. }
  52. return view('jkq.auth.login_company');
  53. }
  54. public function showLoginOrgForm()
  55. {
  56. if (request()->has('redirect_url')) {
  57. session(['url.intended'=>urldecode(request()->get('redirect_url'))]);
  58. }
  59. return view('jkq.auth.login_org');
  60. }
  61. public function loginByAccount(AuthValidatorRequest $request)
  62. {
  63. if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  64. return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest'=>1]);
  65. }
  66. if (!$member=$this->authService->loginByAccount($request->account, $request->password, $request->autoLogin)) {
  67. $data['is_need_geetest']=$this->geetestService->isNeedGeetest(
  68. config('aix.system.site_safety.site_vo_code.members_login')
  69. );
  70. return $this->sendErrorResponse("账号或密码错误", $data);
  71. }
  72. if ($member->status == 0) {
  73. Auth::guard('web-member')->logout();
  74. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  75. }
  76. return $this->sendSuccessResponse([
  77. 'redirect_url'=>url($request->session()
  78. ->pull('url.intended', route('jkq.person.index')))]);
  79. }
  80. public function loginBySms(AuthValidatorRequest $request)
  81. {
  82. if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  83. return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest'=>1]);
  84. }
  85. if (!$this->smsService->checkAuthSms(
  86. $request->mobile,
  87. Smser::TEMPLATE_AUTH_LOGIN,
  88. $request->code
  89. )) {
  90. $data['is_need_geetest']=$this->geetestService->isNeedGeetest(
  91. config('aix.system.site_safety.site_vo_code.members_login')
  92. );
  93. return $this->sendErrorResponse("短信验证码不对", $data);
  94. }
  95. if (!$member=$this->authService->loginByAccount($request->mobile, '', $request->autoLogin)) {
  96. $data['is_need_geetest']=$this->geetestService->isNeedGeetest(
  97. config('aix.system.site_safety.site_vo_code.members_login')
  98. );
  99. return $this->sendErrorResponse("用户不存在,请先注册账号", $data);
  100. }
  101. if ($member->status == 0) {
  102. Auth::guard('web-member')->logout();
  103. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  104. }
  105. return $this->sendSuccessResponse([
  106. 'redirect_url'=>url($request->session()
  107. ->pull('url.intended', route('jkq.person.index')))]);
  108. }
  109. public function loginByCompany(AuthValidatorRequest $request)
  110. {
  111. if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  112. return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest'=>1]);
  113. }
  114. if (!$company=$this->authService->loginByCompany(
  115. $request->company_account,
  116. $request->company_password,
  117. $request->autoLogin
  118. )) {
  119. $data['is_need_geetest']=$this->geetestService->isNeedGeetest(
  120. config('aix.system.site_safety.site_vo_code.members_login')
  121. );
  122. return $this->sendErrorResponse("账号或密码错误", $data);
  123. }
  124. if ($company->user_status == 0) {
  125. Auth::guard('web-company')->logout();
  126. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  127. }
  128. return $this->sendSuccessResponse([
  129. 'redirect_url'=>url($request->session()
  130. ->pull('url.intended', route('jkq.com.index')))]);
  131. }
  132. public function loginByOrg(AuthValidatorRequest $request)
  133. {
  134. if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  135. return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest'=>1]);
  136. }
  137. if (!$organization=$this->authService->loginByOrganization(
  138. $request->org_account,
  139. $request->org_password,
  140. $request->autoLogin
  141. )) {
  142. $data['is_need_geetest']=$this->geetestService->isNeedGeetest(
  143. config('aix.system.site_safety.site_vo_code.members_login')
  144. );
  145. return $this->sendErrorResponse("账号或密码错误", $data);
  146. }
  147. if ($organization->user_status == 0) {
  148. Auth::guard('web-organization')->logout();
  149. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  150. }
  151. return $this->sendSuccessResponse([
  152. 'redirect_url'=>url($request->session()
  153. ->pull('url.intended', route('jkq.org.index')))]);
  154. }
  155. public function logout()
  156. {
  157. $this->authService->logout();
  158. return redirect(route('jkq.home'));
  159. }
  160. }