added login referer

This commit is contained in:
ston1th 2019-01-21 19:46:31 +01:00
commit 4e5d554105
7 changed files with 55 additions and 15 deletions

View file

@ -93,23 +93,28 @@ func loginHandler(ctx *Context) {
Title: "Login",
BodyTitle: "Login",
}
var user string
var data loginData
switch ctx.Method() {
case "GET":
ctx.Data.Data = user
data.Referer = ctx.RefererURI()
ctx.Data.Data = data
ctx.Exec()
case "POST":
if !ctx.CheckXsrf() {
return
}
user = ctx.Form("user")
ctx.Data.Data = user
data.User = ctx.Form("user")
data.Referer = ctx.Form("referer")
ctx.Data.Data = data
if data.Referer == "" {
data.Referer = core.IndexURI
}
password := ctx.Form("password")
if user == "" || password == "" {
if data.User == "" || password == "" {
ctx.Error("empty user or password")
return
}
u, err := ctx.Srv.DB.Login(user, password)
u, err := ctx.Srv.DB.Login(data.User, password)
if err != nil {
ctx.Error(err)
return
@ -117,12 +122,13 @@ func loginHandler(ctx *Context) {
if u.Secret == "" {
log.Println("login:", u.Username)
ctx.Login(u, ctx.Form("remember"))
ctx.Redirect(core.IndexURI, http.StatusFound)
ctx.Redirect(data.Referer, http.StatusFound)
return
}
ctx.SetCookie(jwt.Claims{
totpClaim: u.Username,
rememberClaim: ctx.Form("remember"),
refererClaim: data.Referer,
}, time.Minute)
ctx.Redirect(core.TotpURI, http.StatusFound)
}
@ -155,9 +161,10 @@ func loginTotpHandler(ctx *Context) {
ctx.Error(err)
return
}
ref := ctx.Referer()
log.Println("login:", u.Username)
ctx.Login(u, ctx.Remember())
ctx.Redirect(core.IndexURI, http.StatusFound)
ctx.Redirect(ref, http.StatusFound)
}
}
@ -682,7 +689,11 @@ func userDelHandler(ctx *Context) {
}
func logoutHandler(ctx *Context) {
log.Println("logout:", ctx.User())
user := ctx.User()
if user == "" {
user = ctx.Totp() + " (totp)"
}
log.Println("logout:", user)
ctx.Srv.JWT.Invalidate(&ctx.Token)
ctx.SetCookie(nil, 0)
ctx.Redirect(core.IndexURI, http.StatusFound)