diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index a1a4c41..5d39c57 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -576,17 +576,35 @@ 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; + + 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 || + GetMemberJob(sender->account_id) == kGuildAdmin + )) { + 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; + } + if ((!msg.has_guild_name() || msg.guild_name() == guild_name_) && (!msg.has_guild_declaration() || msg.guild_declaration() == guild_declaration_)) { - if (msg.has_guild_name()) { - guild_name_ = msg.guild_name(); - } if (msg.has_guild_badge()) { guild_badge_ = msg.guild_badge(); } - if (msg.has_guild_declaration()) { - guild_declaration_ = msg.guild_declaration(); - } if (msg.has_join_unlimited()) { join_unlimited_ = msg.join_unlimited(); } @@ -602,26 +620,6 @@ void Guild::_CMGuildChange(f8::MsgHdr& hdr, const cs::CMGuildChange& msg) 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; }