login: wrap some common errors to return 400 instead of 500 (#114)

This commit is contained in:
Brad Murray
2025-07-25 16:48:09 -04:00
committed by GitHub
parent 03fe8bf782
commit e7fe66a23e
4 changed files with 36 additions and 2 deletions
+19
View File
@@ -19,6 +19,7 @@ package connector
import (
"context"
"fmt"
"net/http"
"strings"
"maunium.net/go/mautrix/bridgev2"
@@ -38,6 +39,24 @@ const (
LoginStepIDComplete = "fi.mau.telegram.login.complete"
)
var (
ErrInvalidPassword = bridgev2.RespError{
ErrCode: "FI.MAU.TELEGRAM.INVALID_PASSWORD",
Err: "Invalid password",
StatusCode: http.StatusBadRequest,
}
ErrPhoneCodeInvalid = bridgev2.RespError{
ErrCode: "FI.MAU.TELEGRAM.PHONE_CODE_INVALID",
Err: "Invalid phone code",
StatusCode: http.StatusBadRequest,
}
ErrSignUpNotSupported = bridgev2.RespError{
ErrCode: "FI.MAU.TELEGRAM.SIGN_UP_NOT_SUPPORTED",
Err: "New account creation is not supported",
StatusCode: http.StatusBadRequest,
}
)
func (tg *TelegramConnector) GetLoginFlows() []bridgev2.LoginFlow {
return []bridgev2.LoginFlow{
{
+6 -1
View File
@@ -152,8 +152,10 @@ func (p *PhoneLogin) SubmitUserInput(ctx context.Context, input map[string]strin
},
},
}, nil
} else if errors.Is(err, auth.ErrPhoneCodeInvalid) {
return nil, ErrPhoneCodeInvalid
} else if errors.Is(err, &auth.SignUpRequired{}) {
return nil, fmt.Errorf("sign-up is not supported")
return nil, ErrSignUpNotSupported
} else if err != nil {
return nil, fmt.Errorf("failed to submit code: %w", err)
}
@@ -161,6 +163,9 @@ func (p *PhoneLogin) SubmitUserInput(ctx context.Context, input map[string]strin
} else if password, ok := input[LoginStepIDPassword]; ok {
authorization, err := p.authClient.Auth().Password(p.authClientCtx, password)
if err != nil {
if errors.Is(err, auth.ErrPasswordInvalid) {
return nil, ErrInvalidPassword
}
return nil, fmt.Errorf("failed to submit password: %w", err)
}
return p.handleAuthSuccess(ctx, authorization)
+4
View File
@@ -29,6 +29,7 @@ import (
"maunium.net/go/mautrix/bridgev2"
"go.mau.fi/mautrix-telegram/pkg/gotd/telegram"
"go.mau.fi/mautrix-telegram/pkg/gotd/telegram/auth"
"go.mau.fi/mautrix-telegram/pkg/gotd/telegram/auth/qrlogin"
"go.mau.fi/mautrix-telegram/pkg/gotd/telegram/updates"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
@@ -193,6 +194,9 @@ func (q *QRLogin) SubmitUserInput(ctx context.Context, input map[string]string)
}
authorization, err := q.authClient.Auth().Password(q.authClientCtx, password)
if err != nil {
if errors.Is(err, auth.ErrPasswordInvalid) {
return nil, ErrInvalidPassword
}
return nil, fmt.Errorf("failed to submit password: %w", err)
}