function _initialize()
 {
     //echo '<pre>';print_r($_SESSION);exit;
     //import('@.ORG.Util.Cookie');
     // 用户权限检查
     if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
         //  import('@.ORG.Util.RBAC');
         if (!RBAC::AccessDecision()) {
             //检查认证识别号,没有登录的情况
             if (!$_SESSION[C('USER_AUTH_KEY')]) {
                 //跳转到认证网关
                 redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
             }
             // 没有权限 抛出错误
             if (C('RBAC_ERROR_PAGE')) {
                 // 定义权限错误页面
                 redirect(C('RBAC_ERROR_PAGE'));
             } else {
                 if (C('GUEST_AUTH_ON')) {
                     $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                 }
                 // 提示错误信息
                 unset($_SESSION[C('USER_AUTH_KEY')]);
                 //不然在某些情况会在,登陆页面反复跳转
                 $this->error(L('_VALID_ACCESS_'), PHP_FILE . C('USER_AUTH_GATEWAY'));
                 //$this->error(L('_VALID_ACCESS_'),__APP__ . C('USER_AUTH_GATEWAY'));
             }
         }
     }
 }
 public function getAname($authId)
 {
     import('@.ORG.RBAC');
     $groupList = RBAC::getFileGroupAccessList();
     // 查询菜单分组
     $model = M("group");
     //管理员排除验证
     if (!isset($_SESSION['a'])) {
         $map['status'] = 1;
         if ($groupList) {
             $map['id'] = array(" in ", $groupList);
         } else {
             $map['id'] = 0;
         }
     } else {
         $map['status'] = array('gt', 0);
     }
     $list = $model->where($map)->order("sorts asc")->select();
     $pModel = D("Public");
     $nlist = array();
     foreach ($list as $key => $val) {
         $nlist[$val['id']] = $pModel->menuLeftTree($val['id']);
     }
     return $nlist;
 }
Пример #3
0
 function _initialize()
 {
     // 用户权限检查
     if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
         import('ORG.Util.RBAC');
         if (!RBAC::AccessDecision()) {
             //检查认证识别号
             if (!$_SESSION[C('USER_AUTH_KEY')]) {
                 //跳转到认证网关
                 redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
             }
             // 没有权限 抛出错误
             if (C('RBAC_ERROR_PAGE')) {
                 // 定义权限错误页面
                 redirect(C('USER_AUTH_GATEWAY'));
             } else {
                 if (C('GUEST_AUTH_ON')) {
                     $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                 }
                 // 提示错误信息
                 $this->error(L('_VALID_ACCESS_'));
             }
         }
         if (!get_magic_quotes_gpc()) {
             !empty($_POST) && Add_S($_POST);
             !empty($_GET) && Add_S($_GET);
             !empty($_COOKIE) && Add_S($_COOKIE);
             !empty($_SESSION) && Add_S($_SESSION);
         }
         !empty($_FILES) && Add_S($_FILES);
     }
 }
Пример #4
0
 public static function AccessDecision($appName = APP_NAME)
 {
     if (RBAC::checkAccess()) {
         $accessGuid = md5($appName . MODULE_NAME . ACTION_NAME);
         if (empty($_SESSION[C('ADMIN_AUTH_KEY')])) {
             if (C('USER_AUTH_TYPE') == 2) {
                 $accessList = RBAC::getAccessList($_SESSION[C('USER_AUTH_KEY')]);
             } else {
                 if ($_SESSION[$accessGuid]) {
                     return true;
                 }
                 $accessList = $_SESSION['_ACCESS_LIST'];
             }
             $module = defined('P_MODULE_NAME') ? P_MODULE_NAME : MODULE_NAME;
             if (!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {
                 $_SESSION[$accessGuid] = false;
                 return false;
             } else {
                 $_SESSION[$accessGuid] = true;
             }
         } else {
             return true;
         }
     }
     return true;
 }
Пример #5
0
 function _initialize()
 {
     import('@.ORG.Util.Cookie');
     // 用户权限检查
     if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
         import('@.ORG.Util.RBAC');
         if (!RBAC::AccessDecision()) {
             //检查认证识别号
             if (!$_SESSION[C('USER_AUTH_KEY')]) {
                 //跳转到认证网关
                 redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
             }
             // 没有权限 抛出错误
             if (C('RBAC_ERROR_PAGE')) {
                 // 定义权限错误页面
                 redirect(C('RBAC_ERROR_PAGE'));
             } else {
                 if (C('GUEST_AUTH_ON')) {
                     $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                 }
                 // 提示错误信息
                 $this->error(L('_VALID_ACCESS_'));
             }
         }
     }
 }
Пример #6
0
 /**
  * to get singleton instance
  *
  * @access public
  * @return object
  */
 public function &getSingleton()
 {
     if (self::$instance == null) {
         self::$instance = new RBAC();
     }
     return self::$instance;
 }
