profile->getUidByname($this->auth->getUid()); if (!isset($uGroups['groups'])) $uGroups['groups'] = 'anonymous'; $falg = Doo::acl()->isAllowed($uGroups['groups'], $resource, $action); if (!$falg) return Doo::acl()->defaultFailedRoute; } public function __construct() { $this->auth = new Auth(); $this->profile = new Uprofile(); $this->aconfig = new AConfig(); $this->data['rootUrl'] = Doo::conf()->APP_URL; } public function welcome() { $this->render('welcome', $this->data); } public function Signin() { $this->data['tips'] = ''; if ($_GET['username']) { if (isset($_GET['username'])) { $retval = $this->auth->checkLoginWithUserName($_GET['username']); if (isset($retval['uid'])) { $this->auth->setUid($retval['uid']); $this->auth->setUemail($retval['uemail']); $_SESSION['token'] = sha1($this->create_randomstr() . $_SESSION['uid']); $this->auth->updateToken($retval['uid'],$_SESSION['token'],1); setcookie('token', $_SESSION['token'], 0, '/', Doo::conf()->APP_URL, FALSE, TRUE); return Doo::conf()->APP_URL . 'project/index'; } else { $this->data['tips'] = '
帐号或密码错误,请检查输入是否有误。
'; } } } else { if (isset($_POST['uemail']) && isset($_POST['upasswd'])) { if ($this->isValidFormHash($_POST['tokenform'])) { $retval = $this->auth->checkLogin($_POST['uemail'], $_POST['upasswd']); if (isset($retval['uid'])) { $this->auth->setUid($retval['uid']); $this->auth->setUemail($retval['uemail']); $_SESSION['token'] = sha1($this->create_randomstr() . $_SESSION['uid']); $this->auth->updateToken($retval['uid'],$_SESSION['token'],1); setcookie('token', $_SESSION['token'], 0, '/', Doo::conf()->APP_URL, FALSE, TRUE); return Doo::conf()->APP_URL . 'project/index'; } else { $this->data['tips'] = '
帐号或密码错误,请检查输入是否有误。
'; } } else { return Doo::conf()->APP_URL; } } } $this->getsoftware(); $this->data['_token_'] = $this->generateFormHash($this->create_randomstr()); $this->data['proName'] = $this->aconfig->getOne(array('select' => 'proName', 'asArray' => TRUE))['proName']; $this->data['ver'] = DOO::conf()->ver; $this->render('login', $this->data); } function getsoftware(){ $StrJson = ($this->aconfig->getOne(array('select' => 'upgradeinfo', 'asArray' => TRUE))['upgradeinfo']); $upgradeinfo = json_decode($StrJson, true); if ($upgradeinfo) { $this->data['version'] = $upgradeinfo['version']; $this->data['download'] = $upgradeinfo['download']; } } function Signout() { $this->auth->logout(); return Doo::conf()->APP_URL; } function IsSessionHijacking() { $string = $_SERVER['HTTP_USER_AGENT']; if (!isset($_SESSION['randstr'])) $_SESSION['randstr'] = $this->create_randomstr(); $string .= $_SESSION['randstr']; $token = md5($string); $_SESSION['token'] = $token; if ($_SESSION['token'] == md5($_SERVER['HTTP_USER_AGENT'] . $_SESSION['randstr'])) { return FALSE; } else { return TRUE; } } function isLoggedIn() { if (isset($_SESSION['token']) && isset($_COOKIE['token'])) { if ($_SESSION['token'] != $_COOKIE['token']) { $this->Signout(); setcookie('token', '-1', 0, '/', Doo::conf()->APP_URL, FALSE, TRUE); } return isset($_SESSION['uid']); } } function generateFormHash($salt) { $hash = sha1(mt_rand(1, 1000000) . $salt); $_SESSION['csrf_hash'] = $hash; return $hash; } function isValidFormHash($hash) { return $_SESSION['csrf_hash'] === $hash; } /** * 随机字符串函数 * @param $password 密码 * @param $random 随机数 */ function random($length, $chars = '0123456789') { $hash = ''; $max = strlen($chars) - 1; for ($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash; } /** * 生成随机字符串 * @param string $lenth 长度 * @return string 字符串 */ function create_randomstr($lenth = 6) { return $this->random($lenth, '123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ'); } } ?>