|
@@ -90,7 +90,10 @@ func (server *Server) nickservPrivmsgHandler(client *Client, message string, rb
|
90
|
90
|
server.nickservGroupHandler(client, rb)
|
91
|
91
|
} else if command == "drop" {
|
92
|
92
|
nick, _ := extractParam(params)
|
93
|
|
- server.nickservDropHandler(client, nick, rb)
|
|
93
|
+ server.nickservDropHandler(client, nick, false, rb)
|
|
94
|
+ } else if command == "sadrop" {
|
|
95
|
+ nick, _ := extractParam(params)
|
|
96
|
+ server.nickservDropHandler(client, nick, true, rb)
|
94
|
97
|
} else {
|
95
|
98
|
rb.Notice(client.t("Command not recognised. To see the available commands, run /NS HELP"))
|
96
|
99
|
}
|
|
@@ -294,13 +297,13 @@ func (server *Server) nickservGroupHandler(client *Client, rb *ResponseBuffer) {
|
294
|
297
|
}
|
295
|
298
|
|
296
|
299
|
nick := client.NickCasefolded()
|
297
|
|
- err := server.accounts.SetNickReserved(client, nick, true)
|
|
300
|
+ err := server.accounts.SetNickReserved(client, nick, false, true)
|
298
|
301
|
if err == nil {
|
299
|
302
|
rb.Notice(fmt.Sprintf(client.t("Successfully grouped nick %s with your account"), nick))
|
300
|
303
|
} else if err == errAccountTooManyNicks {
|
301
|
304
|
rb.Notice(client.t("You have too many nicks reserved already (you can remove some with /NS DROP)"))
|
302
|
305
|
} else if err == errNicknameReserved {
|
303
|
|
- rb.Notice(client.t("That nickname is already reserved"))
|
|
306
|
+ rb.Notice(client.t("That nickname is already reserved by someone else"))
|
304
|
307
|
} else {
|
305
|
308
|
rb.Notice(client.t("Error reserving nickname"))
|
306
|
309
|
}
|
|
@@ -334,20 +337,23 @@ func (server *Server) nickservInfoHandler(client *Client, nick string, rb *Respo
|
334
|
337
|
}
|
335
|
338
|
}
|
336
|
339
|
|
337
|
|
-func (server *Server) nickservDropHandler(client *Client, nick string, rb *ResponseBuffer) {
|
338
|
|
- account := client.Account()
|
339
|
|
- if account == "" {
|
340
|
|
- rb.Notice(client.t("You're not logged into an account"))
|
341
|
|
- return
|
|
340
|
+func (server *Server) nickservDropHandler(client *Client, nick string, sadrop bool, rb *ResponseBuffer) {
|
|
341
|
+ if sadrop {
|
|
342
|
+ if !client.HasRoleCapabs("unregister") {
|
|
343
|
+ rb.Notice(client.t("Insufficient oper privs"))
|
|
344
|
+ return
|
|
345
|
+ }
|
342
|
346
|
}
|
343
|
347
|
|
344
|
|
- err := server.accounts.SetNickReserved(client, nick, false)
|
|
348
|
+ err := server.accounts.SetNickReserved(client, nick, sadrop, false)
|
345
|
349
|
if err == nil {
|
346
|
350
|
rb.Notice(fmt.Sprintf(client.t("Successfully ungrouped nick %s with your account"), nick))
|
|
351
|
+ } else if err == errAccountNotLoggedIn {
|
|
352
|
+ rb.Notice(fmt.Sprintf(client.t("You're not logged into an account")))
|
347
|
353
|
} else if err == errAccountCantDropPrimaryNick {
|
348
|
354
|
rb.Notice(fmt.Sprintf(client.t("You can't ungroup your primary nickname (try unregistering your account instead)")))
|
349
|
|
- } else if err == errAccountNickReservationFailed {
|
350
|
|
- rb.Notice(fmt.Sprintf(client.t("You don't own that nick")))
|
|
355
|
+ } else if err == errNicknameReserved {
|
|
356
|
+ rb.Notice(fmt.Sprintf(client.t("That nickname is already reserved by someone else")))
|
351
|
357
|
} else {
|
352
|
358
|
rb.Notice(client.t("Error ungrouping nick"))
|
353
|
359
|
}
|