* Fix a bug.

This commit is contained in:
chujilu
2015-09-11 13:25:48 +08:00
parent 453965f87c
commit 7fdc8e13e4
+40 -35
View File
@@ -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"));
}