Login.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace app\mobile\controller;
  3. use app\common\model\SinglePageModel;
  4. use app\common\model\UserModel;
  5. use app\common\service\SmsService;
  6. use app\mobile\MobileBaseController;
  7. class Login extends MobileBaseController
  8. {
  9. public function login()
  10. {
  11. $service = SinglePageModel::getConfigValue(['service', 'privacy']);
  12. foreach ($service as $k => $value) {
  13. $value = explode("\n", $value);
  14. $content = '';
  15. foreach ($value as $v) {
  16. $content .= "<p>{$v}</p>";
  17. }
  18. $service[$k] = $content;
  19. }
  20. return view('', [
  21. 'service' => $service,
  22. ]);
  23. }
  24. public function loginPost()
  25. {
  26. $param = input('post.');
  27. empty($param['type']) && ajax_return(1, '请选择登录方式');
  28. $user = [];
  29. if ($param['type'] == 'mobile') {
  30. empty($param['mobile']) && ajax_return(1, '请输入手机号');
  31. empty($param['verify']) && ajax_return(1, '请输入验证码');
  32. //验证码校验
  33. if (config('mobile.sms_verify_expire') > 0) {
  34. $verify_expire = session('mobile.login.verify_expire');
  35. if ($verify_expire + config('mobile.sms_verify_expire') < time()) {
  36. session('mobile.login.verify', null);
  37. session('mobile.login.verify_expire', null);
  38. ajax_return(1, '验证码已过期');
  39. }
  40. }
  41. $verify = session('mobile.login.verify');
  42. if ($verify != $param['verify']) {
  43. ajax_return(1, '验证码不正确');
  44. }
  45. //登录注册
  46. $user = UserModel::where('mobile', $param['mobile'])->find();
  47. if (empty($user)) {
  48. $user = UserModel::create([
  49. 'nickname' => '手机用户',
  50. 'mobile' => $param['mobile'],
  51. 'status' => UserModel::STATUS_PASS,
  52. ]);
  53. }
  54. } elseif ($param['type'] == 'account') {
  55. empty($param['account']) && ajax_return(1, '请输入账号');
  56. empty($param['password']) && ajax_return(1, '请输入密码');
  57. //帐号密码登录
  58. $user = UserModel::where('account', $param['account'])->find();
  59. empty($user) && ajax_return(1, '账号或密码错误');
  60. $password = md5(md5($user['salt']) . $param['password']);
  61. $password != $user['password'] && ajax_return(1, '账号或密码错误');
  62. } else {
  63. ajax_return(1, '请选择登录类型');
  64. }
  65. $user->last_login_time = time();
  66. $user->last_login_ip = request()->ip();
  67. $user->save();
  68. session('mobile.user.id', $user['id']);
  69. $url = session('back_url') ?? url('/mobile/my/index');
  70. session('back_url', null);
  71. ajax_success(['url' => $url]);
  72. }
  73. public function sendSms()
  74. {
  75. $mobile = trim(input('post.mobile'));
  76. if (empty($mobile)) {
  77. ajax_return(1, '手机号为空');
  78. } else {
  79. $rand = rand(100000, 999999);
  80. $preg_phone = '/^1[34578]\d{9}$/ims';
  81. if (preg_match($preg_phone, $mobile)) {
  82. $sms = new SmsService();
  83. $res = $sms->send($mobile, 'verification', [$rand]);
  84. if ($res['code'] == 0) {
  85. session('mobile.login.verify', $rand);
  86. session('mobile.login.verify_expire', time());
  87. } else {
  88. ajax_return(1, '发送失败,请联系管理员');
  89. }
  90. } else {
  91. ajax_return(1, '手机号格式不正确');
  92. }
  93. }
  94. ajax_return();
  95. }
  96. public function wechat()
  97. {
  98. return redirect('https://www.jucai.gov.cn/api/auth/wechat_auth?url=' . urlencode(url('/mobile/login/wechatBack')));
  99. }
  100. /**
  101. * 微信回调
  102. */
  103. public function wechatBack()
  104. {
  105. $param = input('param.');
  106. $open_id = $param['openid'];
  107. //登录
  108. $user = UserModel::where(['openid' => $open_id])->find();
  109. if (empty($user)) {
  110. $user_id = get_user_id();
  111. if (empty($user_id)) {
  112. $user = UserModel::create([
  113. 'nickname' => $param['nickname'],
  114. 'avatar' => $param['headimgurl'],
  115. 'openid' => $open_id,
  116. 'unionid' => $param['unionid'],
  117. ]);
  118. } else {
  119. UserModel::update([
  120. 'openid' => $open_id,
  121. 'unionid' => $param['unionid'],
  122. ], ['id' => $user_id]);
  123. }
  124. }
  125. $user->logintime = time();
  126. $user->loginip = request()->ip();
  127. $user->save();
  128. session('mobile.user.id', $user['id']);
  129. $url = session('back_url') ?? url('/mobile/my/index');
  130. session('back_url', null);
  131. return redirect($url);
  132. }
  133. public function logout()
  134. {
  135. session('mobile.user.id', null);
  136. return redirect('/');
  137. }
  138. }