| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- namespace app\service\controller;
- use think\Controller;
- class Login extends Controller
- {
- public function index()
- {
- $this->assign([
- 'version' => config('version')
- ]);
- return $this->fetch();
- }
- public function doLogin()
- {
- //验证客服IP
- $settings = db('settings')->where('id', 1)->find();
- if ($settings['kf_white_list'] == 'on') {
- $ip = request()->ip();
- //将ip地址转换成int型
- $intip = bindec(decbin(ip2long($ip)));
- $res = db('iplimit')->where('ip', $ip)->where('object', 2)->find();
- $result = db('iplimit')->where('start_ip', '<=', $intip)->where('end_ip', '>=', $intip)->where('object', 2)->find();
- if (empty($res) && empty($result)) {
- return json(['code' => 0, 'data' => [], 'msg' => '访问受限']);
- }
- }
- $userAccount = input('post.username');
- $password = input('post.password');
- //在线客服
- $users = db('kfonline')->select();
- $user = db('users')->where('user_account', $userAccount)->find();
- if (empty($user)) {
- return json(['code' => -1, 'data' => '', 'msg' => '客服不存在']);
- }
- if ($user['status'] != 1) {
- return json(['code' => -3, 'data' => '', 'msg' => '此账号已禁用']);
- }
- /*$has = db('kfonline')->where('uid','KF'.$user['id'])->select();
- if(!empty($has)){
- return json(['code' => -4, 'data' => '', 'msg' => '此账号已登录']);
- }*/
- if (md5($password . config('salt')) != $user['user_pwd']) {
- return json(['code' => -2, 'data' => '', 'msg' => '密码错误']);
- }
- // 登陆成功 生成token
- $module = mt_rand(100000, 999999);
- $token = base64_encode($module . '#$@%!^*/' . time() . '/' . $user['id']);
- // 更新管理员状态
- $param = [
- 'token' => $token,
- 'expire_time' => time()
- ];
- db('users')->where('id', $user['id'])->update($param);
- //$user = db('users')->field('id,user_account,user_name,user_avatar,phone,group_id,token')->where('id', $user['id'])->select();
- $user = db('users')->where('id', $user['id'])->select();
- $group = db('groups')->where('id', $user[0]['group_id'])->find();
- $user[0]['group'] = $group['name'];
- // 是否为手机app验证平台登录.
- $param = input('post.');
- $verifySystem = isset($param['verifySystem']) ? $param['verifySystem'] : '';
- $verifySystemId = isset($param['verifySystemId']) ? $param['verifySystemId'] : '';
- $platformData = db('platform')->find();
- if ($platformData['platform_status'] === 1 && empty($verifySystem) === false) {
- $appUserName = unlock_url($verifySystem, $platformData['platform_code']);
- $verifyData = json_encode([
- 'appUserName' => $appUserName,
- 'userAccount' => $userAccount,
- ], 256);
- $verifyToken = lock_url($verifyData, $platformData['platform_code']);
- $platformUrl = $platformData['platform_url_token'] . '?backSystem=' . $verifyToken . '&verifySystemId=' . $verifySystemId;
- $backData = json_decode(make_request($platformUrl, ''), true);
- if ($backData['code'] == 1) {
- return json(['code' => 100, 'data' => ['user' => $user[0]], 'msg' => '验证成功']);
- }
- return json($backData);
- }
-
- // 验证码验证.
- $securityCode = isset($param['securityCode']) ? $param['securityCode'] : '';
- $securityData = json_encode([
- 'platformUser' => $userAccount,
- 'code' => $securityCode,
- ], 256);
- $securityToken = lock_url($securityData, $platformData['platform_code']);
- $platformUrl = $platformData['platform_url_code'] . '?backSystem=' . $securityToken . '&platformCode=' . $platformData['platform_code'];
- $backData = json_decode(make_request($platformUrl, ''), true);
- if($this->_checkEnabledValid()==1){
- if ($backData['code'] != 1) {
- return json(['code' => -2, 'data' => [], 'msg' => '验证码错误']);
- }
- }
-
- $this->assign([
- 'token' => $token,
- 'user_name' => $user[0]['user_name'],
- 'user_account' => $userAccount
- ]);
- return json(['code' => 1, 'data' => ['user' => $user[0]], 'msg' => '登录成功']);
- }
- private function _checkEnabledValid()
- {
- $checkcode = db('platform')->where('platform_code', 'Customer-Service')->find();
- $chkcode = $checkcode ? $checkcode['platform_status'] : 1;
- return $chkcode;
- }
- public function loginOut()
- {
- $this->redirect(url('login/index'));
- }
- }
|