1
0
mirror of https://github.com/raseels-repos/golang-saas-starter-kit.git synced 2025-08-08 22:36:41 +02:00

fix invalid login response

This commit is contained in:
Lee Brown
2019-08-05 03:32:46 -08:00
parent 99843e7868
commit 56363828aa

View File

@@ -53,17 +53,17 @@ func (h *User) Login(ctx context.Context, w http.ResponseWriter, r *http.Request
// //
req := new(UserLoginRequest) req := new(UserLoginRequest)
data := make(map[string]interface{}) data := make(map[string]interface{})
f := func() error { f := func() (bool, error) {
if r.Method == http.MethodPost { if r.Method == http.MethodPost {
err := r.ParseForm() err := r.ParseForm()
if err != nil { if err != nil {
return err return false,err
} }
decoder := schema.NewDecoder() decoder := schema.NewDecoder()
if err := decoder.Decode(req, r.PostForm); err != nil { if err := decoder.Decode(req, r.PostForm); err != nil {
return err return false,err
} }
sessionTTL := time.Hour sessionTTL := time.Hour
@@ -76,13 +76,16 @@ func (h *User) Login(ctx context.Context, w http.ResponseWriter, r *http.Request
if err != nil { if err != nil {
switch errors.Cause(err) { switch errors.Cause(err) {
case user.ErrForbidden: case user.ErrForbidden:
return web.RespondError(ctx, w, weberror.NewError(ctx, err, http.StatusForbidden)) return false,web.RespondError(ctx, w, weberror.NewError(ctx, err, http.StatusForbidden))
case user_auth.ErrAuthenticationFailure:
data["error"] = weberror.NewErrorMessage(ctx, err, http.StatusUnauthorized, "Authentication failure. Try again.")
return false, nil
default: default:
if verr, ok := weberror.NewValidationError(ctx, err); ok { if verr, ok := weberror.NewValidationError(ctx, err); ok {
data["validationErrors"] = verr.(*weberror.Error) data["validationErrors"] = verr.(*weberror.Error)
return nil return false,nil
} else { } else {
return err return false,err
} }
} }
} }
@@ -90,26 +93,30 @@ func (h *User) Login(ctx context.Context, w http.ResponseWriter, r *http.Request
// Add the token to the users session. // Add the token to the users session.
err = handleSessionToken(ctx, h.MasterDB, w, r, token) err = handleSessionToken(ctx, h.MasterDB, w, r, token)
if err != nil { if err != nil {
return err return false,err
} }
redirectUri := "/" redirectUri := "/"
if qv := r.URL.Query().Get("redirect"); qv != "" { if qv := r.URL.Query().Get("redirect"); qv != "" {
redirectUri, err = url.QueryUnescape(qv) redirectUri, err = url.QueryUnescape(qv)
if err != nil { if err != nil {
return err return false,err
} }
} }
// Redirect the user to the dashboard. // Redirect the user to the dashboard.
http.Redirect(w, r, redirectUri, http.StatusFound) http.Redirect(w, r, redirectUri, http.StatusFound)
return true, nil
} }
return nil return false, nil
} }
if err := f(); err != nil { end, err := f()
if err != nil {
return web.RenderError(ctx, w, r, err, h.Renderer, TmplLayoutBase, TmplContentErrorGeneric, web.MIMETextHTMLCharsetUTF8) return web.RenderError(ctx, w, r, err, h.Renderer, TmplLayoutBase, TmplContentErrorGeneric, web.MIMETextHTMLCharsetUTF8)
} else if end {
return nil
} }
data["form"] = req data["form"] = req