Пример #7
0
 function checkLogin()
 {
     if (empty($_POST['username'])) {
         $this->error('帐号错误!');
     } elseif (empty($_POST['password'])) {
         $this->error('密码必须!');
     }
     //生成认证条件
     $map = array();
     // 支持使用绑定帐号登录
     $map['username'] = $_POST['username'];
     import('ORG.Util.RBAC');
     $authInfo = RBAC::authenticate($map);
     //使用用户名、密码和状态的方式进行认证
     if (false === $authInfo) {
         $this->error('帐号不存在或已禁用!');
     } else {
         if ($authInfo['password'] != md5($_POST['password'])) {
             $this->error('密码错误!');
         }
         $_SESSION[C('USER_AUTH_KEY')] = $authInfo['id'];
         if ($authInfo['username'] == 'admin') {
             $_SESSION['administrator'] = true;
         }
         // 缓存访问权限
         RBAC::saveAccessList();
         $this->success('登录成功!');
     }
 }
Пример #8
0
 protected function _initialize()
 {
     $sql = "SHOW COLUMNS FROM `" . C("DB_PREFIX") . "user`";
     $COLUMNS = M()->query($sql);
     foreach ($COLUMNS as $vo) {
         $COLUMNS_array[] = $vo["Field"];
     }
     if (!in_array("is_admin", $COLUMNS_array)) {
         $sql = "ALTER TABLE `" . C("DB_PREFIX") . "user` ADD `is_admin` INT NOT NULL DEFAULT '0'";
         M()->query($sql);
     }
     if (!isset($_SESSION["username"])) {
         $this->error("非法操作", U("System/Admin/index"));
     }
     parent::_initialize();
     C("NOT_AUTH_ACTION", "");
     C("NOT_AUTH_MODULE", "Admin");
     if (C("USER_AUTH_ON") && !in_array(MODULE_NAME, explode(",", C("NOT_AUTH_MODULE")))) {
         if (!RBAC::AccessDecision()) {
             if (!$_SESSION[C("USER_AUTH_KEY")]) {
                 redirect(PHP_FILE . C("USER_AUTH_GATEWAY"));
             }
             if (C("RBAC_ERROR_PAGE")) {
                 redirect(C("RBAC_ERROR_PAGE"));
             } else {
                 if (C("GUEST_AUTH_ON")) {
                     $this->assign("jumpUrl", PHP_FILE . C("USER_AUTH_GATEWAY"));
                 }
                 $this->error(L("_VALID_ACCESS_"));
             }
         }
     }
     $this->show_menu();
 }
 public function login()
 {
     if (!IS_POST) {
         halt('页面不存在');
     }
     //sae平台特殊处理验证码
     if (md5(strtoupper($_POST['code'])) != $_SESSION['verify']) {
         //验证错误处理代码
         $this->error('验证码错误');
     }
     // if(I('code', '', 'strtolower') != session('verify')){
     // 	$this->error('验证码错误');
     // }
     $db = M('user');
     $user = $db->where(array('username' => I('username')))->find();
     if (!$user || $user['password'] != I('password', '', 'md5')) {
         $this->error('username or password wrong!');
     }
     //更新最后一次登录时间与IP
     $data = array('id' => $user['id'], 'logintime' => time(), 'loginip' => get_client_ip());
     $db->save($data);
     session(C('USER_AUTH_KEY'), $user['id']);
     session('username', $user['username']);
     session('logintime', date('Y-m-d H:i:s', $user['logintime']));
     session('loginip', $user['loginip']);
     //超级管理员识别
     if ($user['username'] == C('RBAC_SUPERADMIN')) {
         session(C('ADMIN_AUTH_KEY'), true);
     }
     // p($_SESSION);
     //读取用户权限
     import('ORG.Util.RBAC');
     RBAC::saveAccessList();
     redirect(__GROUP__);
 }
Пример #10
0
 /**
  * to get singleton instance
  *
  * @access public
  * @return object
  */
 function &getSingleton()
 {
     if (self::$instance == NULL) {
         self::$instance = new RBAC();
     }
     return self::$instance;
 }
 public function login()
 {
     if (!IS_POST) {
         halt('页面不存在3');
     }
     // 		if(I('code','','md5')!=session('verify')){
     // 			$this->error('验证码错误');
     // 		}
     $username = I('username');
     $pwd = I('password', '', 'md5');
     $user = M('user')->where(array('username' => $username))->find();
     if (!$user || $user['password'] != $pwd) {
         $this->error('账号或密码错误!');
     }
     if ($user['lock']) {
         $this->error('用户被锁了');
     }
     $data = array('id' => $user['id'], 'logintime' => time(), 'loginip' => get_client_ip());
     M('user')->save($data);
     session(C('USER_AUTH_KEY'), $user['id']);
     session('username', $user['username']);
     session('logintime', date('Y-m-d H:i:s', $user['logintime']));
     session('loginip', $user['loginip']);
     //超级管理员识别
     if ($user['username'] == C('RBAC_SUPERADMIN')) {
         session(C('ADMIN_AUTH_KEY'), true);
     }
     //读取用户权限
     import('ORG.Util.RBAC');
     RBAC::saveAccessList();
     p($_SESSION);
     die;
     $this->redirect('Admin/Index/index');
 }
