Login.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace app\service\controller;
  3. use think\Controller;
  4. class Login extends Controller
  5. {
  6. public function index()
  7. {
  8. $this->assign([
  9. 'version' => config('version')
  10. ]);
  11. return $this->fetch();
  12. }
  13. public function doLogin()
  14. {
  15. echo 222;
  16. //验证客服IP
  17. $settings = db('settings')->where('id',1)->find();
  18. if($settings['kf_white_list'] == 'on'){
  19. $ip = request()->ip();
  20. //将ip地址转换成int型
  21. $intip = bindec(decbin(ip2long($ip)));
  22. $res = db('iplimit')->where('ip',$ip)->where('object',2)->find();
  23. $result = db('iplimit')->where('start_ip','<=',$intip)->where('end_ip','>=',$intip)->where('object',2)->find();
  24. if(empty($res) && empty($result)){
  25. return json(['code' => 0, 'data' => [], 'msg' => '访问受限']);
  26. }
  27. }
  28. $userAccount = input('post.username');
  29. $password = input('post.password');
  30. //在线客服
  31. $users = db('kfonline')->select();
  32. $user = db('users')->where('user_account', $userAccount)->find();
  33. if(empty($user)){
  34. return json(['code' => -1, 'data' => '', 'msg' => '客服不存在']);
  35. }
  36. if($user['status'] != 1){
  37. return json(['code' => -3, 'data' => '', 'msg' => '此账号已禁用']);
  38. }
  39. /*$has = db('kfonline')->where('uid','KF'.$user['id'])->select();
  40. if(!empty($has)){
  41. return json(['code' => -4, 'data' => '', 'msg' => '此账号已登录']);
  42. }*/
  43. if(md5($password . config('salt')) != $user['user_pwd']){
  44. return json(['code' => -2, 'data' => '', 'msg' => '密码错误']);
  45. }
  46. // 登陆成功 生成token
  47. $module = mt_rand(100000,999999);
  48. $token = base64_encode($module.'#$@%!^*/'.time().'/'.$user['id']);
  49. // 更新管理员状态
  50. $param = [
  51. 'token' => $token,
  52. 'expire_time' => time()
  53. ];
  54. db('users')->where('id', $user['id'])->update($param);
  55. //$user = db('users')->field('id,user_account,user_name,user_avatar,phone,group_id,token')->where('id', $user['id'])->select();
  56. $user = db('users')->where('id', $user['id'])->select();
  57. $group = db('groups')->where('id', $user[0]['group_id'])->find();
  58. $user[0]['group'] = $group['name'];
  59. // 是否为手机app验证平台登录.
  60. $param = input('post.');
  61. $verifySystem = isset($param['verifySystem']) ? $param['verifySystem'] : '';
  62. $verifySystemId = isset($param['verifySystemId']) ? $param['verifySystemId'] : '';
  63. $platformData = db('platform')->find();
  64. if (empty($verifySystem) === false) {
  65. $appUserName = unlock_url($verifySystem, $platformData['platform_code']);
  66. $verifyData = json_encode([
  67. 'appUserName' => $appUserName,
  68. 'userAccount' => $userAccount,
  69. ], 256);
  70. $verifyToken = lock_url($verifyData, $platformData['platform_code']);
  71. $platformUrl = $platformData['platform_url_token'].'?backSystem='.$verifyToken.'&verifySystemId='.$verifySystemId;
  72. $backData = json_decode(make_request($platformUrl, ''), true);
  73. if ($backData['code'] == 1) {
  74. return json(['code' => 100, 'data' => ['user' => $user[0]], 'msg' => '验证成功']);
  75. }
  76. return json($backData);
  77. }
  78. // 验证码验证.
  79. $securityCode = isset($param['securityCode']) ? $param['securityCode'] : '';
  80. $securityData = json_encode([
  81. 'platformUser' => $userAccount,
  82. 'code' => $securityCode,
  83. ], 256);
  84. $securityToken = lock_url($securityData, $platformData['platform_code']);
  85. $platformUrl = $platformData['platform_url_code'].'?backSystem='.$securityToken.'&platformCode='.$platformData['platform_code'];
  86. $backData = json_decode(make_request($platformUrl, ''), true);
  87. if ($backData['code'] != 1) {
  88. return json(['code' => -2, 'data' => [], 'msg' => '验证码错误']);
  89. }
  90. $this->assign([
  91. 'token' => $token,
  92. 'user_name' => $user[0]['user_name'],
  93. 'user_account' => $userAccount
  94. ]);
  95. return json(['code' => 1, 'data' => ['user' => $user[0]], 'msg' => '登录成功']);
  96. }
  97. public function loginOut()
  98. {
  99. $this->redirect(url('login/index'));
  100. }
  101. }