hdel('kfList', 'KF'.$kf_id); $update = db('users')->where('id', $kf_id)->update(['online' => 2]); } $this->assign([ // 'socket' => getHost('ws').':'.config('socket_port'), 'socket' => config('socket_url').':'.config('socket_port'), // 'socket' => config('socket_url'), 'version' => config('version'), 'ga_android' => config('ga_android'), 'ga_ios' => config('ga_ios'), ]); return $this->fetch(); } public function doLogin() { if(request()->isAjax()){ $userName = input('post.username'); $password = input('post.password'); $user = db('users')->where('user_name', $userName)->find(); if(empty($user) || !password_verify($password, $user['user_pwd']) || $user['status'] !== 1){ return json(['code' => -2, 'data' => '', 'msg' => '用户名或密码错误']); } $token = null; if (isset($user['google_secret']) && strlen($user['google_secret']) == $this->googleAuthSecretLength) { $token = md5(time().$user['id']); $redis = new \Redis(); $redis->connect(config('cache.host'),config('cache.port')); $redis->auth(config('cache.password')); $info = ['user_id'=>$user['id'], 'user_name'=>$user['user_name'], 'access_token'=>$user['access_token'], 'user_avatar'=>$user['user_avatar']]; $redis->set($token, json_encode($info), $this->googleAuthTimeout); return json(['code' => 1, 'token' => $token, 'msg' => '请输入谷歌验证码']); } // if($user['online'] == 1){ // @unlink(session_save_path()."/".$user['session_id']); // // db('users')->where('id',$this->kf2Num(session('l_user_id')))->update(['session_id'=>$sessionId]); // } session('kf_token', $user['access_token']); // $sessionId = session_id(); // 设置session标识状态 session('l_user_name', $user['user_name']); session('l_user_id', $user['id']); session('l_user_avatar', $user['user_avatar']); session('l_user_last_login', time()); db('users')->where('id', $user['id'])->update(['expire_time' => time()+7*24*60*60]); // db('users')->where('id', $user['id'])->update(['expire_time' => time()+7*24*60*60,'session_id'=>"sess_".$sessionId]); return json(['code' => 1, 'data' => url('index/index'), 'msg' => '登录成功', 'uinfo' => ['id' => $user['id'], 'access_token' => $user['access_token']]]); } $this->error('非法访问'); } public function loginOut() { $kf_id = session('l_user_id'); session('l_user_name', null); session('l_user_id', null); session('l_user_avatar', null); session('l_user_last_login', null); $this->redirect(url('login/index?kf_id='.$kf_id)); } protected function kf2Num($kfId){ if(!is_numeric($kfId) && strpos($kfId,'KF') === 0){ $kfId = substr($kfId,2); } return $kfId; } public function google_auth () { if (request()->isPost()) { $google_auth = input('param.google_auth'); $token = input('param.token'); if (empty($google_auth)) { return json(['code' => -1, 'data' => '', 'msg' => '谷歌验证码不能为空']); } if (empty($token)) { return json(['code' => -1, 'data' => '', 'msg' => '参数错误']); } $redis = new \Redis(); $redis->connect(config('cache.host'),config('cache.port')); $redis->auth(config('cache.password')); $userInfo = $redis->get($token); if ($userInfo) { $userInfo = json_decode($userInfo, true); $ga = new GoogleAuthenticator(); $google_secret = db('users')->where('id', $userInfo['user_id'])->value('google_secret'); if($ga->verifyCode($google_secret, $google_auth)){ session('kf_token', $userInfo['access_token']); // $sessionId = session_id(); // 设置session标识状态 session('l_user_name', $userInfo['user_name']); session('l_user_id', $userInfo['user_id']); session('l_user_avatar', $userInfo['user_avatar']); session('l_user_last_login', time()); db('users')->where('id', $userInfo['user_id'])->update(['expire_time' => time()+7*24*60*60]); // db('users')->where('id', $user['id'])->update(['expire_time' => time()+7*24*60*60,'session_id'=>"sess_".$sessionId]); return json(['code' => 1, 'data' => url('index/index'), 'msg' => '登录成功', 'uinfo' => ['id' => $userInfo['user_id'], 'access_token' => $userInfo['access_token']]]); } } return json(['code' => -1, 'data' => '', 'msg' => '校验失败']); } } }