* Fix a bug.
This commit is contained in:
+40
-35
@@ -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"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user