forked from External/ergo
fix case where CS TRANSFER as an operator required acceptance
Reported by @mogad0n. If a user had both operator privileges and channel owner privileges, the CS TRANSFER would proceed as though unprivileged, requiring acceptance by the receiving user. Fix this to not require acceptance.
This commit is contained in:
parent
4ba35afa85
commit
85fabaad6d
1 changed files with 6 additions and 8 deletions
|
|
@ -541,13 +541,11 @@ func csTransferHandler(service *ircService, server *Server, client *Client, comm
|
||||||
chname = regInfo.Name
|
chname = regInfo.Name
|
||||||
account := client.Account()
|
account := client.Account()
|
||||||
isFounder := account != "" && account == regInfo.Founder
|
isFounder := account != "" && account == regInfo.Founder
|
||||||
var oper *Oper
|
oper := client.Oper()
|
||||||
if !isFounder {
|
hasPrivs := oper.HasRoleCapab("chanreg")
|
||||||
oper = client.Oper()
|
if !isFounder && !hasPrivs {
|
||||||
if !oper.HasRoleCapab("chanreg") {
|
service.Notice(rb, client.t("Insufficient privileges"))
|
||||||
service.Notice(rb, client.t("Insufficient privileges"))
|
return
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
target := params[1]
|
target := params[1]
|
||||||
targetAccount, err := server.accounts.LoadAccount(params[1])
|
targetAccount, err := server.accounts.LoadAccount(params[1])
|
||||||
|
|
@ -569,7 +567,7 @@ func csTransferHandler(service *ircService, server *Server, client *Client, comm
|
||||||
server.snomasks.Send(sno.LocalOpers, message)
|
server.snomasks.Send(sno.LocalOpers, message)
|
||||||
server.logger.Info("opers", message)
|
server.logger.Info("opers", message)
|
||||||
}
|
}
|
||||||
status, err := channel.Transfer(client, target, oper != nil)
|
status, err := channel.Transfer(client, target, hasPrivs)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
switch status {
|
switch status {
|
||||||
case channelTransferComplete:
|
case channelTransferComplete:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue