From eb98a1003efb1f4dcc9a5bc92029612fb7a0af5d Mon Sep 17 00:00:00 2001 From: Florian Sylvain Date: Wed, 12 Jun 2024 16:23:33 +0200 Subject: [PATCH] fix: replaced post name with its id in URLs --- .../gateways/web/templates/posts.html | 2 +- api/page.go | 4 ++-- api/pagePostCreate.go | 3 ++- api/pagePostEdit.go | 22 ++++++++++--------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/adapters/secondary/gateways/web/templates/posts.html b/adapters/secondary/gateways/web/templates/posts.html index 2db5db6..3667b4e 100644 --- a/adapters/secondary/gateways/web/templates/posts.html +++ b/adapters/secondary/gateways/web/templates/posts.html @@ -39,7 +39,7 @@ {{ $post.CreatedAt }} {{ $post.UpdatedAt }} - + diff --git a/api/page.go b/api/page.go index e6f43cd..acf667f 100644 --- a/api/page.go +++ b/api/page.go @@ -123,9 +123,9 @@ func NewPageRouter() http.Handler { r.Use(IsVerifiedMiddleware) r.Get("/home", GetHomePage) r.Get("/post", GetPostsPage) - r.Get("/post/{name}/edit", GetPostEditPage) + r.Get("/post/{id}/edit", GetPostEditPage) + r.Post("/post/{id}/edit", PostPostEditPage) r.Get("/post/{id}/delete", GetPostDeletePage) - r.Post("/post/{name}/edit", PostPostEditPage) r.Get("/post/create", GetPostCreatePage) r.Post("/post/create", PostPostCreatePage) }) diff --git a/api/pagePostCreate.go b/api/pagePostCreate.go index d8d12d8..8697b43 100644 --- a/api/pagePostCreate.go +++ b/api/pagePostCreate.go @@ -5,6 +5,7 @@ import ( "html/template" "net/http" "regexp" + "strconv" ) type PostCreatePageError struct { @@ -47,7 +48,7 @@ func PostPostCreatePage(w http.ResponseWriter, r *http.Request) { return } - http.Redirect(w, r, "/post/"+post.Title+"/edit", http.StatusSeeOther) + http.Redirect(w, r, "/post/"+strconv.Itoa(int(post.ID))+"/edit", http.StatusSeeOther) } func GetPostCreatePage(w http.ResponseWriter, _ *http.Request) { diff --git a/api/pagePostEdit.go b/api/pagePostEdit.go index 4c885e3..a706756 100644 --- a/api/pagePostEdit.go +++ b/api/pagePostEdit.go @@ -4,7 +4,7 @@ import ( "github.com/go-chi/chi/v5" "html/template" "net/http" - "net/url" + "strconv" ) type PostEditPageAlert struct { @@ -24,8 +24,9 @@ func getPostEditPageTemplate(body string, alert PostEditPageAlert) []byte { } func PostPostEditPage(w http.ResponseWriter, r *http.Request) { - postName := chi.URLParam(r, "name") - if len(postName) == 0 { + postID := chi.URLParam(r, "id") + postIDint, err := strconv.Atoi(postID) + if err != nil { _, _ = w.Write(getPostEditPageTemplate("", PostEditPageAlert{ IsError: true, Message: "Could not find the requested post.", @@ -36,9 +37,8 @@ func PostPostEditPage(w http.ResponseWriter, r *http.Request) { _ = r.ParseForm() postBody := r.FormValue("postBody") - parsedName, _ := url.PathUnescape(postName) - post, _ := Container.GetPostUseCase.GetPostByName(parsedName) - err := Container.UpdatePostUseCase.UpdateBody(post.ID, postBody) + post, _ := Container.GetPostUseCase.GetPost(uint32(postIDint)) + err = Container.UpdatePostUseCase.UpdateBody(post.ID, postBody) if err != nil { _, _ = w.Write(getPostEditPageTemplate(postBody, PostEditPageAlert{ IsError: true, @@ -54,13 +54,15 @@ func PostPostEditPage(w http.ResponseWriter, r *http.Request) { } func GetPostEditPage(w http.ResponseWriter, r *http.Request) { - postName := chi.URLParam(r, "name") - if len(postName) == 0 { + postID := chi.URLParam(r, "id") + postIDint, err := strconv.Atoi(postID) + if err != nil { w.WriteHeader(http.StatusBadRequest) return } - parsedName, _ := url.PathUnescape(postName) - post, _ := Container.GetPostUseCase.GetPostByName(parsedName) + + post, _ := Container.GetPostUseCase.GetPost(uint32(postIDint)) + _, _ = w.Write(getPostEditPageTemplate(post.Body, PostEditPageAlert{ IsError: false, Message: "",