diff --git a/editor.go b/editor.go index f5fde34..f2a912d 100644 --- a/editor.go +++ b/editor.go @@ -1,29 +1,69 @@ package main import ( - "embed" + "bytes" "fmt" - "io" "log" "net/http" + "text/template" "time" "github.com/CalebQ42/darkstorm-server/internal/backend" + "github.com/CalebQ42/darkstorm-server/internal/blog" ) -//go:embed embed -var editorFS embed.FS +// //go:embed embed +// var editorFS embed.FS -const loginPage = ` +const ( + loginPage = `
+ +` + editorPage = ` ++ + +
+Select a blog!
Select a blog!
", "", "") + return + } + if blogID == "new" { + bl = &blog.Blog{} + } else { + bl, err = blogApp.Blog(r.Context(), r.URL.Query().Get("blog")) + if err != nil { + log.Println("error getting blog for editor:", err) + sendContent(w, r, "ERROR", "", "") + return + } + } + buf := new(bytes.Buffer) + err = tmpl.Execute(buf, bl) + if err != nil { + log.Println("error executing editor template:", err) + sendContent(w, r, "ERROR", "", "") + return + } + sendContent(w, r, buf.String(), "", "") +} + +func verifyEditorCookie(r *http.Request) bool { authCookie, err := r.Cookie("blogAuthToken") if err != nil { if err != http.ErrNoCookie { log.Println("error getting auth cookie:", err) } - editorRedirect(w, r, "/login") - return + return false } - usr, err := back.VerifyUser(r.Context(), authCookie.Value) + _, err = back.VerifyUser(r.Context(), authCookie.Value) if err != nil { if err != backend.ErrTokenUnauthorized { log.Println("error authorizing JWT token:", err) } - editorRedirect(w, r, "/login") - return + return false } - page, err := editorFS.Open("embed/editor.html") - defer page.Close() - if err != nil { - log.Println("error getting editor.html:", err) - sendContent(w, r, "error getting page", "", "") - return - } - _, err = io.ReadAll(page) - if err != nil { - log.Println("error reading editor.html:", err) - sendContent(w, r, "error getting page", "", "") - return - } - sendContent(w, r, "Hello there, "+usr.Username+"
", "", "") + return true } func editorRedirect(w http.ResponseWriter, r *http.Request, path string) { diff --git a/embed/editor.html b/embed/editor.html deleted file mode 100644 index 5cd4e6f..0000000 --- a/embed/editor.html +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/internal/blog/blog.go b/internal/blog/blog.go index 6346558..214e102 100644 --- a/internal/blog/blog.go +++ b/internal/blog/blog.go @@ -28,7 +28,8 @@ type Blog struct { Author string `json:"author" bson:"author"` Favicon string `json:"favicon" bson:"favicon"` Title string `json:"title" bson:"title"` - Blog string `json:"blog" bson:"blog"` + RawBlog string `json:"blog" bson:"blog"` + HTMLBlog string `json:"-" bson:"-"` StaticPage bool `json:"staticPage" bson:"staticPage"` Draft bool `json:"draft" bson:"draft"` CreateTime int64 `json:"createTime" bson:"createTime"` @@ -37,7 +38,7 @@ type Blog struct { func (b *Blog) HTMX(blogApp *BlogApp, ctx context.Context) string { if b.StaticPage { - return b.Blog + return b.RawBlog } out := fmt.Sprintf(blogTitle, b.ID, b.ID, b.Title) auth, err := blogApp.GetAuthor(ctx, b) @@ -52,7 +53,7 @@ func (b *Blog) HTMX(blogApp *BlogApp, ctx context.Context) string { } else { out += fmt.Sprintf(blogCreate, cTime) } - out += fmt.Sprintf(blogMain, b.Blog) + out += fmt.Sprintf(blogMain, b.HTMLBlog) if err == nil { out += "