minor bugfixes and cleanup

This commit is contained in:
ston1th 2018-09-19 00:10:16 +02:00
commit 97d914bce4
26 changed files with 198 additions and 221 deletions

View file

@ -88,21 +88,19 @@ func loginHandler(ctx *Context) {
case "POST":
user := ctx.Form("user")
password := ctx.Form("password")
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
if user == "" || password == "" {
ctx.Data.Msg = "wrong inputs"
ctx.Exec()
ctx.Error("wrong inputs")
return
}
u, err := ctx.Srv.DB.Login(user, password)
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.SetCookie(map[string]interface{}{userClaim: u.Username, adminClaim: u.Admin})
ctx.SetCookie(jwt.Claims{userClaim: u.Username, adminClaim: u.Admin})
ctx.Redirect(core.IndexURI, 302)
}
}
@ -118,18 +116,16 @@ func searchHandler(ctx *Context) {
ctx.Exec()
case "POST":
search := ctx.Form("search")
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
//TODO
//res, err := ctx.Srv.DB.Index.Search(search)
//if err != nil {
// ctx.Data.Msg = err.Error()
// ctx.Exec()
// return
//}
//ctx.Data.Data = res
res, err := ctx.Srv.DB.Index.Search(search)
if err != nil {
ctx.Error(err)
return
}
ctx.Data.Data = res
ctx.Data.Search = search
ctx.Exec()
}
@ -164,7 +160,7 @@ func pageNewHandler(ctx *Context) {
Perm: perm,
}
ctx.Data.Data = p
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
if section != core.WikiSection {
@ -172,8 +168,7 @@ func pageNewHandler(ctx *Context) {
}
page, err := ctx.Srv.DB.CreatePage(title, section, markdown, ctx.User(), perm)
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.Redirect(page.StoreTitle, 302)
@ -242,6 +237,10 @@ func pageShareHandler(ctx *Context) {
ctx.NotFound()
return
}
if page.Perm != core.Private {
ctx.Error("only private pages can be shared")
return
}
ctx.Data.Data = st
ctx.Data.Title = page.Title
ctx.Data.BodyTitle = page.Title
@ -250,13 +249,12 @@ func pageShareHandler(ctx *Context) {
ctx.Exec()
case "POST":
duration := ctx.Form("duration")
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
d, err := time.ParseDuration(duration)
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
t := jwt.NewToken(map[string]interface{}{
@ -286,36 +284,31 @@ func pageBlacklistHandler(ctx *Context) {
case "GET":
ctx.Exec()
case "POST":
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
t, err := jwt.DecodeToken(ctx.Form("share"))
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
err = ctx.Srv.JWT.Verify(t)
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
user := t.Claims.GetString(sharedClaim)
if user == "" {
ctx.Data.Msg = "blacklisting denied: no share token"
ctx.Exec()
ctx.Error("blacklisting denied: no share token")
return
}
if ctx.User() != user {
ctx.Data.Msg = "blacklisting denied: token was issued by " + user
ctx.Exec()
ctx.Error("blacklisting denied: token was issued by " + user)
return
}
err = ctx.Srv.JWT.Invalidate(t)
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.Exec()
@ -342,13 +335,12 @@ func pageEditHandler(ctx *Context) {
page.Markdown = ctx.Form("markdown")
page.Perm = core.ParsePermString(ctx.Form("perm"))
ctx.Data.Data = page
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
err = ctx.Srv.DB.UpdatePage(title, section, page.Markdown, ctx.User(), page.Perm)
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.Redirect(page.StoreTitle, 302)
@ -367,12 +359,11 @@ func pageDelHandler(ctx *Context) {
case "GET":
ctx.Exec()
case "POST":
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
if err := ctx.Srv.DB.DeletePage(title, section, ctx.User()); err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.Redirect(core.IndexURI, 302)
@ -416,17 +407,15 @@ func userNewHandler(ctx *Context) {
if admin == "0" {
adm = true
}
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
if user == "" || password == "" || password != repeat {
ctx.Data.Msg = "wrong inputs"
ctx.Exec()
ctx.Error("wrong inputs")
return
}
if err := ctx.Srv.DB.CreateUser(user, password, adm); err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.Redirect("/user", 302)
@ -443,8 +432,7 @@ func userEditHandler(ctx *Context) {
case "GET":
u, err := ctx.Srv.DB.GetUserWithoutPassword(ctx.Var("user"))
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.Data.Data = u
@ -458,25 +446,22 @@ func userEditHandler(ctx *Context) {
if admin == "0" {
adm = true
}
if !ctx.CheckXsrf(nil) {
if !ctx.CheckXsrf() {
return
}
if user == "" || password != repeat {
ctx.Data.Msg = "wrong inputs"
ctx.Exec()
ctx.Error("wrong inputs")
return
}
if ctx.Admin() {
if err := ctx.Srv.DB.AdminUpdateUser(user, password, adm); err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
} else {
if user == ctx.User() {
if err := ctx.Srv.DB.UpdateUserPassword(user, password); err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.Redirect(core.IndexURI, 302)
@ -505,8 +490,7 @@ func userDelHandler(ctx *Context) {
case "GET":
user, err := ctx.Srv.DB.GetUserWithoutPassword(ctx.Var("user"))
if err != nil {
ctx.Data.Msg = err.Error()
ctx.Exec()
ctx.Error(err)
return
}
ctx.Data.Data = user