From d67ded441e0e34b88f89e119f2f558019ea949f9 Mon Sep 17 00:00:00 2001 From: rainzm Date: Wed, 27 Jan 2021 19:31:52 +0800 Subject: [PATCH] feat(apigateway): differentiate error messages when logging in --- pkg/apigateway/handler/auth.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/apigateway/handler/auth.go b/pkg/apigateway/handler/auth.go index f59330b60c..4ca7588a62 100644 --- a/pkg/apigateway/handler/auth.go +++ b/pkg/apigateway/handler/auth.go @@ -311,9 +311,20 @@ func (h *AuthHandlers) doCredentialLogin(ctx context.Context, req *http.Request, if err != nil { switch httperr := err.(type) { case *httputils.JSONClientError: - if httperr.Code == 409 || httperr.Code == 429 || httperr.Code == 423 { + if httperr.Code >= 500 { return nil, err } + if httperr.Code == 409 || httperr.Code == 429 { + return nil, err + } + switch httperr.Class { + case "UserNotFound", "WrongPassword": + return nil, httperrors.NewJsonClientError(httperrors.ErrIncorrectUsernameOrPassword, "incorrect username or password") + case "UserLocked": + return nil, httperrors.NewJsonClientError(httperrors.ErrUserLocked, "The user has been locked, please contact the administrator") + case "UserDisabled": + return nil, httperrors.NewJsonClientError(httperrors.ErrUserDisabled, "The user has been disabled, please contact the administrator") + } } return nil, httperrors.NewInvalidCredentialError("invalid credential") }