From 6be4ee0941f3f15b56aa1d0692b3379faa4f41bd Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 13 Oct 2020 16:32:09 +0800 Subject: [PATCH] 1 --- server/imserver/guild.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 5a2c112..b7012fb 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -570,6 +570,7 @@ void Guild::_CMGuildDismiss(f8::MsgHdr& hdr, const cs::CMGuildDismiss& msg) void Guild::_CMGuildChange(f8::MsgHdr& hdr, const cs::CMGuildChange& msg) { + cs::SMGuildChange respmsg; ss::SS_IM_ForwardGuildCMMsg *forward_msg = (ss::SS_IM_ForwardGuildCMMsg*)hdr.user_data; if ((!msg.has_guild_name() || msg.guild_name() == guild_name_) && (!msg.has_guild_declaration() || msg.guild_declaration() == guild_declaration_)) { @@ -592,13 +593,33 @@ void Guild::_CMGuildChange(f8::MsgHdr& hdr, const cs::CMGuildChange& msg) join_cond2_ = msg.join_cond2(); } - cs::SMGuildChange respmsg; FillGuildBasic(respmsg.mutable_info()); GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, forward_msg->context(), respmsg); MarkDirty(); } + GuildMember* sender = GetMember(forward_msg->context().user_info().base_data().account_id()); + if (!sender) { + SendErrorMsg(hdr.socket_handle, forward_msg->context(), "服务器内部错误"); + respmsg.set_errcode(2); + respmsg.set_errmsg("服务器内部错误"); + GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, + forward_msg->context(), + respmsg); + return; + } + if (!( + GetMemberJob(sender->account_id) == kGuildOwner) + ) { + SendErrorMsg(hdr.socket_handle, forward_msg->context(), "权限不够"); + respmsg.set_errcode(3); + respmsg.set_errmsg("权限不够"); + GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, + forward_msg->context(), + respmsg); + return; + } ss::SS_IM_ForwardGuildCMMsg *forward_msg_copy = new ss::SS_IM_ForwardGuildCMMsg; *forward_msg_copy = *forward_msg;