added login referer
This commit is contained in:
parent
2e70a95bcd
commit
4e5d554105
7 changed files with 55 additions and 15 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue