Add fallback values on error for signup
Also, fixes redirection on error on auth handler
This commit is contained in:
parent
5d476dcfa0
commit
57721291b2
@ -58,6 +58,15 @@ func (h *AuthHandlers) signupProc(req *request.AuthReq) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
fallback := func(req *request.AuthReq) {
|
||||
req.SetKV(map[string]string{
|
||||
"error": err.Error(),
|
||||
"email": payload.Email,
|
||||
"handle": payload.Handle,
|
||||
"name": payload.Name,
|
||||
})
|
||||
}
|
||||
|
||||
switch {
|
||||
case service.AuthErrInternalSignupDisabledByConfig().Is(err):
|
||||
h.signupDisabledAlert(req)
|
||||
@ -66,17 +75,14 @@ func (h *AuthHandlers) signupProc(req *request.AuthReq) error {
|
||||
service.AuthErrInvalidHandle().Is(err),
|
||||
service.AuthErrPasswordNotSecure().Is(err),
|
||||
service.AuthErrInvalidCredentials().Is(err):
|
||||
req.SetKV(map[string]string{
|
||||
"error": err.Error(),
|
||||
"email": payload.Email,
|
||||
"handle": payload.Handle,
|
||||
"name": payload.Name,
|
||||
})
|
||||
fallback(req)
|
||||
|
||||
h.Log.Warn("handled error", zap.Error(err))
|
||||
return nil
|
||||
|
||||
default:
|
||||
fallback(req)
|
||||
|
||||
h.Log.Error("unhandled error", zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
@ -170,6 +170,44 @@ func Test_signupProc(t *testing.T) {
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "handle not unique",
|
||||
err: "handle not unique",
|
||||
alerts: []request.Alert(nil),
|
||||
link: GetLinks().Signup,
|
||||
payload: map[string]string{"email": "test@mail.com", "error": "handle not unique", "handle": "test-user", "name": "Test User"},
|
||||
postForm: url.Values{
|
||||
"email": {"test@mail.com"},
|
||||
"handle": {"test-user"},
|
||||
"name": {"Test User"},
|
||||
},
|
||||
fn: func(_ *settings.Settings) {
|
||||
authService = &authServiceMocked{
|
||||
internalSignUp: func(c context.Context, user *types.User, s string) (u *types.User, err error) {
|
||||
return nil, service.UserErrHandleNotUnique()
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "email not unique",
|
||||
err: "email not unique",
|
||||
alerts: []request.Alert(nil),
|
||||
link: GetLinks().Signup,
|
||||
payload: map[string]string{"email": "test@mail.com", "error": "email not unique", "handle": "test-user", "name": "Test User"},
|
||||
postForm: url.Values{
|
||||
"email": {"test@mail.com"},
|
||||
"handle": {"test-user"},
|
||||
"name": {"Test User"},
|
||||
},
|
||||
fn: func(_ *settings.Settings) {
|
||||
authService = &authServiceMocked{
|
||||
internalSignUp: func(c context.Context, user *types.User, s string) (u *types.User, err error) {
|
||||
return nil, service.UserErrEmailNotUnique()
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tcc {
|
||||
@ -178,7 +216,7 @@ func Test_signupProc(t *testing.T) {
|
||||
|
||||
// reset from previous
|
||||
req.Form = url.Values{}
|
||||
req.PostForm = url.Values{}
|
||||
req.PostForm = tc.postForm
|
||||
|
||||
authSettings := &settings.Settings{}
|
||||
|
||||
@ -189,7 +227,11 @@ func Test_signupProc(t *testing.T) {
|
||||
|
||||
err := authHandlers.signupProc(authReq)
|
||||
|
||||
rq.NoError(err)
|
||||
if len(tc.err) > 0 {
|
||||
rq.Equal(tc.err, err.Error())
|
||||
} else {
|
||||
rq.NoError(err)
|
||||
}
|
||||
rq.Equal(tc.template, authReq.Template)
|
||||
rq.Equal(tc.payload, authReq.GetKV())
|
||||
rq.Equal(tc.alerts, authReq.NewAlerts)
|
||||
|
||||
@ -209,7 +209,6 @@ func (h *AuthHandlers) handle(fn handlerFn) http.HandlerFunc {
|
||||
req.PrevAlerts = req.PopAlerts()
|
||||
if err = fn(req); err != nil {
|
||||
h.Log.Error("error in handler", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
if req.RedirectTo != "" && len(req.PrevAlerts) > 0 {
|
||||
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
|
||||
"github.com/cortezaproject/corteza-server/auth/request"
|
||||
"github.com/cortezaproject/corteza-server/auth/settings"
|
||||
@ -67,6 +68,7 @@ type (
|
||||
template string
|
||||
alerts []request.Alert
|
||||
userService userService
|
||||
postForm url.Values
|
||||
fn func(*settings.Settings)
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user