From 7fdc8e13e4acdfdfa8c1da79ff1dba65336e185d Mon Sep 17 00:00:00 2001 From: chujilu Date: Fri, 11 Sep 2015 13:25:48 +0800 Subject: [PATCH] * Fix a bug. --- module/sso/control.php | 75 ++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/module/sso/control.php b/module/sso/control.php index 5fca76317b..e9a3470b49 100644 --- a/module/sso/control.php +++ b/module/sso/control.php @@ -28,11 +28,11 @@ class sso extends control if(!$this->config->sso->turnon) die($this->locate($locate)); $userIP = $this->server->remote_addr; + $code = $this->config->sso->code; + $key = $this->config->sso->key; if($type != 'return') { - $code = $this->config->sso->code; $token = $this->get->token; - $key = $this->config->sso->key; $auth = md5($code . $userIP . $token . $key); $callback = urlencode(common::getSysURL() . inlink('login', "type=return")); @@ -52,42 +52,47 @@ class sso extends control { $last = $this->server->request_time; $data = json_decode(base64_decode($this->get->data)); - $user = $this->loadModel('user')->getById($data->account); - if(!$user) - { - $user = new stdclass(); - $user->account = $data->account; - $user->password = $data->password; - $user->realname = $data->realname; - $user->email = $data->email; - $user->visits = 1; - $user->last = $this->server->request_time; - $user->mobile = $data->mobile; - $user->phone = $data->phone; - $user->address = $data->address; - $user->skype = $data->skype; - $user->qq = $data->qq; - $user->birthday = $data->birthday; - $user->gender = $data->gender != 'u' ? $data->gender : 'm'; - $this->dao->insert(TABLE_USER)->data($user)->exec(); - $user->id = $this->dao->lastInsertID(); - $user->rights = array(); - } - else + $token = $data->token; + if($data->auth == md5($code . $userIP . $token . $key)) { - $this->user->cleanLocked($user->account); - /* Authorize him and save to session. */ - $user->rights = $this->user->authorize($user->account); - $user->groups = $this->user->getGroups($user->account); - $this->dao->update(TABLE_USER)->set('visits = visits + 1')->set('ip')->eq($userIP)->set('last')->eq($last)->where('account')->eq($user->account)->exec(); - } + $user = $this->loadModel('user')->getById($data->account); + if(!$user) + { + $user = new stdclass(); + $user->account = $data->account; + $user->password = $data->password; + $user->realname = $data->realname; + $user->email = $data->email; + $user->visits = 1; + $user->last = $this->server->request_time; + $user->mobile = $data->mobile; + $user->phone = $data->phone; + $user->address = $data->address; + $user->skype = $data->skype; + $user->qq = $data->qq; + $user->birthday = $data->birthday; + $user->gender = $data->gender != 'u' ? $data->gender : 'm'; - $user->last = date(DT_DATETIME1, $last); - $this->session->set('user', $user); - $this->app->user = $this->session->user; - $this->loadModel('action')->create('user', $user->id, 'login'); - die($this->locate($locate)); + $this->dao->insert(TABLE_USER)->data($user)->exec(); + $user->id = $this->dao->lastInsertID(); + $user->rights = array(); + } + else + { + $this->user->cleanLocked($user->account); + /* Authorize him and save to session. */ + $user->rights = $this->user->authorize($user->account); + $user->groups = $this->user->getGroups($user->account); + $this->dao->update(TABLE_USER)->set('visits = visits + 1')->set('ip')->eq($userIP)->set('last')->eq($last)->where('account')->eq($user->account)->exec(); + } + + $user->last = date(DT_DATETIME1, $last); + $this->session->set('user', $user); + $this->app->user = $this->session->user; + $this->loadModel('action')->create('user', $user->id, 'login'); + die($this->locate($locate)); + } } $this->locate($this->createLink('user', 'login', empty($referer) ? '' : "referer=$referer")); }