dkforest

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

commit dbb2e367b2b65a7d7f9e00f0b0fb81f6fd55d339
parent 78fd8018460a0a643a0975a61ebdda29904f6e16
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sat, 28 Jan 2023 22:05:27 -0800

cleanup

Diffstat:
Mpkg/web/handlers/api/v1/handlers.go | 13+++----------
Mpkg/web/handlers/api/v1/topBarHandler.go | 30+++++++++++++++++-------------
Mpkg/web/middlewares/middlewares.go | 14+++-----------
3 files changed, 23 insertions(+), 34 deletions(-)

diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go @@ -527,21 +527,14 @@ func ChessHandler(c echo.Context) error { } func WerewolfHandler(c echo.Context) error { - authUser := c.Get("authUser").(*database.User) roomName := "werewolf" - message := c.Request().PostFormValue("message") + origMessage := c.Request().PostFormValue("message") redirectURL := "/api/v1/chat/messages/" + roomName - room, _, err := dutils.GetRoomAndKey(c, roomName) + room, roomKey, err := dutils.GetRoomAndKey(c, roomName) if err != nil { return c.Redirect(http.StatusFound, redirectURL+"?error="+err.Error()+"&errorTs="+utils.FormatInt64(time.Now().Unix())) } - cmd := &Command{ - room: room, - message: message, - authUser: authUser, - fromUserID: authUser.ID, - redirectQP: url.Values{}, - } + cmd := NewCommand(c, origMessage, room, roomKey) WWInstance.InterceptMsg(cmd) if cmd.err != nil { return c.Redirect(http.StatusFound, redirectURL+"?error="+cmd.err.Error()+"&errorTs="+utils.FormatInt64(time.Now().Unix())) diff --git a/pkg/web/handlers/api/v1/topBarHandler.go b/pkg/web/handlers/api/v1/topBarHandler.go @@ -260,21 +260,10 @@ func ChatTopBarHandler(c echo.Context) error { return c.Render(http.StatusOK, "chat-top-bar", data) } - data.Message = "" origMessage := c.Request().PostFormValue("message") - cmd := &Command{ - redirectQP: redirectQP, - dataMessage: data.Message, - origMessage: origMessage, - message: origMessage, - room: room, - roomKey: roomKey, - authUser: authUser, - fromUserID: authUser.ID, - hellbanMsg: authUser.IsHellbanned, - c: c, - } + cmd := NewCommand(c, origMessage, room, roomKey) + cmd.redirectQP = redirectQP type Interceptor interface { InterceptMsg(*Command) @@ -405,6 +394,21 @@ type Command struct { skipInboxes bool } +func NewCommand(c echo.Context, origMessage string, room database.ChatRoom, roomKey string) *Command { + authUser := c.Get("authUser").(*database.User) + return &Command{ + c: c, + authUser: authUser, + fromUserID: authUser.ID, + hellbanMsg: authUser.IsHellbanned, + redirectQP: url.Values{}, + origMessage: origMessage, + message: origMessage, + room: room, + roomKey: roomKey, + } +} + func (c *Command) redirectURL() string { return fmt.Sprintf("/api/v1/chat/top-bar/%s?%s", c.room.Name, c.redirectQP.Encode()) } diff --git a/pkg/web/middlewares/middlewares.go b/pkg/web/middlewares/middlewares.go @@ -173,19 +173,11 @@ func CSRFMiddleware() echo.MiddlewareFunc { SameSite: http.SameSiteLaxMode, Skipper: func(c echo.Context) bool { apiKey := c.Request().Header.Get("DKF_API_KEY") - if (apiKey != "" && strings.HasPrefix(c.Path(), "/api/v1/")) || + return (apiKey != "" && strings.HasPrefix(c.Path(), "/api/v1/")) || c.Path() == "/api/v1/battleship" || c.Path() == "/api/v1/chess" || - c.Path() == "/api/v1/werewolf" { - return true - } - if c.Path() == "/chess/:key" { - return true - } - if strings.HasPrefix(c.Path(), "/api/v1/chat/top-bar/:roomName") && c.Param("roomName") == "werewolf" { - return true - } - return false + c.Path() == "/api/v1/werewolf" || + c.Path() == "/chess/:key" }, } return CSRFWithConfig(csrfConfig)