<?php
|
|
namespace User;
|
|
include_once "/Common/CommFunc.php";
|
include_once "/db/DBOper.php";
|
|
static $PermissionModules = NULL;
|
|
/**
|
* 模块权限分组 {模块分组名:{"后台权限key":{"Name":描述名称, "GMTKey1":array(普通GMT命令列表), "GMTKey2":array(高级GMT命令列表)}, ...}, ...}
|
* 注意区分 后台权限key 与 GMT命令权限key
|
* 后台权限key 仅用于后台网站管理的权限,不同的后台权限key可能对应相同的 GMT命令权限key,也可能没有对应的GMT命令权限
|
* GMT命令权限key 游戏服务器用于接收GMT命令时验证的权限,区分普通命令及高级命令,对应 GMTKey1 GMTKey2
|
*/
|
function GetPermissionModules()
|
{
|
global $PermissionModules;
|
if (!isset($PermissionModules)) {
|
$PermissionModules = array(
|
array(
|
"ModuleID" => "ServerRep",
|
"Name" => \Lang\gettext("全服报表"),
|
"PList" => array(
|
Permission::P_REP_AllView => array("Name" => \Lang\gettext("全服总览")),
|
Permission::P_REP_DailyUser => array("Name" => \Lang\gettext("全服每日用户")),
|
Permission::P_REP_KeepLogin => array("Name" => \Lang\gettext("全服留存")),
|
Permission::P_REP_LTV => array("Name" => \Lang\gettext("全服LTV")),
|
Permission::P_REP_FirstLoginFirstPayCnt => array("Name" => \Lang\gettext("首登首充人数")),
|
Permission::P_REP_XPayPaycnt => array("Name" => \Lang\gettext("购买X礼包再次付费人数")),
|
Permission::P_All_PlayerLV => array("Name" => \Lang\gettext("全服等级分布")),
|
)
|
),
|
array(
|
"ModuleID" => "ServerInfo",
|
"Name" => \Lang\gettext("服务器"),
|
"PList" => array(
|
Permission::P_Online => array("Name" => \Lang\gettext("在线人数")),
|
Permission::P_PlayerLV => array("Name" => \Lang\gettext("等级分布")),
|
Permission::P_Chatmonitor => array("Name" => \Lang\gettext("聊天监控")),
|
Permission::P_BugReport => array("Name" => \Lang\gettext("Bug反馈")),
|
Permission::P_Serverview => array("Name" => \Lang\gettext("本服总览")),
|
Permission::P_PayOverview => array("Name" => \Lang\gettext("充值总览")),
|
Permission::P_PayOrder => array("Name" => \Lang\gettext("充值订单")),
|
Permission::P_PayRank => array("Name" => \Lang\gettext("充值排行")),
|
Permission::P_CTGReportAll => array("Name" => \Lang\gettext("充值分析")),
|
Permission::P_PlayerList => array("Name" => \Lang\gettext("玩家列表")),
|
)
|
),
|
array(
|
"ModuleID" => "Comm",
|
"Name" => \Lang\gettext("普通命令"),
|
"PList" => array(
|
Permission::P_BroadCast => array("Name" => \Lang\gettext("广播"), "GMTKey1" => array("GMT_BroadCast"), "Log" => array("GMT_BroadCast")),
|
Permission::P_BroadCastMulti => array("Name" => \Lang\gettext("多服广播"), "GMTKey1" => array("GMT_BroadCast"), "Log" => array("GMT_BroadCast")),
|
Permission::P_ClearTalkCache => array("Name" => \Lang\gettext("清空聊天缓存"), "GMTKey1" => array("GMT_ClearTalkCache"), "Log" => array("GMT_ClearTalkCache")),
|
Permission::P_ForbidTalk => array(
|
"Name" => \Lang\gettext("禁言/解禁"), "GMTKey1" => array("GMT_ForbidTalk", "GMT_UnForbidTalk"),
|
"Log" => array("GMT_ForbidTalk", "GMT_UnForbidTalk")
|
),
|
Permission::P_ForbidLogin => array(
|
"Name" => \Lang\gettext("封号/解封"), "GMTKey1" => array("GMT_ForbidLogin", "GMT_LockIP", "GMT_UnLockIP", "GMT_UnForbidLogin"),
|
"Log" => array("GMT_ForbidLogin", "GMT_LockIP", "GMT_UnLockIP", "GMT_UnForbidLogin")
|
),
|
Permission::P_KickPlayer => array("Name" => \Lang\gettext("踢下线"), "GMTKey1" => array("GMT_KickPlayer"), "Log" => array("GMT_KickPlayer")),
|
Permission::P_GetPlayerForbid => array("Name" => \Lang\gettext("查询玩家封禁状态"), "GMTKey1" => array("GMT_GetPlayerForbid")),
|
Permission::P_GetForbidInfo => array("Name" => \Lang\gettext("查询全服封禁名单"), "GMTKey1" => array("GMT_GetForbidInfo")),
|
Permission::P_GetPlayerInfo => array("Name" => \Lang\gettext("查询玩家"), "GMTKey1" => array("GMT_GetPlayerInfo", "GMT_PlayerItemInfo")),
|
Permission::P_GetFamilyInfo => array("Name" => \Lang\gettext("查询仙盟"), "GMTKey1" => array("GMT_GetFamilyInfo")),
|
Permission::P_FamilyTransfer => array("Name" => \Lang\gettext("转让仙盟"), "GMTKey1" => array("GMT_FamilyTransfer"), "Log" => array("GMT_FamilyTransfer")),
|
Permission::P_FamilyDismiss => array("Name" => \Lang\gettext("解散仙盟"), "GMTKey1" => array("GMT_FamilyDismiss"), "Log" => array("GMT_FamilyDismiss")),
|
Permission::P_QueryBillboard => array("Name" => \Lang\gettext("查询排行榜"), "GMTKey1" => array("GMT_QueryBillboard")),
|
Permission::P_QueryBillboardCross => array("Name" => \Lang\gettext("查询跨服排行榜"), "GMTKey1" => array("GMT_QueryBillboardCross")),
|
Permission::P_MagicWeaponExp => array("Name" => \Lang\gettext("法宝灵魂"), "GMTKey1" => array("GMT_MagicWeaponExp")),
|
Permission::P_UserLog => array("Name" => \Lang\gettext("查看动态")),
|
)
|
),
|
array(
|
"ModuleID" => "Super",
|
"Name" => \Lang\gettext("高级命令"),
|
"PList" => array(
|
Permission::P_CTGReq => array(
|
"Name" => \Lang\gettext("充值申请"), "GMTKey2" => array("GMT_CTG"), "Title" => \Lang\gettext("如果没有充值免审权限则申请后需要审核"),
|
"Log" => array("GMT_CTG"), "NOCheck" => Permission::P_CTGNOCheck, "Check" => Permission::P_CTGCheck
|
),
|
Permission::P_CTGNOCheck => array("Name" => \Lang\gettext("充值免审"), "GMTKey2" => array("GMT_CTG"), "Title" => \Lang\gettext("可免审核直接充值")),
|
Permission::P_CTGCheck => array("Name" => \Lang\gettext("充值审核")),
|
Permission::P_AddPayCoin => array("Name" => \Lang\gettext("发放代币"), "GMTKey2" => array("GMT_AddPayCoin"), "Log" => array("GMT_AddPayCoin")),
|
Permission::P_DelPlayerMoney => array("Name" => \Lang\gettext("扣除玩家货币"), "GMTKey2" => array("GMT_DelPlayerMoney"), "Log" => array("GMT_DelPlayerMoney")),
|
Permission::P_DelPlayerItem => array("Name" => \Lang\gettext("扣除玩家物品"), "GMTKey2" => array("GMT_DelPlayerItem"), "Log" => array("GMT_DelPlayerItem")),
|
Permission::P_SetGMLevel => array("Name" => \Lang\gettext("设置玩家GM"), "GMTKey2" => array("GMT_SetGMLevel"), "Log" => array("GMT_SetGMLevel")),
|
Permission::P_Face => array("Name" => \Lang\gettext("头像管理"), "GMTKey2" => array("GMT_Face"), "Log" => array("GMT_Face")),
|
Permission::P_AddTitle => array("Name" => \Lang\gettext("称号管理"), "GMTKey2" => array("GMT_AddTitle"), "Log" => array("GMT_AddTitle")),
|
Permission::P_Worship => array("Name" => \Lang\gettext("膜拜管理"), "GMTKey2" => array("GMT_Worship")),
|
Permission::P_AddAuctionItem => array("Name" => \Lang\gettext("上架拍品"), "GMTKey2" => array("GMT_AddAuctionItem")),
|
Permission::P_RefixWorldLV => array("Name" => \Lang\gettext("纠正世界等级"), "GMTKey2" => array("GMT_RefixWorldLV")),
|
Permission::P_BourseOnOff => array("Name" => \Lang\gettext("交易所开关"), "GMTKey2" => array("GMT_BourseOnOff")),
|
Permission::P_CrossActServerIDChange => array("Name" => \Lang\gettext("跨服活动区服ID修改"), "GMTKey2" => array("GMT_CrossActServerIDChange")),
|
Permission::P_CrossBattleChampionSet => array("Name" => \Lang\gettext("跨服战场冠军赛"), "GMTKey2" => array("GMT_CrossBattleChampionSet")),
|
Permission::P_Execfile => array("Name" => \Lang\gettext("执行命令"), "GMTKey2" => array("GMT_Execfile"), "Log" => array("GMT_Execfile")),
|
)
|
),
|
array(
|
"ModuleID" => "Mail",
|
"Name" => \Lang\gettext("邮件"),
|
"PList" => array(
|
Permission::P_ServerMailSend => array(
|
"Name" => \Lang\gettext("全服邮件发送"), "GMTKey2" => array("GMT_AddEntireCompensation"), "Title" => \Lang\gettext("如果没有免审权限则发送后需要审核"),
|
"Log" => array("GMT_AddEntireCompensation"), "NOCheck" => Permission::P_ServerMailNOCheck, "Check" => Permission::P_ServerMailCheck
|
),
|
Permission::P_ServerMailTempMgr => array("Name" => \Lang\gettext("全服邮件模板管理")),
|
Permission::P_ServerMailNOCheck => array(
|
"Name" => \Lang\gettext("全服邮件免审"), "GMTKey2" => array("GMT_AddEntireCompensation"),
|
"Title" => \Lang\gettext("可免审核直接发送全服邮件")
|
),
|
Permission::P_ServerMailCheck => array("Name" => \Lang\gettext("全服邮件审核")),
|
Permission::P_ServerMailMgr => array(
|
"Name" => \Lang\gettext("全服邮件管理"), "GMTKey2" => array("GMT_CompensationQuery", "GMT_CompensationMgr"), "Title" => \Lang\gettext("查询删除全服邮件"),
|
"Log" => array("GMT_CompensationMgr")
|
),
|
Permission::P_PersonalMailSend => array(
|
"Name" => \Lang\gettext("个人邮件发送"), "GMTKey2" => array("GMT_AddPersonalCompensation"), "Title" => \Lang\gettext("如果没有免审权限则发送后需要审核"),
|
"Log" => array("GMT_AddPersonalCompensation"), "NOCheck" => Permission::P_PersonalMailNOCheck, "Check" => Permission::P_PersonalMailCheck
|
),
|
Permission::P_PersonalMailTempMgr => array("Name" => \Lang\gettext("个人邮件模板管理")),
|
Permission::P_PersonalMailNOCheck => array(
|
"Name" => \Lang\gettext("个人邮件免审"), "GMTKey2" => array("GMT_AddPersonalCompensation"),
|
"Title" => \Lang\gettext("可免审核直接发送个人邮件")
|
),
|
Permission::P_PersonalMailCheck => array("Name" => \Lang\gettext("个人邮件审核")),
|
Permission::P_PersonalMailMgr => array(
|
"Name" => \Lang\gettext("个人邮件管理"), "GMTKey2" => array("GMT_CompensationQueryPersonal"), "Title" => \Lang\gettext("查询删除玩家未领取的邮件"),
|
"Log" => array("GMT_CompensationQueryPersonal")
|
),
|
)
|
),
|
array(
|
"ModuleID" => "DR",
|
"Name" => \Lang\gettext("流向查询"),
|
"PList" => array(
|
Permission::P_DREntry => array("Name" => \Lang\gettext("流向查询入口")),
|
Permission::P_DRCTGOKSort => array("Name" => \Lang\gettext("充值查询")),
|
Permission::P_ExchangePayCoin => array("Name" => \Lang\gettext("转代币记录")),
|
// Permission::P_DRCTGReport => array("Name" => \Lang\gettext("充值分析")),
|
Permission::P_DRPersonalMail => array("Name" => \Lang\gettext("个人邮件")),
|
Permission::P_DRServerView => array("Name" => \Lang\gettext("区服总览(当前服生态)")),
|
Permission::P_DRServerSum => array("Name" => \Lang\gettext("区服汇总")),
|
Permission::P_DRPlayerMoneyDR => array("Name" => \Lang\gettext("货币查询")),
|
Permission::P_DRPlayerItemDR => array("Name" => \Lang\gettext("物品查询")),
|
Permission::P_DRBuyStoreItem => array("Name" => \Lang\gettext("商城分析")),
|
Permission::P_DRTreasure => array("Name" => \Lang\gettext("寻宝分析")),
|
Permission::P_DRServerKeepLogin => array("Name" => \Lang\gettext("留存分析")),
|
Permission::P_DRServerLTV => array("Name" => \Lang\gettext("LTV分析")),
|
Permission::P_DRFightPowerModule => array("Name" => \Lang\gettext("战力分析")),
|
Permission::P_DRVIPLVInfo => array("Name" => \Lang\gettext("VIP等级")),
|
)
|
),
|
array(
|
"ModuleID" => "OPS",
|
"Name" => \Lang\gettext("运维管理"),
|
"PList" => array(
|
Permission::P_OPSPackBranch => array("Name" => \Lang\gettext("打包分支管理")),
|
Permission::P_OPSVersionState => array("Name" => \Lang\gettext("版本状态管理")),
|
Permission::P_OPSGameVersion => array("Name" => \Lang\gettext("内容版本管理")),
|
Permission::P_OPSServerList => array("Name" => \Lang\gettext("服务器列表")),
|
Permission::P_OPSServerStateMgr => array("Name" => \Lang\gettext("服务器状态管理"), "Log" => array("1")),
|
Permission::P_OPSRefreshServer => array("Name" => \Lang\gettext("刷新选服列表"), "Log" => array("1")),
|
Permission::P_SetOpenServerTime => array("Name" => \Lang\gettext("设置开服时间"), "GMTKey2" => array("GMT_SetOpenServerTime")),
|
Permission::P_CrossServerMaintain => array("Name" => \Lang\gettext("跨服主服维护"), "GMTKey2" => array("GMT_CrossServerMaintain")),
|
Permission::P_CrossClientServerMaintain => array("Name" => \Lang\gettext("跨服子服维护"), "GMTKey2" => array("GMT_CrossClientServerMaintain")),
|
Permission::P_VersionLog => array("Name" => \Lang\gettext("版本更新日志")),
|
)
|
),
|
array(
|
"ModuleID" => "Account",
|
"Name" => \Lang\gettext("账号权限"),
|
"PList" => array(
|
Permission::P_PermissionGroup => array("Name" => \Lang\gettext("权限分组")),
|
Permission::P_UserMgr => array("Name" => \Lang\gettext("账号管理")),
|
)
|
),
|
);
|
}
|
return $PermissionModules;
|
}
|
|
/**
|
* 获取所有权限信息
|
*/
|
function GetPermissionAll()
|
{
|
$PermissionAll = array();
|
foreach (GetPermissionModules() as $mInfo) {
|
$PermissionAll = array_merge($PermissionAll, $mInfo["PList"]);
|
}
|
return $PermissionAll;
|
}
|
|
function GetPermissionInfo($Permission)
|
{
|
foreach (GetPermissionModules() as $mInfo) {
|
if (array_key_exists($Permission, $mInfo["PList"])) {
|
return $mInfo["PList"][$Permission];
|
}
|
}
|
return array();
|
}
|
|
// 权限配置
|
class Permission
|
{
|
/**管理员默认分组名 */
|
const GroupAdmin = "admin";
|
const P_System = "P_System";
|
|
//全服报表
|
const P_REP_AllView = "P_REP_AllView";
|
const P_REP_DailyUser = "P_REP_DailyUser";
|
const P_REP_KeepLogin = "P_REP_KeepLogin";
|
const P_REP_LTV = "P_REP_LTV";
|
const P_REP_FirstLoginFirstPayCnt = "P_REP_FirstLoginFirstPayCnt";
|
const P_REP_XPayPaycnt = "P_REP_XPayPaycnt";
|
const P_All_PlayerLV = "P_All_PlayerLV";
|
|
//服务器
|
const P_Online = "P_Online";
|
const P_PlayerLV = "P_PlayerLV";
|
const P_Chatmonitor = "P_Chatmonitor";
|
const P_BugReport = "P_BugReport";
|
const P_Serverview = "P_Serverview";
|
const P_PayOverview = "P_PayOverview";
|
const P_PayOrder = "P_PayOrder";
|
const P_PayRank = "P_PayRank";
|
const P_CTGReportAll = "P_CTGReportAll";
|
const P_PlayerList = "P_PlayerList";
|
|
//普通命令权限
|
const P_BroadCast = "P_BroadCast";
|
const P_BroadCastMulti = "P_BroadCastMulti";
|
const P_ClearTalkCache = "P_ClearTalkCache";
|
const P_ForbidTalk = "P_ForbidTalk";
|
const P_ForbidLogin = "P_ForbidLogin";
|
const P_KickPlayer = "P_KickPlayer";
|
const P_GetPlayerForbid = "P_GetPlayerForbid";
|
const P_GetForbidInfo = "P_GetForbidInfo";
|
const P_GetPlayerInfo = "P_GetPlayerInfo";
|
const P_GetFamilyInfo = "P_GetFamilyInfo";
|
const P_FamilyTransfer = "P_FamilyTransfer";
|
const P_FamilyDismiss = "P_FamilyDismiss";
|
const P_QueryBillboard = "P_QueryBillboard";
|
const P_QueryBillboardCross = "P_QueryBillboardCross";
|
const P_MagicWeaponExp = "P_MagicWeaponExp";
|
const P_UserLog = "P_UserLog";
|
|
//高级命令权限
|
const P_CTGReq = "P_CTGReq";
|
const P_CTGNOCheck = "P_CTGNOCheck";
|
const P_CTGCheck = "P_CTGCheck";
|
const P_AddPayCoin = "P_AddPayCoin";
|
const P_DelPlayerMoney = "P_DelPlayerMoney";
|
const P_DelPlayerItem = "P_DelPlayerItem";
|
const P_SetGMLevel = "P_SetGMLevel";
|
const P_AddTitle = "P_AddTitle";
|
const P_Face = "P_Face";
|
const P_Worship = "P_Worship";
|
const P_AddAuctionItem = "P_AddAuctionItem";
|
const P_RefixWorldLV = "P_RefixWorldLV";
|
const P_BourseOnOff = "P_BourseOnOff";
|
const P_CrossActServerIDChange = "P_CrossActServerIDChange";
|
const P_CrossBattleChampionSet = "P_CrossBattleChampionSet";
|
const P_Execfile = "P_Execfile";
|
|
//邮件权限
|
const P_ServerMailSend = "P_ServerMailSend";
|
const P_ServerMailTempMgr = "P_ServerMailTempMgr";
|
const P_ServerMailNOCheck = "P_ServerMailNOCheck";
|
const P_ServerMailCheck = "P_ServerMailCheck";
|
const P_ServerMailMgr = "P_ServerMailMgr";
|
const P_PersonalMailSend = "P_PersonalMailSend";
|
const P_PersonalMailTempMgr = "P_PersonalMailTempMgr";
|
const P_PersonalMailNOCheck = "P_PersonalMailNOCheck";
|
const P_PersonalMailCheck = "P_PersonalMailCheck";
|
const P_PersonalMailMgr = "P_PersonalMailMgr";
|
|
//流向权限
|
const P_DREntry = "P_DREntry";
|
const P_DRCTGOKSort = "P_DRCTGOKSort";
|
const P_ExchangePayCoin = "P_ExchangePayCoin";
|
const P_DRCTGReport = "P_DRCTGReport";
|
const P_DRPersonalMail = "P_DRPersonalMail";
|
const P_DRServerView = "P_DRServerView";
|
const P_DRServerSum = "P_DRServerSum";
|
const P_DRPlayerMoneyDR = "P_DRPlayerMoneyDR";
|
const P_DRPlayerItemDR = "P_DRPlayerItemDR";
|
const P_DRBuyStoreItem = "P_DRBuyStoreItem";
|
const P_DRTreasure = "P_DRTreasure";
|
const P_DRServerKeepLogin = "P_DRServerKeepLogin";
|
const P_DRServerLTV = "P_DRServerLTV";
|
const P_DRFightPowerModule = "P_DRFightPowerModule";
|
const P_DRVIPLVInfo = "P_DRVIPLVInfo";
|
|
//运维权限
|
const P_OPSPackBranch = "P_OPSPackBranch";
|
const P_OPSVersionState = "P_OPSVersionState";
|
const P_OPSGameVersion = "P_OPSGameVersion";
|
const P_OPSServerList = "P_OPSServerList";
|
const P_OPSServerStateMgr = "P_OPSServerStateMgr";
|
const P_OPSRefreshServer = "P_OPSRefreshServer";
|
const P_SetOpenServerTime = "P_SetOpenServerTime";
|
const P_CrossServerMaintain = "P_CrossServerMaintain";
|
const P_CrossClientServerMaintain = "P_CrossClientServerMaintain";
|
const P_VersionLog = "P_VersionLog";
|
|
//===================== 账号管理权限 =======================
|
/**权限分组 */
|
const P_PermissionGroup = "P_PermissionGroup";
|
/**账号管理权限 - 增删改 */
|
const P_UserMgr = "P_UserMgr";
|
}
|
|
// 审核状态定义
|
class GMTCheckState
|
{
|
/**免审/审核通过 */
|
const OK = 1;
|
/**未审核 */
|
const UnCheck = 2;
|
/**审核不通过 */
|
const Refuse = 3;
|
public static function StateNameInfo()
|
{
|
return array(
|
GMTCheckState::OK => \Lang\gettext("通过"),
|
GMTCheckState::UnCheck => \Lang\gettext("未审核"),
|
GMTCheckState::Refuse => \Lang\gettext("拒绝")
|
);
|
}
|
}
|
|
class UserLV
|
{
|
/**超级管理员,只能有一个超级管理员账号,可管理所有组织及成员 */
|
const ADMIN_SUPER = 99;
|
/**组织单位管理员,每个组织单位可以拥有多个组织管理员,仅可管理该组织成员 */
|
const ADMIN_ORG = 90;
|
/**后台普通账号 */
|
const COMM = 0;
|
public static function LVNameInfo()
|
{
|
return array(
|
UserLV::COMM => \Lang\gettext("普通账号"),
|
UserLV::ADMIN_ORG => \Lang\gettext("管理员"),
|
UserLV::ADMIN_SUPER => \Lang\gettext("超级管理员")
|
);
|
}
|
}
|
|
class User
|
{
|
private $m_sErrInfo;
|
private $userData;
|
private $permissions;
|
private $serversArray;
|
|
function __construct($UserAccount)
|
{
|
\DBOper\FindOne("GMTUser", array("UserAccount" => $UserAccount), $this->userData);
|
if (!isset($this->userData) || $this->userData["UserAccount"] != $UserAccount) {
|
$this->m_sErrInfo = "can not found UserAccount:" . $UserAccount;
|
\Logging\LogError($this->m_sErrInfo);
|
header("location:/Account/login.php");
|
return;
|
}
|
}
|
|
public function GetAttr($attrName)
|
{
|
return $this->userData[$attrName];
|
}
|
|
public function IsAdminSuper()
|
{
|
return $this->userData["UserLV"] == UserLV::ADMIN_SUPER;
|
}
|
|
public function IsAdminOrg()
|
{
|
return $this->userData["UserLV"] == UserLV::ADMIN_ORG;
|
}
|
|
//运营ID数组,所有的
|
public function GetSPIDAll()
|
{
|
if ($this->IsAdminSuper()) {
|
return \CommFunc\GetAllChannel();
|
}
|
if ($this->IsAdminOrg()) {
|
return \CommFunc\GetOrganizationChannel($this->userData["Organization"]);
|
}
|
return $this->userData["SPList"];
|
}
|
|
//运营ID,当前选择的
|
public function GetSPID()
|
{
|
$spid = $_SESSION['spid'];
|
return $spid;
|
}
|
|
//根据指定的spid获取对应服务器列表配置
|
public function GetServersCfg($spid, $checkSpecial = true)
|
{
|
$ConfigFile = dirname(__FILE__) . "\Server\Server_" . $spid . ".ini";
|
if (file_exists($ConfigFile)) {
|
$serversCfg = parse_ini_file($ConfigFile, true);
|
if (!$checkSpecial) {
|
return $serversCfg;
|
}
|
$UserAccount = $this->userData["UserAccount"];
|
\CommFunc\GetConfig("ServerInfo", "SpecialServerIDStart", $SpecialServerIDStart);
|
\CommFunc\GetConfig("ServerInfo", "SpecialAccountList", $SpecialAccountList);
|
$SpecialAccountList = explode(",", $SpecialAccountList);
|
$SpecialServerIDStart = intval($SpecialServerIDStart);
|
// 特殊账号,只能看指定服及以上
|
if (in_array($UserAccount, $SpecialAccountList)) {
|
foreach ($serversCfg as $key => $info) {
|
$ServerID = intval($info["ServerID"]);
|
if ($ServerID < $SpecialServerIDStart) {
|
unset($serversCfg[$key]);
|
}
|
}
|
return $serversCfg;
|
}
|
return $serversCfg;
|
}
|
if ($spid) {
|
echo "file is not exist: " . "Server_" . $spid . ".ini" . "<br/>";
|
}
|
return array();
|
}
|
|
//重置服务器列表
|
public function ResetServers()
|
{
|
$this->serversArray = null;
|
}
|
|
//获取账号spid对应服务器列表配置
|
public function GetServers()
|
{
|
if ($this->serversArray != null) {
|
return $this->serversArray;
|
}
|
$spid = $this->GetSPID();
|
$serversCfg = $this->GetServersCfg($spid, false);
|
if (!count($serversCfg)) {
|
return $serversCfg;
|
}
|
$this->serversArray = $serversCfg;
|
|
$UserAccount = $this->userData["UserAccount"];
|
\CommFunc\GetConfig("ServerInfo", "SpecialServerIDStart", $SpecialServerIDStart);
|
\CommFunc\GetConfig("ServerInfo", "SpecialAccountList", $SpecialAccountList);
|
$SpecialAccountList = explode(",", $SpecialAccountList);
|
$SpecialServerIDStart = intval($SpecialServerIDStart);
|
$isSpecialUser = in_array($UserAccount, $SpecialAccountList);
|
$specialServerID = 270; // 270服特殊处理,被合到270以前的服了
|
$specialMainServerID = 0; // 特殊服所属主服
|
if ($isSpecialUser) {
|
foreach ($serversCfg as $info) {
|
$ServerID = intval($info["ServerID"]);
|
if ($ServerID == $specialServerID && $info["MainServer"]) {
|
$specialMainServerID = intval($info["MainServer"]);
|
break;
|
}
|
}
|
}
|
|
# 统计合服列表
|
$mixServerArray = array();
|
foreach ($this->serversArray as $serverName => $serverInfo) {
|
$mainServerID = $serverInfo["MainServer"];
|
if (!$mainServerID) {
|
$mainServerID = $serverInfo["ServerID"];
|
}
|
if (!$mainServerID) {
|
continue;
|
}
|
if (!array_key_exists($mainServerID, $mixServerArray)) {
|
$mixServerArray[$mainServerID] = array("MixServerIDList" => array(), "MixServerStr" => "");
|
}
|
array_push($mixServerArray[$mainServerID]["MixServerIDList"], intval($serverInfo["ServerID"]));
|
}
|
|
if ($isSpecialUser) {
|
if ($specialMainServerID) {
|
// 特殊服只显示这两个服
|
$mixServerArray[$specialMainServerID] = array("MixServerIDList" => array($specialMainServerID, $specialServerID), "MixServerStr" => "");
|
}
|
}
|
|
# 翻译合服字符串信息
|
foreach ($mixServerArray as $mainServerID => $mixServerInfo) {
|
sort($mixServerInfo["MixServerIDList"]);
|
$mixServerIDList = $mixServerInfo["MixServerIDList"];
|
|
$mixServerStr = "";
|
$serverCount = count($mixServerIDList);
|
if ($serverCount <= 1) {
|
continue;
|
}
|
for ($i = 0; $i < $serverCount; $i++) {
|
$serverID = $mixServerIDList[$i];
|
|
if ($i == 0) {
|
$mixServerStr = "" . $serverID;
|
continue;
|
}
|
|
$connectPre = ($serverID == ($mixServerIDList[$i - 1] + 1)); # 连接上一个ID
|
$connectNext = false; # 连接下一个ID
|
if ($i != $serverCount - 1) {
|
$connectNext = ($serverID == ($mixServerIDList[$i + 1] - 1));
|
}
|
|
if ($connectPre && $connectNext) {
|
continue;
|
} else if ($connectPre) {
|
$mixServerStr .= "~" . $serverID;
|
} else {
|
$mixServerStr .= ", " . $serverID;
|
}
|
}
|
|
$mixServerArray[$mainServerID]["MixServerStr"] = $mixServerStr;
|
}
|
|
# 更新到每个服务器
|
foreach ($this->serversArray as $serverName => $serverInfo) {
|
$serverID = $serverInfo["ServerID"];
|
$mainServerID = $serverInfo["MainServer"];
|
$mixServerInfo = null;
|
if (array_key_exists($serverID, $mixServerArray)) {
|
$mixServerInfo = $mixServerArray[$serverID];
|
} else if (array_key_exists($mainServerID, $mixServerArray)) {
|
$mixServerInfo = $mixServerArray[$mainServerID];
|
} else {
|
continue;
|
}
|
$this->serversArray[$serverName]["MixServerIDList"] = $mixServerInfo["MixServerIDList"];
|
$this->serversArray[$serverName]["MixServerStr"] = $mixServerInfo["MixServerStr"];
|
}
|
|
// 特殊账号,只能看指定服及以上
|
if ($isSpecialUser) {
|
foreach ($this->serversArray as $key => $info) {
|
$serverID = intval($info["ServerID"]);
|
if ($serverID < $SpecialServerIDStart && $serverID != $specialMainServerID) {
|
unset($this->serversArray[$key]);
|
}
|
}
|
}
|
return $this->serversArray;
|
}
|
|
//所有权限
|
public function GetUserPermissions()
|
{
|
if (isset($this->permissions)) {
|
return $this->permissions;
|
}
|
$this->permissions = array();
|
if ($this->IsAdminSuper()) {
|
$PermissionModules = \User\GetPermissionModules();
|
foreach ($PermissionModules as $moduleInfo) {
|
$this->permissions = array_merge($this->permissions, array_keys($moduleInfo["PList"]));
|
}
|
array_push($this->permissions, Permission::P_System); // 超级管理员附加系统权限
|
} else if ($this->IsAdminOrg()) {
|
\DBOper\FindOne("GMTPermissionGroup", array(
|
"Organization" => $this->userData["Organization"],
|
"GroupName" => Permission::GroupAdmin
|
), $adminPerInfo);
|
if (isset($adminPerInfo) && is_array($adminPerInfo['Permissions'])) {
|
$this->permissions = $adminPerInfo['Permissions'];
|
}
|
} else {
|
$groupDatas = null;
|
$PermissionGroups = $this->userData["PermissionGroups"];
|
if (isset($PermissionGroups) && count($PermissionGroups) > 0) {
|
\DBOper\Find("GMTPermissionGroup", array(
|
"Organization" => $this->userData["Organization"],
|
"GroupName" => array('$in' => $PermissionGroups)
|
), $groupDatas);
|
}
|
if (isset($groupDatas)) {
|
foreach ($groupDatas as $gData) {
|
if (is_array($gData['Permissions'])) {
|
$this->permissions = array_merge($this->permissions, $gData['Permissions']);
|
}
|
}
|
}
|
}
|
return $this->permissions;
|
}
|
|
//是否有该权限
|
public function HavePermission($permission, $notice = true)
|
{
|
if (!in_array($permission, $this->GetUserPermissions())) {
|
if ($notice) {
|
if (!$permission) {
|
\Logging\LogError("没有指定权限");
|
echo \Lang\gettext("没有指定权限");
|
} else {
|
\Logging\LogError("您没有该权限." . $permission);
|
echo \Lang\gettext("您没有该权限");
|
}
|
}
|
return false;
|
}
|
return true;
|
}
|
|
//是否需要验证权限key
|
public function NeedCheckKey()
|
{
|
\CommFunc\GetConfig("Config", "CheckKeyTime", $checkKeyTime);
|
if ($checkKeyTime == "") {
|
return true;
|
}
|
if (!$checkKeyTime) {
|
// 不需要验证
|
return false;
|
}
|
$checkKeyTime = (int)$checkKeyTime;
|
$curTime = time();
|
$lastcheckKeyTime = $_SESSION['checkKeyTime'];
|
if ($lastcheckKeyTime && $curTime - $lastcheckKeyTime < $checkKeyTime) {
|
return false;
|
}
|
return true;
|
}
|
|
//更新验证权限key时间
|
public function UpdCheckKeyTime()
|
{
|
$_SESSION['checkKeyTime'] = time();
|
return $_SESSION['checkKeyTime'];
|
}
|
|
public function GetErrInfo()
|
{
|
return $this->m_sErrInfo;
|
}
|
}
|