LoginController.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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\Models\Member;
  6. use App\Services\Auth\AuthService;
  7. use App\Services\Auth\RegisterService;
  8. use App\Services\Common\GeetestService;
  9. use App\Services\Common\SmsService;
  10. use App\Services\CommonService;
  11. use App\Validators\AuthValidatorRequest;
  12. use Closure;
  13. use Illuminate\Support\Facades\Auth;
  14. use Illuminate\Support\Facades\Cache;
  15. class LoginController extends MobileBaseController
  16. {
  17. /**
  18. * @var AuthService
  19. */
  20. protected $authService;
  21. /**
  22. * @var SmsService
  23. */
  24. protected $smsService;
  25. /**
  26. * @var GeetestService
  27. */
  28. protected $geetestService;
  29. protected $sub_site = '';
  30. /**
  31. * LoginController constructor.
  32. * @param AuthService $authService
  33. * @param SmsService $smsService
  34. * @param GeetestService $geetestService
  35. */
  36. public function __construct(
  37. AuthService $authService,
  38. SmsService $smsService,
  39. GeetestService $geetestService
  40. )
  41. {
  42. $this->authService = $authService;
  43. $this->smsService = $smsService;
  44. $this->geetestService = $geetestService;
  45. /*$this->middleware(function ($request, Closure $next) {
  46. if (strpos($request->route()->getName(), 'mobile.logout') === false) {
  47. if (Auth::guard('web-member')->check() || Auth::guard('web-company')->check()) {
  48. return redirect(route('mobile.home'));
  49. }
  50. }
  51. return $next($request);
  52. });*/
  53. if (get_subsite_id() > 0) {
  54. $this->sub_site = 'jkq.';
  55. }
  56. }
  57. public function showLoginForm()
  58. {
  59. if (request()->has('redirect_url')) {
  60. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  61. }
  62. return view('mobile.app.auth.login', ['wap_title' => "个人登录"]);
  63. }
  64. public function showLoginMobileForm()
  65. {
  66. if (request()->has('redirect_url')) {
  67. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  68. }
  69. return view('mobile.app.auth.login_mobile', ['wap_title' => "个人登录"]);
  70. }
  71. public function showLoginCompanyForm()
  72. {
  73. if (request()->has('redirect_url')) {
  74. session(['url.intended' => urldecode(request()->get('redirect_url'))]);
  75. }
  76. return view('mobile.app.auth.login_company', ['wap_title' => "企业登录"]);
  77. }
  78. public function loginByAccount(AuthValidatorRequest $request)
  79. {
  80. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  81. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  82. // }
  83. if (!$member = $this->authService->loginByAccount($request->account, $request->password, $request->autoLogin)) {
  84. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  85. config('aix.system.site_safety.site_vo_code.members_login')
  86. );
  87. $redis = Cache::getRedis();
  88. $value = $redis->get('user_' . $request->account);
  89. //dd($value);
  90. if (!$value) {
  91. $value = 0;
  92. }
  93. if ($value >= 5) {
  94. $redis->expire('user_' . $request->account, 900);
  95. return $this->sendErrorResponse("连续登录失败5次,请15分钟后再尝试!", $data);
  96. }
  97. $redis->set('user_' . $request->account, ++$value);
  98. return $this->sendErrorResponse("账号或密码错误或密码已超过90天未修改,请使用找回密码功能", $data);
  99. }
  100. if ($member->status == 0) {
  101. Auth::guard('web-member')->logout();
  102. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  103. }
  104. $token = CommonService::createToken(1, $member->id);
  105. return $this->sendSuccessResponse([
  106. 'redirect_url' => url($request->session()
  107. ->pull('url.intended', route($this->sub_site . 'mobile.person.index'))),
  108. 'token' => $token,
  109. ]);
  110. }
  111. public function loginBySms(AuthValidatorRequest $request)
  112. {
  113. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  114. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  115. // }
  116. if (!$this->smsService->checkAuthSms(
  117. $request->mobile,
  118. Smser::TEMPLATE_AUTH_LOGIN,
  119. $request->code
  120. )) {
  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 = $this->authService->loginByAccount($request->mobile, '', $request->autoLogin)) {
  127. $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  128. config('aix.system.site_safety.site_vo_code.members_login')
  129. );
  130. return $this->sendErrorResponse("用户不存在,请先注册账号", $data);
  131. }
  132. if ($member->status == 0) {
  133. Auth::guard('web-member')->logout();
  134. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  135. }
  136. $token = CommonService::createToken(1, $member->id);
  137. return $this->sendSuccessResponse([
  138. 'redirect_url' => url($request->session()
  139. ->pull('url.intended', route($this->sub_site . 'mobile.person.index'))),
  140. 'token' => $token,
  141. ]);
  142. }
  143. public function loginByCompany(AuthValidatorRequest $request)
  144. {
  145. // if (!$this->geetestService->checkGeetest(config('aix.system.site_safety.site_vo_code.members_login'))) {
  146. // return $this->sendErrorResponse("验证码不通过,请重新验证", ['is_need_geetest' => 1]);
  147. // }
  148. if (!$company = $this->authService->loginByCompany(
  149. $request->company_account,
  150. $request->company_password,
  151. $request->autoLogin
  152. )) {
  153. // $data['is_need_geetest'] = $this->geetestService->isNeedGeetest(
  154. // config('aix.system.site_safety.site_vo_code.members_login')
  155. // );
  156. $redis = Cache::getRedis();
  157. $value = $redis->get('user_' . $request->company_account);
  158. if (!$value) {
  159. $value = 0;
  160. }
  161. if ($value >= 5) {
  162. $redis->expire('user_' . $request->company_account, 900);
  163. return $this->sendErrorResponse("连续登录失败5次,请15分钟后再尝试!");
  164. }
  165. $redis->set('user_' . $request->company_account, ++$value);
  166. return $this->sendErrorResponse("账号或密码错误或密码已超过90天未修改,请使用找回密码功能");
  167. }
  168. if ($company->user_status == 0) {
  169. Auth::guard('web-company')->logout();
  170. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  171. }
  172. $token = CommonService::createToken(2, $company->id);
  173. return $this->sendSuccessResponse([
  174. 'redirect_url' => url($request->session()->pull('url.intended', route($this->sub_site . 'mobile.firm.index'))),
  175. 'token' => $token,
  176. ]);
  177. }
  178. public function logout()
  179. {
  180. $this->authService->logout();
  181. return redirect(route($this->sub_site . 'mobile.home'));
  182. }
  183. public function loginMZT(){
  184. if(request()->isMethod('POST')){
  185. $params = request()->post();
  186. $member = Member::where('mobile', '=', $params['user_mobile'])->orderBy('id', 'desc')->first();
  187. if ($member) {
  188. //登录
  189. $this->authService->login($member, 1);
  190. } else {
  191. $registerService = new RegisterService();
  192. // 注册
  193. $member = $registerService->registerPerson([
  194. 'reg_type' => 1,
  195. 'mobile' => $params['user_mobile'],
  196. 'password' => '000000',
  197. 'utype' => 2,
  198. 'reg_source' => 2,
  199. 'member_status' => 0,
  200. ]);
  201. $member->email = empty($params['user_email']) ? '' : $params['user_email'];
  202. $member->username = $params['user_name'];
  203. $member->save();
  204. $this->authService->login($member, 1);
  205. }
  206. return $this->sendSuccessResponse([
  207. 'status' => 1,
  208. 'msg' => '登录成功',
  209. 'url' => route('mobile.home')
  210. ]);
  211. }else{
  212. return view('mobile.app.auth.mzt', ['wap_title' => "闽政通快捷登录"]);
  213. }
  214. }
  215. }