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
|
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 {
|
switch {
|
||||||
case service.AuthErrInternalSignupDisabledByConfig().Is(err):
|
case service.AuthErrInternalSignupDisabledByConfig().Is(err):
|
||||||
h.signupDisabledAlert(req)
|
h.signupDisabledAlert(req)
|
||||||
@ -66,17 +75,14 @@ func (h *AuthHandlers) signupProc(req *request.AuthReq) error {
|
|||||||
service.AuthErrInvalidHandle().Is(err),
|
service.AuthErrInvalidHandle().Is(err),
|
||||||
service.AuthErrPasswordNotSecure().Is(err),
|
service.AuthErrPasswordNotSecure().Is(err),
|
||||||
service.AuthErrInvalidCredentials().Is(err):
|
service.AuthErrInvalidCredentials().Is(err):
|
||||||
req.SetKV(map[string]string{
|
fallback(req)
|
||||||
"error": err.Error(),
|
|
||||||
"email": payload.Email,
|
|
||||||
"handle": payload.Handle,
|
|
||||||
"name": payload.Name,
|
|
||||||
})
|
|
||||||
|
|
||||||
h.Log.Warn("handled error", zap.Error(err))
|
h.Log.Warn("handled error", zap.Error(err))
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
fallback(req)
|
||||||
|
|
||||||
h.Log.Error("unhandled error", zap.Error(err))
|
h.Log.Error("unhandled error", zap.Error(err))
|
||||||
return 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 {
|
for _, tc := range tcc {
|
||||||
@ -178,7 +216,7 @@ func Test_signupProc(t *testing.T) {
|
|||||||
|
|
||||||
// reset from previous
|
// reset from previous
|
||||||
req.Form = url.Values{}
|
req.Form = url.Values{}
|
||||||
req.PostForm = url.Values{}
|
req.PostForm = tc.postForm
|
||||||
|
|
||||||
authSettings := &settings.Settings{}
|
authSettings := &settings.Settings{}
|
||||||
|
|
||||||
@ -189,7 +227,11 @@ func Test_signupProc(t *testing.T) {
|
|||||||
|
|
||||||
err := authHandlers.signupProc(authReq)
|
err := authHandlers.signupProc(authReq)
|
||||||
|
|
||||||
|
if len(tc.err) > 0 {
|
||||||
|
rq.Equal(tc.err, err.Error())
|
||||||
|
} else {
|
||||||
rq.NoError(err)
|
rq.NoError(err)
|
||||||
|
}
|
||||||
rq.Equal(tc.template, authReq.Template)
|
rq.Equal(tc.template, authReq.Template)
|
||||||
rq.Equal(tc.payload, authReq.GetKV())
|
rq.Equal(tc.payload, authReq.GetKV())
|
||||||
rq.Equal(tc.alerts, authReq.NewAlerts)
|
rq.Equal(tc.alerts, authReq.NewAlerts)
|
||||||
|
|||||||
@ -209,7 +209,6 @@ func (h *AuthHandlers) handle(fn handlerFn) http.HandlerFunc {
|
|||||||
req.PrevAlerts = req.PopAlerts()
|
req.PrevAlerts = req.PopAlerts()
|
||||||
if err = fn(req); err != nil {
|
if err = fn(req); err != nil {
|
||||||
h.Log.Error("error in handler", zap.Error(err))
|
h.Log.Error("error in handler", zap.Error(err))
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.RedirectTo != "" && len(req.PrevAlerts) > 0 {
|
if req.RedirectTo != "" && len(req.PrevAlerts) > 0 {
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
|
"net/url"
|
||||||
|
|
||||||
"github.com/cortezaproject/corteza-server/auth/request"
|
"github.com/cortezaproject/corteza-server/auth/request"
|
||||||
"github.com/cortezaproject/corteza-server/auth/settings"
|
"github.com/cortezaproject/corteza-server/auth/settings"
|
||||||
@ -67,6 +68,7 @@ type (
|
|||||||
template string
|
template string
|
||||||
alerts []request.Alert
|
alerts []request.Alert
|
||||||
userService userService
|
userService userService
|
||||||
|
postForm url.Values
|
||||||
fn func(*settings.Settings)
|
fn func(*settings.Settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user