Fix nil render data on invalid password

This would cause this error:

    template: head.html:7:15: executing "head.html" at <index .Global.Path 0>: error calling index: index of untyped nil
This commit is contained in:
Simon Ser 2020-07-07 12:47:18 +02:00
parent 50e131244a
commit 92b3016196
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48

View file

@ -171,6 +171,14 @@ func handleLogin(ctx *alps.Context) error {
password := ctx.FormValue("password") password := ctx.FormValue("password")
remember := ctx.FormValue("remember-me") remember := ctx.FormValue("remember-me")
renderData := struct {
alps.BaseRenderData
CanRememberMe bool
}{
BaseRenderData: *alps.NewBaseRenderData(ctx),
CanRememberMe: ctx.Server.Options.LoginKey != nil,
}
if username == "" && password == "" { if username == "" && password == "" {
username, password = ctx.GetLoginToken() username, password = ctx.GetLoginToken()
} }
@ -179,7 +187,7 @@ func handleLogin(ctx *alps.Context) error {
s, err := ctx.Server.Sessions.Put(username, password) s, err := ctx.Server.Sessions.Put(username, password)
if err != nil { if err != nil {
if _, ok := err.(alps.AuthError); ok { if _, ok := err.(alps.AuthError); ok {
return ctx.Render(http.StatusOK, "login.html", nil) return ctx.Render(http.StatusOK, "login.html", &renderData)
} }
return fmt.Errorf("failed to put connection in pool: %v", err) return fmt.Errorf("failed to put connection in pool: %v", err)
} }
@ -195,14 +203,7 @@ func handleLogin(ctx *alps.Context) error {
return ctx.Redirect(http.StatusFound, "/mailbox/INBOX") return ctx.Redirect(http.StatusFound, "/mailbox/INBOX")
} }
return ctx.Render(http.StatusOK, "login.html", return ctx.Render(http.StatusOK, "login.html", &renderData)
&struct {
alps.BaseRenderData
CanRememberMe bool
}{
BaseRenderData: *alps.NewBaseRenderData(ctx),
CanRememberMe: ctx.Server.Options.LoginKey != nil,
})
} }
func handleLogout(ctx *alps.Context) error { func handleLogout(ctx *alps.Context) error {