/op with pubkey.

This commit is contained in:
Andrey Petrov 2015-01-18 20:03:08 -08:00
parent 080b6e8f1b
commit 84df305ddf
2 changed files with 30 additions and 27 deletions

View File

@ -216,31 +216,4 @@ func InitCommands(c *Commands) {
return nil
},
})
c.Add(Command{
Op: true,
Prefix: "/op",
PrefixHelp: "USER",
Help: "Mark user as admin.",
Handler: func(room *Room, msg CommandMsg) error {
if !room.IsOp(msg.From()) {
return errors.New("must be op")
}
args := msg.Args()
if len(args) != 1 {
return errors.New("must specify user")
}
// TODO: Add support for fingerprint-based op'ing. This will
// probably need to live in host land.
member, ok := room.MemberById(args[0])
if !ok {
return errors.New("user not found")
}
member.Op = true
return nil
},
})
}

30
host.go
View File

@ -400,4 +400,34 @@ func (h *Host) InitCommands(c *chat.Commands) {
return nil
},
})
c.Add(chat.Command{
Op: true,
Prefix: "/op",
PrefixHelp: "USER",
Help: "Set USER as admin.",
Handler: func(room *chat.Room, msg chat.CommandMsg) error {
if !room.IsOp(msg.From()) {
return errors.New("must be op")
}
args := msg.Args()
if len(args) != 1 {
return errors.New("must specify user")
}
member, ok := room.MemberById(args[0])
if !ok {
return errors.New("user not found")
}
member.Op = true
id := member.Identifier.(*Identity)
h.auth.Op(id.PublicKey())
body := fmt.Sprintf("Made op by %s.", msg.From().Name())
room.Send(chat.NewSystemMsg(body, member.User))
return nil
},
})
}