Пример #1
0
 /**
  * 用户登录操作
  * 用户登录成功后将权限信息写入$_SESSION
  * 如果用户登录成功并且用户名与$superadmin参数相同,此用户即为超级用户,不受任何访问权限限制
  * @param string $username              用户名
  * @param string $password              密码
  * @param string $superadmin            超级管理员帐号
  * @param string $fieldUserName         用户表中的用户名字段名称
  * @param string $fieldPassword         用户表中的密码字段名称
  * @return boolean
  */
 public static function login($username, $password, $superadmin = null, $fieldUserName = null, $fieldPassword = null)
 {
     $superadmin = is_null($superadmin) ? C("RBAC_SUPER_ADMIN") : $superadmin;
     $fieldUserName = is_null($fieldUserName) ? C("RBAC_USERNAME_FIELD") : $fieldUserName;
     //用户表中的用户名字段名称
     $fieldPassword = is_null($fieldPassword) ? C("RBAC_PASSWORD_FIELD") : $fieldPassword;
     //用户表中的密码字段名称
     if (!C("RBAC_USER_TABLE")) {
         error(L("rbac_rbac_user_login1"));
     }
     $table_user = C('DB_PREFIX') . str_ireplace(C('DB_PREFIX'), "", C("RBAC_USER_TABLE"));
     //验证有无前缀得到用户表
     $db = M($table_user, true);
     $user = $db->find("{$fieldUserName}='{$username}'");
     if (!$user) {
         self::$error = L("rbac_rbac_user_login2");
         return false;
     }
     if ($user[$fieldPassword] != $password) {
         self::$error = L("rbac_rbac_user_login3");
         return false;
     }
     $db->table(C("RBAC_ROLE_USER_TABLE"));
     $sql = "SELECT * FROM " . C("DB_PREFIX") . C("RBAC_ROLE_TABLE") . " AS r," . C('DB_PREFIX') . C('RBAC_ROLE_USER_TABLE') . " AS r_u WHERE r_u.rid = r.rid AND uid = '" . $user['uid'] . "'";
     $userRoleInfo = $db->query($sql);
     //获得用户组信息
     $_SESSION['username'] = $user['username'];
     $_SESSION[C("RBAC_AUTH_KEY")] = $user['uid'];
     $_SESSION['role'] = $userRoleInfo[0]['rname'];
     $_SESSION['rid'] = $userRoleInfo[0]['rid'];
     //是否判断超管理员
     if (strtoupper($user['username']) == strtoupper($superadmin)) {
         //登录成功
         $_SESSION[C("RBAC_SUPER_ADMIN")] = 1;
         $_SESSION["RBAC"] = array();
         return true;
     }
     if (!$_SESSION['rid']) {
         //不属于任何角色
         self::$error = L("rbac_rbac_user_login4");
         return false;
     }
     self::getAccess();
     //获得权限写入SESSION
     return true;
 }
Пример #2
0
 /**
  * 用户登录操作
  * 用户登录成功后将权限信息写入$_SESSION
  * 如果用户登录成功并且用户名与$superadmin参数相同,此用户即为超级用户,不受任何访问权限限制
  * @param string $username              用户名
  * @param string $password              密码
  * @param string $superadmin            超级管理员帐号
  * @param string $fieldUserName         用户表中的用户名字段名称
  * @param string $fieldPassword         用户表中的密码字段名称
  * @return boolean
  */
 public static function login($username, $password, $superadmin = null, $fieldUserName = null, $fieldPassword = null)
 {
     $superadmin = is_null($superadmin) ? C("RBAC_SUPER_ADMIN") : $superadmin;
     $fieldUserName = is_null($fieldUserName) ? C("RBAC_USERNAME_FIELD") : $fieldUserName;
     //用户表中的用户名字段名称
     $fieldPassword = is_null($fieldPassword) ? C("RBAC_PASSWORD_FIELD") : $fieldPassword;
     //用户表中的密码字段名称
     if (!C("RBAC_USER_TABLE")) {
         halt('用户表设置错误,请在配置文件中添加用户表');
     }
     $table_user = str_ireplace(C('DB_PREFIX'), "", C("RBAC_USER_TABLE"));
     //验证有无前缀得到用户表
     // echo "$fieldUserName='******'";die;
     $db = M($table_user);
     $user = $db->where("{$fieldUserName}='{$username}'")->all();
     // p($user);//die;
     if (!$user) {
         self::$error = '用户不存在';
         return false;
     }
     if ($user[0][$fieldPassword] != $password) {
         self::$error = '密码输入错误';
         return false;
     }
     $uid = C("RBAC_AUTH_KEY");
     //验证session中的key
     $db->table = C("RBAC_ROLE_USER_TABLE");
     $sql = "SELECT * FROM " . C("DB_PREFIX") . C("RBAC_ROLE_TABLE") . " AS r," . C('DB_PREFIX') . C('RBAC_ROLE_USER_TABLE') . " AS r_u WHERE r_u.role_id = r.id AND user_id = '" . $user[0]['id'] . "'";
     // echo $sql;die;
     $userRoleInfo = $db->query($sql);
     //获得用户组信息
     // p($userRoleInfo);
     $_SESSION['username'] = $user[0]['admin_username'];
     $_SESSION[C("RBAC_AUTH_KEY")] = $user[0]['id'];
     $_SESSION['role'] = $userRoleInfo[0]['name'];
     $_SESSION['rid'] = $userRoleInfo[0]['role_id'];
     //是否判断超管理员
     // echo strtoupper($user[0]['admin_username']);
     // echo strtoupper($superadmin);
     // p($superadmin);die;
     // p($_SESSION);die;
     if (strtoupper($user[0]['admin_username']) == strtoupper($superadmin)) {
         //登录成功
         // echo C("RBAC_SUPER_ADMIN");die;
         $_SESSION[C("RBAC_SUPER_ADMIN")] = 1;
         $_SESSION["RBAC"] = array();
         return true;
     }
     if (!$_SESSION['rid']) {
         //不属于任何角色
         self::$error = '不属于任何组,没有访问权限';
         return false;
     }
     self::getAccess();
     //获得权限写入SESSION
     return true;
 }