Пример #12
0
	protected function _initialize(){		
		if(!isset($_SESSION['username'])){$this->error('非法操作',U('System/Adminsaivi/index'));}
		parent::_initialize();
		if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
            if (!RBAC::AccessDecision()) {
                //检查认证识别号
                if (!$_SESSION [C('USER_AUTH_KEY')]) {
                    //跳转到认证网关
                    redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
                }
                // 没有权限 抛出错误
                if (C('RBAC_ERROR_PAGE')) {
                    // 定义权限错误页面
                    redirect(C('RBAC_ERROR_PAGE'));
                } else {
                    if (C('GUEST_AUTH_ON')) {
                        $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                    }
                    // 提示错误信息
                    $this->error(L('_VALID_ACCESS_'));
                }
            }
        }
		$this->show_menu();
	}
Пример #13
0
 public function login()
 {
     if (!IS_POST) {
         _404('页面不存在');
     }
     /*if(I('code', '', 'md5') != session('verify')){
     			$this->error('验证码错误');
     		}*/
     $username = I('username');
     $pwd = I('password', '', 'md5');
     $user = M('user')->where(array('username' => $username))->find();
     if (!$user || $user['password'] != $pwd) {
         $this->error('账号或密码错误');
     } else {
         if ($user['lock']) {
             $this->error('用户被锁定');
         }
     }
     //更新数据库
     $data = array('id' => $user['id'], 'loginTime' => time(), 'loginIp' => get_client_ip());
     M('user')->save($data);
     //读取权限
     session(C('USER_AUTH_KEY'), $user['id']);
     session('username', $user['username']);
     session('loginTime', date('y-m-d H:i:s'), $user['loginTime']);
     session('loginIp', $user['loginIp']);
     if ($user['username'] == C('RBAC_SUPERADMIN')) {
         session(C('ADMIN_AUTH_KEY'), true);
     }
     import('ORG.Util.RBAC');
     RBAC::saveAccessList();
     //P($_SESSION);
     //die();
     $this->redirect('Admin/Index/index');
 }
Пример #14
0
 function metodillo()
 {
     $sSQL = "SELECT * FROM PM_PARAMETERS WHERE PRM_ID = 'CAS_URL' ";
     $aResSQL = executeQuery($sSQL);
     if (count($aResSQL)) {
         $sURL = $aResSQL[1]['PRM_VALUE'];
         $sURI = $aResSQL[1]['PRM_VALUE_2'];
         $res = false;
         $RBAC = RBAC::getSingleton();
         $RBAC->initRBAC();
         require_once 'CAS-1.2.2/CAS.php';
         phpCAS::client(CAS_VERSION_2_0, $sURL, 443, $sURI, false);
         phpCAS::setNoCasServerValidation();
         phpCAS::forceAuthentication();
         if (phpCAS::isAuthenticated() == true) {
             $sCasUser = phpCAS::getUser();
             $sSQL = "SELECT USR_UID FROM USERS WHERE USR_USERNAME = '******' ";
             $aResSQL = executeQuery($sSQL);
             if (count($aResSQL)) {
                 $nUserId = $aResSQL[1]['USR_UID'];
                 $RBAC->singleSignOn = true;
                 $RBAC->userObj->fields['USR_UID'] = $nUserId;
                 $RBAC->userObj->fields['USR_USERNAME'] = $sCasUser;
                 $res = true;
             } else {
                 $res = false;
             }
         } else {
             $res = false;
         }
     } else {
         $res = false;
     }
     return $res;
 }
Пример #15
0
 public function login()
 {
     $systemConfig = (include WEB_ROOT . 'Common/systemConfig.php');
     if (IS_POST) {
         $pubmod = new PublicModel();
         $returnLoginInfo = $pubmod->auth();
         if ($returnLoginInfo['status'] == 1) {
             $map = array();
             // 支持使用绑定帐号登录
             $map['a_name'] = $this->_post('name');
             import('ORG.Util.RBAC');
             $authInfo = RBAC::authenticate($map);
             $_SESSION[C('USER_AUTH_KEY')] = $authInfo['a_id'];
             #var_dump($_SESSION[C('USER_AUTH_KEY')]);exit;
             $_SESSION['a_name'] = $authInfo['a_name'];
             if ($authInfo['a_name'] == C('ADMIN_AUTH_KEY')) {
                 //是否是管理员登录
                 $_SESSION[C('ADMIN_AUTH_KEY')] = true;
             }
             // 缓存访问权限
             RBAC::saveAccessList();
             $_SESSION['username'] = $authInfo['a_name'];
             //记录管理员log
             $data = array("a_id" => $authInfo['a_id'], "l_content" => "管理员[" . $authInfo['a_name'] . "]于[" . date("Y-m-d H:i:s") . "]登录了[唐亮工长俱乐部]后台管理系统!");
             M("Log")->add($data);
             $this->success("登录成功", U("Index/index"));
             exit;
         } else {
             $this->error($returnLoginInfo['info']);
             exit;
         }
     }
     $this->assign("systemConfig", $systemConfig);
     $this->display();
 }
Пример #16
0
 public function login()
 {
     $user = M('user')->where(array('user_name' => $_POST['user_name']))->find();
     if (!$user || $user['user_password'] != I('user_password', '', 'md5')) {
         $this->error('账号或密码错误', U('Admin/Login/index'));
     }
     if (!$user['user_status']) {
         $this->error('非法用户', U('Index/Index/index'));
     } else {
         session('user_organization', $user['user_nikename']);
     }
     //更新最后一次登陆ip
     $user = array('user_id' => $user['user_id'], 'user_name' => $user['user_name'], 'user_password' => I('user_password', '', 'md5'), 'login_ip' => get_client_ip());
     M('user')->save($user);
     //往session中写入数据
     session(C('USER_AUTH_KEY'), $user['user_id']);
     session('username', $user['user_name']);
     session('userpwd', I('user_password', '', 'md5'));
     //超级管理员识别
     if ($user['user_name'] == C('RBAC_SUPERADMIN')) {
         session(C('ADMIN_AUTH_KEY'), true);
     }
     //读取用户权限
     import('ORG.Util.RBAC');
     RBAC::saveAccessList();
     $this->redirect('Admin/Index/index');
 }
 public function index()
 {
     if (IS_POST) {
         $this->checkToken();
         $returnLoginInfo = D("Public")->auth();
         //生成认证条件
         if ($returnLoginInfo['status'] == 1) {
             $map = array();
             // 支持使用绑定帐号登录
             $map['email'] = $this->_post('email');
             import('ORG.Util.RBAC');
             $authInfo = RBAC::authenticate($map);
             $_SESSION[C('USER_AUTH_KEY')] = $authInfo['aid'];
             $_SESSION['email'] = $authInfo['email'];
             if ($authInfo['email'] == C('ADMIN_AUTH_KEY')) {
                 $_SESSION[C('ADMIN_AUTH_KEY')] = true;
             }
             // 缓存访问权限
             RBAC::saveAccessList();
         }
         echo json_encode($returnLoginInfo);
     } else {
         if (isset($_COOKIE[$this->loginMarked])) {
             $this->redirect("Index/index");
         }
         $systemConfig = (include WEB_ROOT . 'Common/systemConfig.php');
         $this->assign("site", $systemConfig);
         $this->display("Common:login");
     }
 }
Пример #18
0
 protected function _initialize()
 {
     $sql = 'SHOW COLUMNS FROM `' . C('DB_PREFIX') . 'user`';
     $COLUMNS = M()->query($sql);
     foreach ($COLUMNS as $vo) {
         $COLUMNS_array[] = $vo['Field'];
     }
     if (!in_array('is_admin', $COLUMNS_array)) {
         $sql = 'ALTER TABLE `' . C('DB_PREFIX') . 'user` ADD `is_admin` INT NOT NULL DEFAULT \'0\'';
         M()->query($sql);
     }
     if (!isset($_SESSION['username'])) {
         $this->error('非法操作', U('System/Admin/index'));
     }
     parent::_initialize();
     C('NOT_AUTH_ACTION', '');
     C('NOT_AUTH_MODULE', 'Admin');
     if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
         if (!RBAC::AccessDecision()) {
             if (!$_SESSION[C('USER_AUTH_KEY')]) {
                 redirect(PHP_FILE . C('USER_AUTH_GATEWAY'));
             }
             if (C('RBAC_ERROR_PAGE')) {
                 redirect(C('RBAC_ERROR_PAGE'));
             } else {
                 if (C('GUEST_AUTH_ON')) {
                     $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                 }
                 $this->error(L('_VALID_ACCESS_'));
             }
         }
     }
     $this->show_menu();
 }
Пример #19
0
 public function login()
 {
     //判断是否使用post方法传值
     if (!IS_POST) {
         halt('页面错误');
     }
     //读取数据库账号信息
     $db = M('user');
     $user = $db->where(array('username' => I('username')))->find();
     if (!$user || $user['password'] != I('password')) {
         $this->error('账号或密码错误');
     }
     //更新最后一次登录时间与IP
     $data = array('id' => $user['id'], 'logintime' => time(), 'loginip' => get_client_ip());
     $db->save($data);
     //设置session
     session(C('USER_AUTH_KEY'), $user['id']);
     session('username', $user['username']);
     session('logintime', date('Y-m-d H:i:s', $user['logintime']));
     session('loginip', $user['loginip']);
     //超级管理员识别
     if ($user['username'] == C('RBAC_SUPPERADMIN')) {
         session(C('ADMIN_AUTH_KEY'), true);
     }
     //读取用户权限
     import('ORG.Util.RBAC');
     RBAC::saveAccessList();
     redirect(__GROUP__);
 }
