You've already forked golang-saas-starter-kit
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:
@@ -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
|
||||||
|
Reference in New Issue
Block a user