dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit ca90364b693172ee9c386f1879567173d6cb825e
parent 538f917d0dc76af02fb3dc1566f5120271ae4839
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu,  2 Mar 2023 20:50:28 -0800

cleanup

Diffstat:
Apkg/web/handlers/club.go | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpkg/web/handlers/handlers.go | 119-------------------------------------------------------------------------------
2 files changed, 128 insertions(+), 119 deletions(-)

diff --git a/pkg/web/handlers/club.go b/pkg/web/handlers/club.go @@ -0,0 +1,128 @@ +package handlers + +import ( + "dkforest/pkg/database" + "dkforest/pkg/utils" + "github.com/asaskevich/govalidator" + "github.com/labstack/echo" + "net/http" +) + +func ClubHandler(c echo.Context) error { + authUser := c.Get("authUser").(*database.User) + var data clubData + data.ActiveTab = "home" + data.ForumThreads, _ = database.GetClubForumThreads(authUser.ID) + return c.Render(http.StatusOK, "club.home", data) +} + +func ClubNewThreadHandler(c echo.Context) error { + authUser := c.Get("authUser").(*database.User) + var data clubNewThreadData + data.ActiveTab = "home" + + if c.Request().Method == http.MethodPost { + data.ThreadName = c.Request().PostFormValue("thread_name") + data.Message = c.Request().PostFormValue("message") + if !govalidator.RuneLength(data.ThreadName, "3", "255") { + data.ErrorThreadName = "Thread name must have 3-255 characters" + return c.Render(http.StatusOK, "club.new-thread", data) + } + if !govalidator.RuneLength(data.Message, "3", "10000") { + data.ErrorMessage = "Thread name must have at least 3 characters" + return c.Render(http.StatusOK, "club.new-thread", data) + } + thread := database.MakeForumThread(data.ThreadName, authUser.ID, 0) + database.DB.Create(&thread) + message := database.MakeForumMessage(data.Message, authUser.ID, thread.ID) + database.DB.Create(&message) + return c.Redirect(http.StatusFound, "/club/threads/"+utils.FormatInt64(int64(thread.ID))) + } + + return c.Render(http.StatusOK, "club.new-thread", data) +} + +func ClubThreadReplyHandler(c echo.Context) error { + authUser := c.Get("authUser").(*database.User) + threadID := database.ForumThreadID(utils.DoParseInt64(c.Param("threadID"))) + thread, err := database.GetForumThread(threadID) + if err != nil { + return c.Redirect(http.StatusFound, "/") + } + var data clubNewThreadReplyData + data.ActiveTab = "home" + data.Thread = thread + + if c.Request().Method == http.MethodPost { + data.Message = c.Request().PostFormValue("message") + if !govalidator.RuneLength(data.Message, "3", "10000") { + data.ErrorMessage = "Message must have at least 3 characters" + return c.Render(http.StatusOK, "club.new-thread", data) + } + message := database.MakeForumMessage(data.Message, authUser.ID, thread.ID) + database.DB.Create(&message) + return c.Redirect(http.StatusFound, "/club/threads/"+utils.FormatInt64(int64(thread.ID))) + } + + return c.Render(http.StatusOK, "club.thread-reply", data) +} + +func ClubThreadEditMessageHandler(c echo.Context) error { + authUser := c.Get("authUser").(*database.User) + threadID := database.ForumThreadID(utils.DoParseInt64(c.Param("threadID"))) + messageID := database.ForumMessageID(utils.DoParseInt64(c.Param("messageID"))) + thread, err := database.GetForumThread(threadID) + if err != nil { + return c.Redirect(http.StatusFound, "/") + } + msg, err := database.GetForumMessage(messageID) + if err != nil { + return c.Redirect(http.StatusFound, "/") + } + if msg.UserID != authUser.ID && !authUser.IsAdmin { + return c.Redirect(http.StatusFound, "/") + } + var data clubNewThreadReplyData + data.ActiveTab = "home" + data.IsEdit = true + data.Thread = thread + data.Message = msg.Message + + if c.Request().Method == http.MethodPost { + data.Message = c.Request().PostFormValue("message") + if !govalidator.RuneLength(data.Message, "3", "10000") { + data.ErrorMessage = "Message must have at least 3 characters" + return c.Render(http.StatusOK, "club.new-thread", data) + } + msg.Message = data.Message + msg.DoSave() + return c.Redirect(http.StatusFound, "/club/threads/"+utils.FormatInt64(int64(thread.ID))) + } + + return c.Render(http.StatusOK, "club.thread-reply", data) +} + +func ClubMembersHandler(c echo.Context) error { + var data clubMembersData + data.ActiveTab = "members" + data.Members, _ = database.GetClubMembers() + return c.Render(http.StatusOK, "club.members", data) +} + +func ClubThreadHandler(c echo.Context) error { + authUser := c.Get("authUser").(*database.User) + threadID := database.ForumThreadID(utils.DoParseInt64(c.Param("threadID"))) + thread, err := database.GetForumThread(threadID) + if err != nil { + return c.Redirect(http.StatusFound, "/") + } + var data clubThreadData + data.ActiveTab = "home" + data.Thread = thread + data.Messages, _ = database.GetThreadMessages(threadID) + + // Update read record + database.UpdateForumReadRecord(authUser.ID, threadID) + + return c.Render(http.StatusOK, "club.thread", data) +} diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -1880,14 +1880,6 @@ func WerewolfHandler(c echo.Context) error { return c.Render(http.StatusOK, "werewolf", nil) } -func ClubHandler(c echo.Context) error { - authUser := c.Get("authUser").(*database.User) - var data clubData - data.ActiveTab = "home" - data.ForumThreads, _ = database.GetClubForumThreads(authUser.ID) - return c.Render(http.StatusOK, "club.home", data) -} - func ThreadReplyHandler(c echo.Context) error { if config.ForumEnabled.IsFalse() { return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Forum is temporarily disabled", Redirect: "/", Type: "alert-danger"}) @@ -1936,31 +1928,6 @@ func ThreadReplyHandler(c echo.Context) error { return c.Render(http.StatusOK, "thread-reply", data) } -func ClubThreadReplyHandler(c echo.Context) error { - authUser := c.Get("authUser").(*database.User) - threadID := database.ForumThreadID(utils.DoParseInt64(c.Param("threadID"))) - thread, err := database.GetForumThread(threadID) - if err != nil { - return c.Redirect(http.StatusFound, "/") - } - var data clubNewThreadReplyData - data.ActiveTab = "home" - data.Thread = thread - - if c.Request().Method == http.MethodPost { - data.Message = c.Request().PostFormValue("message") - if !govalidator.RuneLength(data.Message, "3", "10000") { - data.ErrorMessage = "Message must have at least 3 characters" - return c.Render(http.StatusOK, "club.new-thread", data) - } - message := database.MakeForumMessage(data.Message, authUser.ID, thread.ID) - database.DB.Create(&message) - return c.Redirect(http.StatusFound, "/club/threads/"+utils.FormatInt64(int64(thread.ID))) - } - - return c.Render(http.StatusOK, "club.thread-reply", data) -} - func ThreadDeleteMessageHandler(c echo.Context) error { if config.ForumEnabled.IsFalse() { return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Forum is temporarily disabled", Redirect: "/", Type: "alert-danger"}) @@ -2204,41 +2171,6 @@ func ThreadRawMessageHandler(c echo.Context) error { return c.String(http.StatusOK, msg.Message) } -func ClubThreadEditMessageHandler(c echo.Context) error { - authUser := c.Get("authUser").(*database.User) - threadID := database.ForumThreadID(utils.DoParseInt64(c.Param("threadID"))) - messageID := database.ForumMessageID(utils.DoParseInt64(c.Param("messageID"))) - thread, err := database.GetForumThread(threadID) - if err != nil { - return c.Redirect(http.StatusFound, "/") - } - msg, err := database.GetForumMessage(messageID) - if err != nil { - return c.Redirect(http.StatusFound, "/") - } - if msg.UserID != authUser.ID && !authUser.IsAdmin { - return c.Redirect(http.StatusFound, "/") - } - var data clubNewThreadReplyData - data.ActiveTab = "home" - data.IsEdit = true - data.Thread = thread - data.Message = msg.Message - - if c.Request().Method == http.MethodPost { - data.Message = c.Request().PostFormValue("message") - if !govalidator.RuneLength(data.Message, "3", "10000") { - data.ErrorMessage = "Message must have at least 3 characters" - return c.Render(http.StatusOK, "club.new-thread", data) - } - msg.Message = data.Message - msg.DoSave() - return c.Redirect(http.StatusFound, "/club/threads/"+utils.FormatInt64(int64(thread.ID))) - } - - return c.Render(http.StatusOK, "club.thread-reply", data) -} - func isForumSpam(msg string) bool { if strings.Contains(strings.ToLower(msg), "profjerry") { return true @@ -2285,57 +2217,6 @@ func NewThreadHandler(c echo.Context) error { return c.Render(http.StatusOK, "new-thread", data) } -func ClubNewThreadHandler(c echo.Context) error { - authUser := c.Get("authUser").(*database.User) - var data clubNewThreadData - data.ActiveTab = "home" - - if c.Request().Method == http.MethodPost { - data.ThreadName = c.Request().PostFormValue("thread_name") - data.Message = c.Request().PostFormValue("message") - if !govalidator.RuneLength(data.ThreadName, "3", "255") { - data.ErrorThreadName = "Thread name must have 3-255 characters" - return c.Render(http.StatusOK, "club.new-thread", data) - } - if !govalidator.RuneLength(data.Message, "3", "10000") { - data.ErrorMessage = "Thread name must have at least 3 characters" - return c.Render(http.StatusOK, "club.new-thread", data) - } - thread := database.MakeForumThread(data.ThreadName, authUser.ID, 0) - database.DB.Create(&thread) - message := database.MakeForumMessage(data.Message, authUser.ID, thread.ID) - database.DB.Create(&message) - return c.Redirect(http.StatusFound, "/club/threads/"+utils.FormatInt64(int64(thread.ID))) - } - - return c.Render(http.StatusOK, "club.new-thread", data) -} - -func ClubMembersHandler(c echo.Context) error { - var data clubMembersData - data.ActiveTab = "members" - data.Members, _ = database.GetClubMembers() - return c.Render(http.StatusOK, "club.members", data) -} - -func ClubThreadHandler(c echo.Context) error { - authUser := c.Get("authUser").(*database.User) - threadID := database.ForumThreadID(utils.DoParseInt64(c.Param("threadID"))) - thread, err := database.GetForumThread(threadID) - if err != nil { - return c.Redirect(http.StatusFound, "/") - } - var data clubThreadData - data.ActiveTab = "home" - data.Thread = thread - data.Messages, _ = database.GetThreadMessages(threadID) - - // Update read record - database.UpdateForumReadRecord(authUser.ID, threadID) - - return c.Render(http.StatusOK, "club.thread", data) -} - func VipHandler(c echo.Context) error { var data vipData data.ActiveTab = "home"