Пример #20
0
 /**
  * @Title: getSysGroupList
  * @Description: todo(生成系统首页菜单分组方法)
  * @author liminggang
  * @date 2014-8-29 上午10:56:35
  * @throws
  */
 public function getSysGroupList()
 {
     $pannels = "";
     // 实例化换成模型
     $mMisRuntimeData = D('MisRuntimeData');
     // 从当前登录用户获取group的换成
     $pannels = $mMisRuntimeData->getRuntimeCache("Group", 'grouplist');
     if (empty($pannels)) {
         import('@.ORG.RBAC');
         $groupList = RBAC::getFileGroupAccessList();
         // 查询菜单分组
         $model = M("group");
         // 管理员排除验证
         if (!isset($_SESSION['a'])) {
             $map['status'] = 1;
             if ($groupList) {
                 $map['id'] = array(" in ", $groupList);
             } else {
                 $map['id'] = 0;
             }
         } else {
             $map['status'] = array('gt', 0);
         }
         $list = $model->where($map)->order("sorts asc")->select();
         if (isset($_SESSION[C('USER_AUTH_KEY')])) {
             $i = 0;
             $h .= "<ul class=\"clearfix\">";
             foreach ($list as $k => $v) {
                 $i++;
                 $h .= "<li>";
                 $sysh = "<li class=\"mainlist\">";
                 if (!$v["icon"]) {
                     $v["icon"] = "appbtn_61.png";
                 }
                 if ($v['indexlink']) {
                     //$h .= "<a href='__APP__/Public/nvigateTO/groupid/" . $v ["id"] . "' target='navTab' rel='" . $v ["name"] . "'>";
                     $h .= "<a href='__APP__/Common/nvigateTO/groupid/" . $v["id"] . "' target='navTab' rel='" . $v["name"] . "'>";
                     //$sysh .= '<a href="#" url="__APP__/Public/nvigateTO/id/' . $v ["id"] . '" targets="navTab" rel="' . $v ["name"] . '" title="' . $v ["name"] . '"><img alt="' . $v ["name"] . '" height="64" src="__PUBLIC__/Images/xyicon/' . $v ["icon"] . '" width="64" /><span>' . $v ["name"] . '</span></a>';
                     $sysh .= '<a href="#" url="__APP__/Common/nvigateTO/id/' . $v["id"] . '" targets="navTab" rel="' . $v["name"] . '" title="' . $v["name"] . '"><img alt="' . $v["name"] . '" height="64" src="__PUBLIC__/Images/xyicon/' . $v["icon"] . '" width="64" /><span>' . $v["name"] . '</span></a>';
                 } else {
                     $h .= "<a href='#'>";
                     $sysh .= '<a class="maina" href="#" title="' . $v["name"] . '"><img alt="' . $v["name"] . '" height="64" src="__PUBLIC__/Images/xyicon/' . $v["icon"] . '" width="64" /><span>' . $v["name"] . '</span></a>';
                 }
                 $h .= '<img alt="' . $v["title"] . '" height="32" src="__PUBLIC__/Images/xyicon/' . $v["icon"] . '" width="32" />';
                 $h .= "<span>" . $v["name"] . "</span></a>";
                 $h .= "</li>";
             }
             $h .= "</ul>";
             if ($i > 0) {
                 $pannels .= $h;
             }
         }
         // 如果pannels不为空,就写入当前用户换成中
         if ($pannels) {
             $mMisRuntimeData->setRuntimeCache($pannels, "Group", 'grouplist');
         }
     }
     return $pannels;
 }
Пример #21
0
 /**
 * @name checkLogin
 * @access 
 * @const 指明常量
 * @module Home
 * @param 
 * @return $info[ "info"  => "xxxx",
                 "state" => x0x,
                 ]
 * @throws 
 * @todo 保证安全,滑动式验证码
 * @var 加密md5(hash('sha256', ($goal_stu['salt'] % 3))).sha1(I('post.password'))
 * @version 1.0
 */
 public function checkLogin()
 {
     $user = M('user');
     $salt_condition = array("username" => I('post.user_name'), "statis" => 1);
     $goal_salt = $user->where($salt_condition)->find();
     if (!session("?testtime")) {
         session('testtime', 0);
     }
     if (session("testtime") > 4) {
         $info = array("info" => "尝试次数过多,请稍后再试", "state" => 400);
         echo json_encode($info);
     } else {
         if (!$goal_salt) {
             $student = M('student');
             $stu_condition = array('stu_id' => I('post.user_name'), 'status' => 1);
             $goal_stu = $student->where($stu_condition)->find();
             if (!$goal_stu) {
                 $info = array("info" => "用户不存在", "state" => 401);
                 session('testtime', session('testtime') + 1);
                 echo json_encode($info);
             } elseif ($goal_stu) {
                 if ($goal_stu['password'] == md5(hash('sha256', $goal_stu['salt'] % 3)) . sha1(I('post.password'))) {
                     $info = array("info" => "success", "state" => 200);
                     session('type', 'stu');
                     session('stu_id', $goal_stu['stu_id']);
                     session('username', $goal_stu['stu_name']);
                     echo json_encode($info);
                 } else {
                     session('testtime', session('testtime') + 1);
                     $info = array("info" => "密码错误", "state" => 404);
                     echo json_encode($info);
                 }
             } else {
                 $info = array("info" => "用户不存在", "state" => 401);
                 session('testtime', session('testtime') + 1);
                 echo json_encode($info);
             }
         } else {
             $condition = array("username" => I('post.user_name'), "password" => md5(hash('sha256', $goal_salt['salt'] % 3)) . sha1(I('post.password')), "status" => 1);
             $goal_user = $user->where($condition)->find();
             if (!$goal_user) {
                 session('testtime', session('testtime') + 1);
                 $info = array("info" => "密码错误", "state" => 404);
                 echo json_encode($info);
             } else {
                 $info = array("info" => "success", "state" => 200);
                 session('testtime', 0);
                 session(C("USER_AUTH_KEY"), $goal_user["id"]);
                 session('username', $goal_user['username']);
                 if ($goal_user['username'] == C('RBAC_SUPERADMIN')) {
                     session(C('ADMIN_AUTH_KEY'), true);
                 }
                 RBAC::saveAccessList();
                 echo json_encode($info);
             }
         }
     }
 }
