diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 4015f4a..6d62ad8 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -197,16 +197,31 @@ void Guild::_CMGuildKick(f8::MsgHdr& hdr, const cs::CMGuildKick& msg) ss::SS_IM_ForwardGuildCMMsg *forward_msg = (ss::SS_IM_ForwardGuildCMMsg*)hdr.user_data; cs::SMGuildKick respmsg; - GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, - forward_msg->context(), - respmsg); - #if 0 - GuildMember* member = GetMember(context.user_info().base_data().account_id()); - if (!member) { + GuildMember* sender = GetMember(forward_msg->context().user_info().base_data().account_id()); + if (!sender) { + respmsg.set_errcode(2); + respmsg.set_errmsg("服务器内部错误"); + GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, + forward_msg->context(), + respmsg); + return; + } + if (!(sender->guild_job == kGuildOwner || sender->guild_job == kGuildAdmin)) { + respmsg.set_errcode(3); + respmsg.set_errmsg("权限不够"); + GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, + forward_msg->context(), + respmsg); + return; + } + + GuildMember* member = GetMember(msg.account_id()); + if (!member) { + GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, + forward_msg->context(), + respmsg); return; } - GuildMgr::Instance()->ForwardGuildSMMsg(socket_handle, context, respmsg); - #endif } void Guild::_CMGuildQuit(f8::MsgHdr& hdr, const cs::CMGuildQuit& msg)