|
@@ -269,8 +269,7 @@ func authPlainHandler(server *Server, client *Client, session *Session, value []
|
269
|
269
|
password := string(splitValue[2])
|
270
|
270
|
err := server.accounts.AuthenticateByPassphrase(client, authcid, password)
|
271
|
271
|
if err != nil {
|
272
|
|
- msg := authErrorToMessage(server, err)
|
273
|
|
- rb.Add(nil, server.name, ERR_SASLFAIL, client.Nick(), fmt.Sprintf("%s: %s", client.t("SASL authentication failed"), client.t(msg)))
|
|
272
|
+ sendAuthErrorResponse(client, rb, err)
|
274
|
273
|
return false
|
275
|
274
|
} else if !fixupNickEqualsAccount(client, rb, server.Config(), "") {
|
276
|
275
|
return false
|
|
@@ -280,6 +279,14 @@ func authPlainHandler(server *Server, client *Client, session *Session, value []
|
280
|
279
|
return false
|
281
|
280
|
}
|
282
|
281
|
|
|
282
|
+func sendAuthErrorResponse(client *Client, rb *ResponseBuffer, err error) {
|
|
283
|
+ msg := authErrorToMessage(client.server, err)
|
|
284
|
+ rb.Add(nil, client.server.name, ERR_SASLFAIL, client.nick, fmt.Sprintf("%s: %s", client.t("SASL authentication failed"), client.t(msg)))
|
|
285
|
+ if err == errAccountUnverified {
|
|
286
|
+ rb.Add(nil, client.server.name, "FAIL", "AUTHENTICATE", "VERIFICATION_REQUIRED", "*", client.t(err.Error()))
|
|
287
|
+ }
|
|
288
|
+}
|
|
289
|
+
|
283
|
290
|
func authErrorToMessage(server *Server, err error) (msg string) {
|
284
|
291
|
if throttled, ok := err.(*ThrottleError); ok {
|
285
|
292
|
return throttled.Error()
|
|
@@ -329,8 +336,7 @@ func authExternalHandler(server *Server, client *Client, session *Session, value
|
329
|
336
|
}
|
330
|
337
|
|
331
|
338
|
if err != nil {
|
332
|
|
- msg := authErrorToMessage(server, err)
|
333
|
|
- rb.Add(nil, server.name, ERR_SASLFAIL, client.nick, fmt.Sprintf("%s: %s", client.t("SASL authentication failed"), client.t(msg)))
|
|
339
|
+ sendAuthErrorResponse(client, rb, err)
|
334
|
340
|
return false
|
335
|
341
|
} else if !fixupNickEqualsAccount(client, rb, server.Config(), "") {
|
336
|
342
|
return false
|