Пример #22
0
 /**
  * 左侧菜单
  *
  * @author Vonwey <*****@*****.**>
  * @CreateDate: 2013-12-23 上午11:09:49
  */
 public function left()
 {
     $id = intval($_REQUEST['id']) ? intval($_REQUEST['id']) : 1;
     if (isset($_SESSION[C('USER_AUTH_KEY')])) {
         //显示菜单项
         $menu = array();
         if (isset($_SESSION['menu' . $_SESSION[C('USER_AUTH_KEY')]])) {
             //如果已经缓存,直接读取缓存
             $menu = $_SESSION['menu' . $_SESSION[C('USER_AUTH_KEY')]];
         } else {
             //读取数据库模块列表生成菜单项
             $node = M("Node");
             $where['is_menu'] = 1;
             $where['status'] = 1;
             $where['pid'] = $id;
             $list = $node->where($where)->field('id,action,module,module_name')->order('sort asc')->select();
             if (isset($_SESSION['_ACCESS_LIST']) && !$_SESSION[C('ADMIN_AUTH_KEY')]) {
                 $accessList = $_SESSION['_ACCESS_LIST'];
             } else {
                 if (!$_SESSION[C('ADMIN_AUTH_KEY')]) {
                     import('@.ORG.Util.RBAC');
                     $accessList = RBAC::getAccessList($_SESSION[C('USER_AUTH_KEY')]);
                 }
             }
             foreach ($list as $key => $module) {
                 $data['pid'] = $module['id'];
                 $data['is_menu'] = 1;
                 $second = $node->where($data)->field('id,action,module,module_name')->order('sort asc')->select();
                 if (isset($accessList[strtoupper(APP_NAME)][strtoupper($module['module'])]) || $_SESSION[C('ADMIN_AUTH_KEY')]) {
                     //设置模块访问权限
                     $module['access'] = 1;
                     $menu[$key] = $module;
                 }
                 foreach ($second as $i => $value) {
                     if (isset($accessList[strtoupper(APP_NAME)][strtoupper($value['module'])]) || $_SESSION[C('ADMIN_AUTH_KEY')]) {
                         //设置操作访问权限
                         $value['access'] = 1;
                         $item[$i] = $value;
                     }
                     if (!isset($item[$i]['access'])) {
                         unset($item[$i]);
                     }
                 }
                 if (!isset($menu[$key]['access'])) {
                     unset($menu[$key]);
                 } else {
                     $menu[$key]['nodes'] = $item;
                 }
                 unset($item);
             }
             //缓存菜单访问
             //$_SESSION['menu'.$_SESSION[C('USER_AUTH_KEY')]]	=	$menu;
         }
         $this->assign('menus', $menu);
     }
     $this->display();
 }
Пример #23
0
 public function checkLogin()
 {
     if (empty($_POST['account'])) {
         $this->error('帐号错误!');
     } elseif (empty($_POST['password'])) {
         $this->error('密码必须!');
     } elseif (empty($_POST['verify'])) {
         $this->error('验证码必须!');
     }
     // 登录验证码获取
     $verifyCodeStr = $_POST['verify'];
     $verifyCodeNum = array_flip($_SESSION['verifyCode']);
     $len = strlen(trim($_POST['verify']));
     for ($i = 0; $i < $len; $i++) {
         $verify .= $verifyCodeNum[$verifyCodeStr[$i]];
     }
     if ($verify != '0123456789') {
         $this->error('验证码错误!');
     }
     $User = M('User');
     //生成认证条件
     $map = array();
     $map["account"] = $_POST['account'];
     $map["status"] = array('gt', 0);
     //$authInfo = $User->find($map);
     $authInfo = RBAC::authenticate($map);
     //使用用户名、密码和状态的方式进行认证
     if (false === $authInfo) {
         $this->error('帐号不存在或已禁用!');
     } else {
         if ($authInfo['password'] != md5($_POST['password'])) {
             $this->error('密码错误!');
         }
         $_SESSION[C('USER_AUTH_KEY')] = $authInfo['id'];
         $_SESSION['email'] = $authInfo['email'];
         $_SESSION['loginUserName'] = $authInfo['nickname'];
         $_SESSION['lastLoginTime'] = $authInfo['last_login_time'];
         $_SESSION['login_count'] = $authInfo['login_count'];
         if ($authInfo['account'] == 'admin') {
             $_SESSION['administrator'] = true;
         }
         //保存登录信息
         $User = M('User');
         $ip = get_client_ip();
         $time = time();
         $data = array();
         $data['id'] = $authInfo['id'];
         $data['last_login_time'] = $time;
         $data['login_count'] = array('exp', 'login_count+1');
         $data['last_login_ip'] = $ip;
         $User->save($data);
         // 缓存访问权限
         RBAC::saveAccessList();
         $this->success('登录成功!');
     }
 }
 /**
  *
  */
 protected function _initialize()
 {
     if (!RBAC::AccessDecision('Weixin')) {
         // 登录检查
         RBAC::checkLogin();
         // 提示错误信息 无权限
         $this->error(L('_VALID_ACCESS_'));
         // TODO 如何防止循环无权限
     }
 }
