LoginController.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/3/28
  6. * Time: 14:30
  7. */
  8. namespace App\Http\Controllers\Web\Hardware\Aio;
  9. use Aix\Sms\Contracts\Smser;
  10. use App\Exceptions\ResponseException;
  11. use App\Http\Controllers\Web\WebBaseController;
  12. use App\Models\Member;
  13. use App\Models\MemberInfo;
  14. use App\Models\Sms;
  15. use App\Services\Auth\AuthService;
  16. use App\Services\Auth\RegisterService;
  17. use App\Services\Common\SmsService;
  18. use App\Services\Person\MemberService;
  19. use App\Repositories\MemberInfoRepository;
  20. use App\Repositories\SmsRepository;
  21. use App\Validators\AuthValidatorRequest;
  22. use Illuminate\Http\Request;
  23. use Illuminate\Support\Facades\Auth;
  24. use Illuminate\Support\Facades\DB;
  25. class LoginController extends WebBaseController
  26. {
  27. protected $authService;
  28. protected $memberService;
  29. protected $smsService;
  30. protected $registerService;
  31. protected $memberInfoRepository;
  32. protected $smsRepository;
  33. public function __construct(AuthService $authService, MemberService $memberService, SmsService $smsService, RegisterService $registerService,MemberInfoRepository $memberInfoRepository,SmsRepository $smsRepository)
  34. {
  35. $this->authService = $authService;
  36. $this->memberService = $memberService;
  37. $this->smsService = $smsService;
  38. $this->registerService = $registerService;
  39. $this->memberInfoRepository = $memberInfoRepository;
  40. $this->smsRepository = $smsRepository;
  41. }
  42. public function loginByAccount(AuthValidatorRequest $request)
  43. {
  44. if (!$member=$this->authService->loginByAccount($request->account, $request->password, $request->autoLogin)) {
  45. return $this->sendErrorResponse("用户名或密码错误");
  46. }
  47. if ($member->status == 0) {
  48. Auth::guard('web-member')->logout();
  49. return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
  50. }
  51. return $this->sendSuccessResponse(['redirect_url'=>url($request->session()->pull('url.intended',
  52. route('hardware.aio.index')))]);
  53. }
  54. public function login()
  55. {
  56. return view('app.hardware.aio.login');
  57. }
  58. public function account()
  59. {
  60. return view('app.hardware.aio.account');
  61. }
  62. public function card()
  63. {
  64. return view('app.hardware.aio.card');
  65. }
  66. public function check(Request $request)
  67. {
  68. $cardno = $request->cardno;
  69. if (!$cardno) {
  70. throw new ResponseException('身份证读取失败!');
  71. }
  72. $memberInfo = MemberInfo::where(['id_card'=>$cardno])->first();
  73. if (!$memberInfo && config('aix.system.register.register.close_reg') == 0) {
  74. return $this->sendSuccessResponse(['status'=>0,'id_card'=>$cardno]);
  75. } elseif(!$memberInfo && config('aix.system.register.register.close_reg') == 1)
  76. {
  77. return $this->sendSuccessResponse(['status'=>-1]);
  78. }
  79. $member = Member::find($memberInfo->uid);
  80. $this->authService->login($member, 1);
  81. return $this->sendSuccessResponse(['status'=>1,'redirect_url'=>url($request->session()->pull('url.intended',
  82. route('hardware.aio.index')))]);
  83. }
  84. public function register(Request $request)
  85. {
  86. if($request->ajax()) {
  87. if(config('aix.system.register.register.close_reg') == 1) {
  88. throw new ResponseException('网站暂停会员注册,请稍后再次尝试!');
  89. }else{
  90. return $this->sendSuccessResponse(['redirect_url'=>url($request->session()->pull('url.intended',
  91. route('hardware.aio.register')))]);
  92. }
  93. }
  94. $data = $request->all();
  95. return view('app.hardware.aio.register',['data'=>$data]);
  96. }
  97. public function logout()
  98. {
  99. $this->authService->logout();
  100. return redirect(route('hardware.aio.index'));
  101. }
  102. public function loginMobile(AuthValidatorRequest $request)
  103. {
  104. if (empty($this->smsRepository->getSmsStatus()))
  105. {
  106. return $this->sendErrorResponse("error",["info"=>"短信发送失败,网站短信通道未开启"],200);
  107. }
  108. $this->memberService->loginMobile($request->mobile, $request->type);
  109. $this->smsService->sendAuthSms($request->mobile, Smser::TEMPLATE_AUTH_LOGIN);
  110. return $this->sendSuccessResponse('发送成功!');
  111. }
  112. public function loginMobileRe(AuthValidatorRequest $request)
  113. {
  114. if (empty($this->smsRepository->getSmsStatus()))
  115. {
  116. return $this->sendErrorResponse("error",["info"=>"短信发送失败,网站短信通道未开启"],200);
  117. }
  118. $res = $this->registerService->checkUnique($request->type,'mobile',$request->mobile);
  119. if(!$res){
  120. throw new ResponseException('该手机号已被其它账号绑定');
  121. }
  122. $this->smsService->sendAuthSms($request->mobile, Smser::TEMPLATE_AUTH_LOGIN);
  123. return $this->sendSuccessResponse('发送成功!');
  124. }
  125. public function loginMobileCreate(AuthValidatorRequest $request)
  126. {
  127. $mobile_code = $request->mobile_code;
  128. $mobile = $request->mobile;
  129. $checkAuthSms = $this->smsService->checkAuthSms($mobile, Smser::TEMPLATE_AUTH_LOGIN, $mobile_code);
  130. if (!$checkAuthSms) {
  131. throw new ResponseException('验证码错误!');
  132. }
  133. $user = Member::where(['mobile'=>$mobile])->first();
  134. $this->authService->login($user, 1);
  135. return $this->sendSuccessResponse(['redirect_url'=>url($request->session()->pull('url.intended',
  136. route('hardware.aio.index')))]);
  137. }
  138. public function registerMobile(AuthValidatorRequest $request)
  139. {
  140. $mobile_code = $request->mobile_code;
  141. $mobile = $request->mobile;
  142. if(config('aix.system.register.register.close_reg') == 1) {
  143. throw new ResponseException('网站暂停会员注册,请稍后再次尝试!');
  144. }
  145. $checkAuthSms = $this->smsService->checkAuthSms($mobile, Smser::TEMPLATE_AUTH_LOGIN, $mobile_code);
  146. if (!$checkAuthSms) {
  147. throw new ResponseException('验证码错误!');
  148. }
  149. DB::beginTransaction();//检查数据库事务
  150. try {
  151. $member = $this->memberService->registerMobile($mobile);
  152. if($request->id_card){
  153. $memberinfo['id_card'] = $request->id_card;
  154. $memberinfo['uid'] = $member->id;
  155. $memberinfo['sex'] = $request->sex;
  156. $memberinfo['realname'] = $request->name;
  157. $memberinfo['phone'] = $request->mobile;
  158. $memberinfo['id_card'] = $request->id_card;
  159. $memberinfo['card_t_cn'] = 306;
  160. $memberinfo['birthday'] = get_birthday($request->id_card);
  161. $this->memberInfoRepository->createInfo($memberinfo);
  162. }
  163. DB::commit();
  164. $this->authService->login($member, 1);
  165. return $this->sendSuccessResponse(['redirect_url'=>url($request->session()->pull('url.intended',
  166. route('hardware.aio.resume.create')))]);
  167. }catch (\Exception $e) {
  168. DB::rollback();
  169. throw new ResponseException($e->getMessage());
  170. }
  171. }
  172. }