added dump/restore and fixed title stuff

This commit is contained in:
ston1th 2018-10-16 21:26:39 +02:00
commit 8d3187b160
13 changed files with 200627 additions and 189988 deletions

View file

@ -86,11 +86,11 @@ func loginHandler(ctx *Context) {
case "GET":
ctx.Exec()
case "POST":
user := ctx.Form("user")
password := ctx.Form("password")
if !ctx.CheckXsrf() {
return
}
user := ctx.Form("user")
password := ctx.Form("password")
if user == "" || password == "" {
ctx.Error("wrong inputs")
return
@ -115,10 +115,10 @@ func searchHandler(ctx *Context) {
case "GET":
ctx.Exec()
case "POST":
search := ctx.Form("search")
if !ctx.CheckXsrf() {
return
}
search := ctx.Form("search")
res, err := ctx.Srv.DB.Index.Search(search)
if err != nil {
@ -150,8 +150,11 @@ func pageNewHandler(ctx *Context) {
ctx.Data.Data = core.Page{Perm: core.Public}
ctx.Exec()
case "POST":
if !ctx.CheckXsrf() {
return
}
section := ctx.Form("section")
title := render.Title(ctx.Form("title"))
title := ctx.Form("title")
markdown := ctx.Form("markdown")
perm := core.ParsePermString(ctx.Form("perm"))
p := core.Page{
@ -160,9 +163,7 @@ func pageNewHandler(ctx *Context) {
Perm: perm,
}
ctx.Data.Data = p
if !ctx.CheckXsrf() {
return
}
if section != core.WikiSection {
section = ctx.User()
}
@ -213,7 +214,7 @@ func pageHandler(ctx *Context) {
ctx.Template("pageHandler")
}
}
page, err := ctx.Srv.DB.GetPage(render.StoreTitle(section, title), user)
page, err := ctx.Srv.DB.GetPage(section, title, user)
if err != nil {
log.Println(err)
ctx.NotFound()
@ -236,10 +237,9 @@ func pageShareHandler(ctx *Context) {
ctx.Template("pageShareHandler")
ctx.Data = webData{}
section := ctx.Var("section")
title := render.Title(ctx.Var("title"))
title := ctx.Var("title")
user := ctx.User()
st := render.StoreTitle(section, title)
page, err := ctx.Srv.DB.GetPage(st, user)
page, err := ctx.Srv.DB.GetPage(section, title, user)
if err != nil {
ctx.NotFound()
return
@ -248,18 +248,18 @@ func pageShareHandler(ctx *Context) {
ctx.Error("only private pages can be shared")
return
}
ctx.Data.Data = st
ctx.Data.Data = page.StoreTitle
ctx.Data.Title = page.Title
ctx.Data.BodyTitle = page.Title
switch ctx.Method() {
case "GET":
ctx.Exec()
case "POST":
duration := ctx.Form("duration")
if !ctx.CheckXsrf() {
return
}
d, err := time.ParseDuration(duration)
d, err := time.ParseDuration(ctx.Form("duration"))
if err != nil {
ctx.Error(err)
return
@ -295,6 +295,7 @@ func pageBlacklistHandler(ctx *Context) {
if !ctx.CheckXsrf() {
return
}
t, err := jwt.DecodeToken(ctx.Form("share"))
if err != nil {
ctx.Error(err)
@ -327,8 +328,8 @@ func pageEditHandler(ctx *Context) {
ctx.Template("pageEditHandler")
ctx.Data = webData{}
section := ctx.Var("section")
title := render.Title(ctx.Var("title"))
page, err := ctx.Srv.DB.GetPage(render.StoreTitle(section, title), ctx.User())
title := ctx.Var("title")
page, err := ctx.Srv.DB.GetPage(section, title, ctx.User())
if err != nil {
ctx.NotFound()
return
@ -340,12 +341,13 @@ func pageEditHandler(ctx *Context) {
ctx.Data.Data = page
ctx.Exec()
case "POST":
page.Markdown = ctx.Form("markdown")
page.Perm = core.ParsePermString(ctx.Form("perm"))
ctx.Data.Data = page
if !ctx.CheckXsrf() {
return
}
page.Markdown = ctx.Form("markdown")
page.Perm = core.ParsePermString(ctx.Form("perm"))
ctx.Data.Data = page
err = ctx.Srv.DB.UpdatePage(title, section, page.Markdown, ctx.User(), page.Perm)
if err != nil {
ctx.Error(err)
@ -357,10 +359,9 @@ func pageEditHandler(ctx *Context) {
func pageDelHandler(ctx *Context) {
section := ctx.Var("section")
title := render.Title(ctx.Var("title"))
st := render.StoreTitle(section, title)
title := ctx.Var("title")
ctx.Template("pageDelHandler")
ctx.Data.Data = st
ctx.Data.Data = render.StoreTitle(section, title)
ctx.Data.Title = title
ctx.Data.BodyTitle = title
switch ctx.Method() {
@ -407,6 +408,9 @@ func userNewHandler(ctx *Context) {
case "GET":
ctx.Exec()
case "POST":
if !ctx.CheckXsrf() {
return
}
user := ctx.Form("user")
password := ctx.Form("password")
repeat := ctx.Form("repeat")
@ -415,9 +419,7 @@ func userNewHandler(ctx *Context) {
if admin == "0" {
adm = true
}
if !ctx.CheckXsrf() {
return
}
if user == "" || password == "" || password != repeat {
ctx.Error("wrong inputs")
return
@ -446,6 +448,9 @@ func userEditHandler(ctx *Context) {
ctx.Data.Data = u
ctx.Exec()
case "POST":
if !ctx.CheckXsrf() {
return
}
user := ctx.Var("user")
password := ctx.Form("password")
repeat := ctx.Form("repeat")
@ -454,9 +459,7 @@ func userEditHandler(ctx *Context) {
if admin == "0" {
adm = true
}
if !ctx.CheckXsrf() {
return
}
if user == "" || password != repeat {
ctx.Error("wrong inputs")
return
@ -504,6 +507,9 @@ func userDelHandler(ctx *Context) {
ctx.Data.Data = user
ctx.Exec()
case "POST":
if !ctx.CheckXsrf() {
return
}
if err := ctx.Srv.DB.DeleteUser(ctx.Var("user")); err != nil {
log.Println("delete:", err)
}

View file

@ -98,29 +98,29 @@ var routes = []route{
[]string{"GET"},
},
{
"/{section}/{title}",
"/{section:[a-zA-Z0-9]+}/{title:[a-zA-Z0-9+-]+}",
pageHandler,
[]string{"GET"},
},
{
"/{section}/{title}/md",
"/{section:[a-zA-Z0-9]+}/{title:[a-zA-Z0-9+-]+}/md",
pageMDHandler(
pageHandler),
[]string{"GET"},
},
{
"/{section}/{title}/share",
"/{section:[a-zA-Z0-9]+}/{title:[a-zA-Z0-9+-]+}/share",
pageShareHandler,
[]string{"GET", "POST"},
},
{
"/{section}/{title}/edit",
"/{section:[a-zA-Z0-9]+}/{title:[a-zA-Z0-9+-]+}/edit",
authHandler(
pageEditHandler),
[]string{"GET", "POST"},
},
{
"/{section}/{title}/del",
"/{section:[a-zA-Z0-9]+}/{title:[a-zA-Z0-9+-]+}/del",
authHandler(
pageDelHandler),
[]string{"GET", "POST"},

View file

@ -50,7 +50,7 @@ const (
<link rel="stylesheet" type="text/css" href="/bootstrap.css" media="screen" integrity="sha256-NeLmQ7cX66J4MdtgGlG3O/TgvsSyP1b9WbaQtxYZUbQ="></link>
<link rel="stylesheet" type="text/css" href="/custom.css" media="screen" integrity="sha256-1LNAeuiM/rtsY1jIgLovUZ7HbYnOCkj3ZyailNA3rFQ="></link>
</head>
<body>
<body id="back-to-top">
<div class="navbar navbar-expand fixed-top navbar-dark bg-primary">
<div class="container">
<a href="/" class="navbar-brand">GoWiki</a>
@ -60,7 +60,7 @@ const (
</div>
</div>
<div class="container">
<div id="back-to-top" class="proper-content">
<div class="proper-content">
{{if .Msg}}
<div class="alert alert-danger msg">
<h4>Error!</h4>