Пример #25
0
 public function checkLogin()
 {
     //如果用户名密码(可在此外加验证码)为空则直接阻止用户访问
     if (empty($_POST['username'])) {
         $this->error('帐号错误!');
     } elseif (empty($_POST['password'])) {
         $this->error('密码必须!');
     }
     //生成认证条件
     $map = array();
     // 支持使用绑定帐号登录,将获得到用户名放到$map中
     $map['username'] = $_POST['username'];
     $map['active'] = 1;
     //加载RBAC类
     import('ORG.Util.RBAC');
     //通过authenticate去读取出来所有的用户信息,仅传用户名即可
     $authInfo = RBAC::authenticate($map);
     //使用用户名、密码和状态的方式进行认证
     //如果没有获取到信息
     if (false === $authInfo || $authInfo == "") {
         $this->error('帐号不存在或已禁用!');
     } else {
         //通过$authinfo获取的信息与post当中的md5密码进行对比
         if (strtolower($authInfo['password']) != strtolower(md5($_POST['password']))) {
             $this->error('密码错误!');
         }
         //激活用户标识号
         $_SESSION[C('USER_AUTH_KEY')] = $authInfo['user_id'];
         $_SESSION['user'] = $authInfo;
         //如果用户标识号是管理员,则激活管理员标识,具有一切可访问权限
         if (in_array($authInfo['username'], array('admin', 'system'))) {
             $_SESSION[C('ADMIN_AUTH_KEY')] = true;
         }
         // 通过RBAC类中的静态方法saveAccessList缓存访问权限
         RBAC::saveAccessList();
         //            dump($_SESSION[C('USER_AUTH_KEY')]);
         //            die();
         //判断密码过期
         if (D('user')->check_password()) {
             $this->assign("jumpUrl", '?m=user&a=password');
             $this->success('登录成功!但是密码已经过期,请修改');
         } else {
             //判断用户从哪进入登陆页面,登陆成功后返回前一个页面
             $url = explode("?", $_POST['url']);
             $url = explode("&", $url[1]);
             if (isset($_POST['url']) && !empty($_POST['url']) && $url['0'] != "m=public" && $url['0'] != "m=public" && $url['0'] != "m=public" && $url['0'] != "m=public" && $url['0'] != "m=public") {
                 $this->assign("jumpUrl", $_POST['url']);
             } else {
                 $this->assign("jumpUrl", '?m=dashboard&a=index');
             }
             $this->assign("waitSecond", "2");
             $this->success('登录成功!');
         }
     }
 }
Пример #26
0
 public function login()
 {
     if (!IS_POST) {
         halt("页面不存在");
     }
     if (!IS_AJAX) {
         halt('页面不存在');
     }
     $data = array('unum' => I('username'), 'upassword' => md5(I('password')), 'verify_code' => I('verify_code', '', 'md5'));
     if ($data['verify_code'] != session('verify')) {
         //验证码错误
         $this->ajaxReturn(array('status' => 2), 'json');
     } else {
         if ($data['unum'] == '' || $data['upassword'] == '') {
             //服务器端未能接收到用户名或密码
             $this->ajaxReturn(array('status' => 0), 'json');
         } else {
             //验证用户名密码
             $map['unum'] = $data['unum'];
             $map['upassword'] = $data['upassword'];
             $result = M('user')->where($map)->find();
             if ($result == null) {
                 //数据库中没有这个用户
                 $this->ajaxReturn(array('status' => 1), 'json');
             } else {
                 //登陆成功处理
                 if (!$result['ustatus']) {
                     $this->ajaxReturn(array('status' => 4), 'json');
                 } else {
                     $data = array('uid' => $result['uid'], 'ulogintime' => time(), 'uloginip' => get_client_ip());
                     M('user')->save($data);
                     session('uid', $result['uid']);
                     session('unum', $result['unum']);
                     session('uname', $result['uname']);
                     session('upassword', $result['upassword']);
                     session('uphone', $result['uphone']);
                     session('umale', $result['umale']);
                     session('ubirth', $result['ubirth']);
                     session('udate', $result['udate']);
                     session('ustatus', $result['ustatus']);
                     session('ulogintime', date('Y-m-d H:i:s', $result['ulogintime']));
                     session('uloginip', $result['uloginip']);
                     //超级管理员识别
                     if ($result['unum'] == C('RBAC_SUPERADMIN')) {
                         session(C('ADMIN_AUTH_KEY'), true);
                     }
                     //读取用户权限
                     import('ORG.Util.RBAC');
                     RBAC::saveAccessList();
                     $this->ajaxReturn(array('status' => 3), 'json');
                 }
             }
         }
     }
 }
Пример #27
0
 public function _initialize()
 {
     if (!isset($_SESSION[C('USER_AUTH_KEY')])) {
         $this->redirect('Admin/Login/index');
     }
     $notAuth = in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE'))) || in_array(ACTION_NAME, explode(',', C('NOT_AUTH_ACTION')));
     //file_put_contents('./action.php', ACTION_NAME);
     if (C('USER_AUTH_ON') && !$notAuth) {
         RBAC::AccessDecision() || $this->error('没有权限');
     }
 }
Пример #28
0
 public function _initialize()
 {
     if (!isset($_SESSION[C('USER_AUTH_KEY')])) {
         $this->redirect('Admin/Login/index');
     }
     $notAuth = in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE'))) || in_array(ACTION_NAME, explode(',', C('NOT_AUTH_ACTION')));
     if (C('USER_AUTH_ON') && !$notAuth) {
         import('ORG.Util.RBAC');
         RBAC::AccessDecision(GROUP_NAME) || $this->error('没有权限');
     }
 }
Пример #29
0
 public function checkLogin()
 {
     if (empty($_POST['username'])) {
         $this->error('请填写用户名!');
     } elseif (empty($_POST['pwd'])) {
         $this->error('请填写密码!');
     } elseif (empty($_POST['verify'])) {
         $this->error('请填写验证码!');
     }
     //生成认证条件
     $map = array();
     // 支持使用绑定帐号登录
     $map['username'] = $_POST['username'];
     //$map["status"] = array('gt',0);
     if (session('verify') != md5($_POST['verify'])) {
         $this->error('验证码错误!');
     }
     import('ORG.Util.RBAC');
     $authInfo = RBAC::authenticate($map);
     //使用用户名、密码和状态的方式进行认证
     if (false === $authInfo) {
         $this->error('帐号不存在!');
     } else {
         if ($authInfo['pwd'] != md5($_POST['pwd'])) {
             $this->error('密码错误!');
         }
         //是否禁用
         if ($authInfo['status'] == 0) {
             $this->error('账号已被管理员禁用!');
         }
         $_SESSION[C('USER_AUTH_KEY')] = $authInfo['uid'];
         $_SESSION['email'] = $authInfo['email'];
         $_SESSION['loginUserName'] = $authInfo['username'];
         $_SESSION['lastLoginTime'] = $authInfo['logintime'];
         //$_SESSION['login_count'] = $authInfo['login_count'];
         //若是管理员开启管理员权限
         if ($authInfo['isadmin'] == 1) {
             $_SESSION[C('ADMIN_AUTH_KEY')] = true;
         }
         //保存登录信息
         $User = M('Users');
         $ip = get_client_ip();
         $time = time();
         $data = array();
         $data['uid'] = $authInfo['uid'];
         $data['logintime'] = $time;
         //$data['login_count']	=	array('exp','login_count+1');
         $data['loginip'] = $ip;
         $User->save($data);
         // 缓存访问权限
         RBAC::saveAccessList();
         $this->success('登录成功!', __APP__ . '/Index/index');
     }
 }
Пример #30
0
 function checkLogin()
 {
     if (empty($_POST['username'])) {
         alert("帐号错误", 1);
     } elseif (empty($_POST['password'])) {
         alert("密码必须!", 1);
     } elseif (empty($_POST['verify'])) {
         alert('验证码必须!', 1);
     }
     if (md5($_POST['verify']) != $_SESSION['verify']) {
         alert('验证码错误!', 1);
     }
     //生成认证条件
     $map = array();
     // 支持使用绑定帐号登录
     $map['username'] = trim($_POST['username']);
     $map["status"] = array('gt', 0);
     import('@.ORG.RBAC');
     $authInfo = RBAC::authenticate($map);
     //使用用户名、密码和状态的方式进行认证
     if (false === $authInfo) {
         alert('帐号不存在!', 1);
     }
     if (empty($authInfo)) {
         alert('帐号不存在或已禁用!', 1);
     }
     $pwdinfo = strcmp($authInfo['password'], md5('wk' . trim($_POST['password']) . 'cms'));
     if ($pwdinfo != 0) {
         alert('密码错误!', 1);
     }
     $_SESSION[C('USER_AUTH_KEY')] = $authInfo['id'];
     $_SESSION['username'] = $_POST['username'];
     $_SESSION['cookietime'] = time();
     $role = M('role_admin');
     $authInfo['role_id'] = $role->where('user_id=' . $authInfo['id'])->getField('role_id');
     if ($authInfo['role_id'] == '1') {
         $_SESSION['administrator'] = true;
     }
     //保存登录信息
     $admin = M('admin');
     $ip = get_client_ip();
     $time = time();
     $data = array();
     $data['id'] = $authInfo['id'];
     $data['lastlogintime'] = $time;
     $data['lastloginip'] = $ip;
     $admin->save($data);
     // 缓存访问权限
     RBAC::saveAccessList();
     //保存cookie信息
     Cookie::set($_SESSION['cookietime'], '1', 60 * 60 * 3);
     //dump($_SESSION);
     $this->index();
 }