diff options
author | Gabriel A. Giovanini <mail@gabrielgio.me> | 2024-12-11 17:20:39 +0100 |
---|---|---|
committer | Gabriel A. Giovanini <mail@gabrielgio.me> | 2024-12-11 17:20:39 +0100 |
commit | f5c307668c7fa3c367defc6e924d7c1e00303c16 (patch) | |
tree | c1de4e00504e6c570204852a6752e11938cb2c0c /pkg/handler/auth | |
parent | 1e45ae2ea3497958b2ea6a20137955cfc3bbc964 (diff) | |
download | cerrado-f5c307668c7fa3c367defc6e924d7c1e00303c16.tar.gz cerrado-f5c307668c7fa3c367defc6e924d7c1e00303c16.tar.bz2 cerrado-f5c307668c7fa3c367defc6e924d7c1e00303c16.zip |
feat: Add login redirect
Now login will return to page before the user clicked on login
Diffstat (limited to 'pkg/handler/auth')
-rw-r--r-- | pkg/handler/auth/login.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/pkg/handler/auth/login.go b/pkg/handler/auth/login.go index 7014548..89fd87b 100644 --- a/pkg/handler/auth/login.go +++ b/pkg/handler/auth/login.go @@ -45,10 +45,19 @@ func (g *LoginHandler) Logout(w http.ResponseWriter, r *http.Request) error { } func (g *LoginHandler) Login(w http.ResponseWriter, r *http.Request) error { + referer := r.URL.Query().Get("referer") + + // if query value is empty tries to get from header + if referer == "" { + referer = r.Header.Get("Referer") + } + if r.Method == "GET" { ext.SetHTML(w) - login := &templates.LoginPage{} + login := &templates.LoginPage{ + Referer: referer, + } templates.WritePageTemplate(w, login, r.Context()) } else if r.Method == "POST" { @@ -57,6 +66,7 @@ func (g *LoginHandler) Login(w http.ResponseWriter, r *http.Request) error { if !g.auth.CheckAuth(username, password) { login := &templates.LoginPage{ + Referer: referer, ErrorMessage: "Invalid login", } templates.WritePageTemplate(w, login, r.Context()) @@ -78,7 +88,7 @@ func (g *LoginHandler) Login(w http.ResponseWriter, r *http.Request) error { } http.SetCookie(w, cookie) - ext.Redirect(w, "/") + ext.Redirect(w, referer) } } |