check permissions before doing channel modes

This commit is contained in:
Jeremy Latt 2014-02-09 19:59:59 -08:00
parent 56cb8512dc
commit 9b89f1a0fb
2 changed files with 20 additions and 6 deletions

View File

@ -102,6 +102,11 @@ func (channel *Channel) GetUsers(replier Replier) {
replier.Reply(NewNamesReply(channel)) replier.Reply(NewNamesReply(channel))
} }
func (channel *Channel) ClientIsOperator(client *Client) bool {
// TODO client-channel relations
return false
}
func (channel *Channel) Nicks() []string { func (channel *Channel) Nicks() []string {
nicks := make([]string, len(channel.members)) nicks := make([]string, len(channel.members))
i := 0 i := 0
@ -219,12 +224,15 @@ func (msg *ChannelModeCommand) HandleChannel(channel *Channel) {
} }
client.Reply(RplEndOfBanList(channel)) client.Reply(RplEndOfBanList(channel))
case NoOutside: case NoOutside:
// TODO perms if channel.ClientIsOperator(client) {
switch modeOp.op { switch modeOp.op {
case Add: case Add:
channel.noOutside = true channel.noOutside = true
case Remove: case Remove:
channel.noOutside = false channel.noOutside = false
}
} else {
client.Reply(ErrChanOPrivIsNeeded(channel))
} }
} }
} }

View File

@ -334,3 +334,9 @@ func ErrCannotSendToChan(channel *Channel) Reply {
return NewNumericReply(channel.server, ERR_CANNOTSENDTOCHAN, return NewNumericReply(channel.server, ERR_CANNOTSENDTOCHAN,
"%s :Cannot send to channel", channel.name) "%s :Cannot send to channel", channel.name)
} }
// <channel> :You're not channel operator
func ErrChanOPrivIsNeeded(channel *Channel) Reply {
return NewNumericReply(channel.server, ERR_CHANOPRIVSNEEDED,
"%s :You're not channel operator", channel.name)
}