dkforest

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

commit e81730a06949ec79065dea455e44cda3f25f3872
parent aed894c54c085bc730e0865b72c27b15f6b7fdf0
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 12 Dec 2022 20:29:38 -0500

strongly typed RoomID

Diffstat:
Mpkg/database/tableChatInbox.go | 4++--
Mpkg/database/tableChatMessages.go | 24++++++++++++------------
Mpkg/database/tableChatReadMarkers.go | 6+++---
Mpkg/database/tableChatRoomGroups.go | 22+++++++++++-----------
Mpkg/database/tableChatRoomWhitelistedUsers.go | 10+++++-----
Mpkg/database/tableChatRooms.go | 12+++++++-----
Mpkg/database/tableUserRoomSubscriptions.go | 8++++----
Mpkg/database/utils/utils.go | 2+-
Mpkg/managers/managers.go | 2+-
Mpkg/web/handlers/api/v1/chess.go | 2+-
Mpkg/web/handlers/api/v1/handlers.go | 6+++---
Mpkg/web/handlers/api/v1/msgInterceptor.go | 2+-
Mpkg/web/handlers/api/v1/spamInterceptor.go | 8++++++++
Mpkg/web/handlers/api/v1/topBarHandler.go | 14+++++++-------
Mpkg/web/handlers/api/v1/werewolf.go | 2+-
Mpkg/web/handlers/handlers.go | 8++++----
Mpkg/web/handlers/utils/utils.go | 8++++----
17 files changed, 75 insertions(+), 65 deletions(-)

diff --git a/pkg/database/tableChatInbox.go b/pkg/database/tableChatInbox.go @@ -9,7 +9,7 @@ import ( type ChatInboxMessage struct { ID int64 Message string - RoomID int64 + RoomID RoomID UserID UserID ToUserID UserID ChatMessageID *int64 @@ -65,7 +65,7 @@ func DeleteUserChatInboxMessages(userID UserID) error { return DB.Where("user_id = ?", userID).Delete(&ChatInboxMessage{}).Error } -func CreateInboxMessage(msg string, roomID int64, fromUserID, toUserID UserID, isPm, moderators bool, msgID *int64) { +func CreateInboxMessage(msg string, roomID RoomID, fromUserID, toUserID UserID, isPm, moderators bool, msgID *int64) { inbox := ChatInboxMessage{Message: msg, RoomID: roomID, UserID: fromUserID, ToUserID: toUserID, IsPm: isPm, Moderators: moderators, ChatMessageID: msgID} if err := DB.Create(&inbox).Error; err != nil { logrus.Error(err) diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go @@ -62,7 +62,7 @@ type ChatMessage struct { UUID string Message string RawMessage string - RoomID int64 + RoomID RoomID UserID UserID ToUserID *UserID GroupID *int64 @@ -210,7 +210,7 @@ func (m *ChatMessage) DoSave() { } } -func GetUserLastChatMessageInRoom(userID UserID, roomID int64) (out ChatMessage, err error) { +func GetUserLastChatMessageInRoom(userID UserID, roomID RoomID) (out ChatMessage, err error) { err = DB. Where("user_id = ? AND room_id = ?", userID, roomID). Order("id DESC"). @@ -222,7 +222,7 @@ func GetUserLastChatMessageInRoom(userID UserID, roomID int64) (out ChatMessage, return } -func GetRoomChatMessages(roomID int64) (out ChatMessages, err error) { +func GetRoomChatMessages(roomID RoomID) (out ChatMessages, err error) { err = DB. Where("room_id = ?", roomID). Preload("User"). @@ -233,7 +233,7 @@ func GetRoomChatMessages(roomID int64) (out ChatMessages, err error) { return } -func GetRoomChatMessageByUUID(roomID int64, msgUUID string) (out ChatMessage, err error) { +func GetRoomChatMessageByUUID(roomID RoomID, msgUUID string) (out ChatMessage, err error) { err = DB. Where("room_id = ? AND uuid = ?", roomID, msgUUID). Preload("User"). @@ -244,7 +244,7 @@ func GetRoomChatMessageByUUID(roomID int64, msgUUID string) (out ChatMessage, er return } -func GetRoomChatMessageByDate(roomID int64, userID UserID, dt time.Time) (out ChatMessage, err error) { +func GetRoomChatMessageByDate(roomID RoomID, userID UserID, dt time.Time) (out ChatMessage, err error) { err = DB. Select("*, strftime('%Y-%m-%d %H:%M:%S', created_at) as created_at1"). Where("room_id = ? AND user_id = ? AND created_at1 = ?", roomID, userID, dt.Format("2006-01-02 15:04:05")). @@ -255,7 +255,7 @@ func GetRoomChatMessageByDate(roomID int64, userID UserID, dt time.Time) (out Ch return } -func GetRoomChatMessagesByDate(roomID int64, dt time.Time) (out []ChatMessage, err error) { +func GetRoomChatMessagesByDate(roomID RoomID, dt time.Time) (out []ChatMessage, err error) { err = DB. Select("*, strftime('%m-%d %H:%M:%S', created_at) as created_at1"). Where("room_id = ? AND created_at1 = ?", roomID, dt.Format("01-02 15:04:05")). @@ -267,7 +267,7 @@ func GetRoomChatMessagesByDate(roomID int64, dt time.Time) (out []ChatMessage, e return } -func GetChatMessages(roomID int64, username string, userID UserID, displayPms int64, mentionsOnly, DisplayHellbanned, displayIgnored, displayModerators bool) (out ChatMessages, err error) { +func GetChatMessages(roomID RoomID, username string, userID UserID, displayPms int64, mentionsOnly, DisplayHellbanned, displayIgnored, displayModerators bool) (out ChatMessages, err error) { q := DB. Preload("User"). Preload("ToUser"). @@ -366,7 +366,7 @@ func sortedMerge(a, b []ChatMessage) []ChatMessage { return out } -func DeleteChatRoomMessages(roomID int64) error { +func DeleteChatRoomMessages(roomID RoomID) error { return DB.Delete(&ChatMessage{}, "room_id = ?", roomID).Error } @@ -409,7 +409,7 @@ AND room_id = ? } } -func makeMsg(raw, txt string, roomID int64, userID UserID) ChatMessage { +func makeMsg(raw, txt string, roomID RoomID, userID UserID) ChatMessage { msg := ChatMessage{ UUID: uuid.New().String(), Message: txt, @@ -420,7 +420,7 @@ func makeMsg(raw, txt string, roomID int64, userID UserID) ChatMessage { return msg } -func CreateMsg(raw, txt, roomKey string, roomID int64, userID UserID, toUserID *UserID) (out ChatMessage, err error) { +func CreateMsg(raw, txt, roomKey string, roomID RoomID, userID UserID, toUserID *UserID) (out ChatMessage, err error) { if roomKey != "" { var err error txt, raw, err = encryptMessages(txt, raw, roomKey) @@ -437,7 +437,7 @@ func CreateMsg(raw, txt, roomKey string, roomID int64, userID UserID, toUserID * return } -func CreateSysMsg(raw, txt, roomKey string, roomID int64, userID UserID) error { +func CreateSysMsg(raw, txt, roomKey string, roomID RoomID, userID UserID) error { if roomKey != "" { var err error txt, raw, err = encryptMessages(txt, raw, roomKey) @@ -463,7 +463,7 @@ func CreateKickMsg(kickedUser, kickedByUser User) { func CreateOrEditMessage( editMsg *ChatMessage, message, raw, roomKey string, - roomID int64, + roomID RoomID, fromUserID UserID, toUserID *UserID, upload *Upload, diff --git a/pkg/database/tableChatReadMarkers.go b/pkg/database/tableChatReadMarkers.go @@ -6,16 +6,16 @@ import ( type ChatReadMarker struct { UserID UserID - RoomID int64 + RoomID RoomID ReadAt time.Time } -func GetUserReadMarker(userID UserID, roomID int64) (out ChatReadMarker, err error) { +func GetUserReadMarker(userID UserID, roomID RoomID) (out ChatReadMarker, err error) { err = DB.First(&out, "user_id = ? AND room_id = ?", userID, roomID).Error return } -func UpdateChatReadMarker(userID UserID, roomID int64) { +func UpdateChatReadMarker(userID UserID, roomID RoomID) { now := time.Now() res := DB.Table("chat_read_markers").Where("user_id = ? AND room_id = ?", userID, roomID).Update("read_at", now) if res.RowsAffected == 0 { diff --git a/pkg/database/tableChatRoomGroups.go b/pkg/database/tableChatRoomGroups.go @@ -7,7 +7,7 @@ import ( type ChatRoomGroup struct { ID int64 - RoomID int64 + RoomID RoomID Name string Color string Locked bool @@ -22,17 +22,17 @@ func (g *ChatRoomGroup) DoSave() { type ChatRoomUserGroup struct { GroupID int64 - RoomID int64 + RoomID RoomID UserID UserID User User } -func GetUserRoomGroups(userID, roomID int64) (out []ChatRoomUserGroup, err error) { +func GetUserRoomGroups(userID, roomID RoomID) (out []ChatRoomUserGroup, err error) { err = DB.Find(&out, "user_id = ? AND room_id = ?", userID, roomID).Error return } -func GetRoomGroupByName(roomID int64, groupName string) (out ChatRoomGroup, err error) { +func GetRoomGroupByName(roomID RoomID, groupName string) (out ChatRoomGroup, err error) { err = DB.First(&out, "room_id = ? AND name = ?", roomID, groupName).Error return } @@ -43,39 +43,39 @@ func IsUserInGroupByID(userID UserID, groupID int64) bool { return count == 1 } -func DeleteChatRoomGroup(roomID int64, name string) (err error) { +func DeleteChatRoomGroup(roomID RoomID, name string) (err error) { err = DB.Delete(&ChatRoomGroup{}, "room_id = ? AND name = ?", roomID, name).Error return } -func DeleteChatRoomGroups(roomID int64) (err error) { +func DeleteChatRoomGroups(roomID RoomID) (err error) { err = DB.Delete(&ChatRoomGroup{}, "room_id = ?", roomID).Error return } -func CreateChatRoomGroup(roomID int64, name, color string) (out ChatRoomGroup, err error) { +func CreateChatRoomGroup(roomID RoomID, name, color string) (out ChatRoomGroup, err error) { out = ChatRoomGroup{Name: name, Color: color, RoomID: roomID} err = DB.Create(&out).Error return } -func AddUserToRoomGroup(roomID, groupID int64, userID UserID) (out ChatRoomUserGroup, err error) { +func AddUserToRoomGroup(roomID RoomID, groupID int64, userID UserID) (out ChatRoomUserGroup, err error) { out = ChatRoomUserGroup{GroupID: groupID, RoomID: roomID, UserID: userID} err = DB.Create(&out).Error return } -func RmUserFromRoomGroup(roomID, groupID int64, userID UserID) (err error) { +func RmUserFromRoomGroup(roomID RoomID, groupID int64, userID UserID) (err error) { err = DB.Delete(&ChatRoomUserGroup{}, "user_id = ? AND group_id = ? AND room_id = ?", userID, groupID, roomID).Error return } -func GetRoomGroups(roomID int64) (out []ChatRoomGroup, err error) { +func GetRoomGroups(roomID RoomID) (out []ChatRoomGroup, err error) { err = DB.Find(&out, "room_id = ?", roomID).Error return } -func GetRoomGroupUsers(roomID, groupID int64) (out []ChatRoomUserGroup, err error) { +func GetRoomGroupUsers(roomID RoomID, groupID int64) (out []ChatRoomUserGroup, err error) { err = DB.Where("room_id = ? AND group_id = ?", roomID, groupID).Preload("User").Find(&out).Error return } diff --git a/pkg/database/tableChatRoomWhitelistedUsers.go b/pkg/database/tableChatRoomWhitelistedUsers.go @@ -8,7 +8,7 @@ import ( type ChatRoomWhitelistedUser struct { UserID UserID - RoomID int64 + RoomID RoomID CreatedAt time.Time User User } @@ -19,24 +19,24 @@ func (r *ChatRoomWhitelistedUser) DoSave() { } } -func IsUserWhitelistedInRoom(userID UserID, roomID int64) bool { +func IsUserWhitelistedInRoom(userID UserID, roomID RoomID) bool { var count int64 DB.Table("chat_room_whitelisted_users").Where("user_id = ? and room_id = ?", userID, roomID).Count(&count) return count == 1 } -func GetWhitelistedUsers(roomID int64) (out []ChatRoomWhitelistedUser, err error) { +func GetWhitelistedUsers(roomID RoomID) (out []ChatRoomWhitelistedUser, err error) { err = DB.Preload("User").Find(&out, "room_id = ?", roomID).Error return } -func WhitelistUser(roomID int64, userID UserID) (out ChatRoomWhitelistedUser, err error) { +func WhitelistUser(roomID RoomID, userID UserID) (out ChatRoomWhitelistedUser, err error) { out = ChatRoomWhitelistedUser{UserID: userID, RoomID: roomID} err = DB.Create(&out).Error return } -func DeWhitelistUser(roomID int64, userID UserID) (err error) { +func DeWhitelistUser(roomID RoomID, userID UserID) (err error) { err = DB.Delete(ChatRoomWhitelistedUser{}, "user_id = ? and room_id = ?", userID, roomID).Error return } diff --git a/pkg/database/tableChatRooms.go b/pkg/database/tableChatRooms.go @@ -8,8 +8,10 @@ import ( "github.com/sirupsen/logrus" ) +type RoomID int64 + type ChatRoom struct { - ID int64 + ID RoomID Name string OwnerUserID *UserID Password string // Hashed password (sha512) @@ -82,18 +84,18 @@ func (r *ChatRoom) HasAccess(c echo.Context) bool { if !r.IsProtected() { return true } - cookie, err := hutils.GetRoomCookie(c, r.ID) + cookie, err := hutils.GetRoomCookie(c, int64(r.ID)) if err != nil { return false } if cookie.Value != r.Password { - hutils.DeleteRoomCookie(c, r.ID) + hutils.DeleteRoomCookie(c, int64(r.ID)) return false } return true } -func GetChatRoomByID(roomID int64) (out ChatRoom, err error) { +func GetChatRoomByID(roomID RoomID) (out ChatRoom, err error) { err = DB.Where("id = ?", roomID).First(&out).Error return } @@ -154,7 +156,7 @@ WHERE owner_user_id IS NOT NULL type ChatReadRecord struct { UserID UserID - RoomID int64 + RoomID RoomID ReadAt time.Time } diff --git a/pkg/database/tableUserRoomSubscriptions.go b/pkg/database/tableUserRoomSubscriptions.go @@ -8,7 +8,7 @@ import ( type UserRoomSubscription struct { UserID UserID - RoomID int64 + RoomID RoomID CreatedAt time.Time Room ChatRoom } @@ -33,15 +33,15 @@ ORDER BY r.id ASC`, userID, userID, userID).Scan(&out).Error return } -func SubscribeToRoom(userID UserID, roomID int64) (err error) { +func SubscribeToRoom(userID UserID, roomID RoomID) (err error) { return DB.Create(&UserRoomSubscription{UserID: userID, RoomID: roomID}).Error } -func UnsubscribeFromRoom(userID UserID, roomID int64) (err error) { +func UnsubscribeFromRoom(userID UserID, roomID RoomID) (err error) { return DB.Delete(&UserRoomSubscription{}, "user_id = ? AND room_id = ?", userID, roomID).Error } -func IsUserSubscribedToRoom(userID UserID, roomID int64) bool { +func IsUserSubscribedToRoom(userID UserID, roomID RoomID) bool { var count int64 DB.Model(UserRoomSubscription{}).Where("user_id = ? AND room_id = ?", userID, roomID).Count(&count) return count == 1 diff --git a/pkg/database/utils/utils.go b/pkg/database/utils/utils.go @@ -17,7 +17,7 @@ func GetZeroUser() database.User { return zeroUser } -func SendNewChessGameMessages(key, roomKey string, roomID int64, zeroUser, player1, player2 database.User) { +func SendNewChessGameMessages(key, roomKey string, roomID database.RoomID, zeroUser, player1, player2 database.User) { // Send game link to players getPlayerMsg := func(opponent database.User) (raw string, msg string) { raw = `Chess game against ` + opponent.Username diff --git a/pkg/managers/managers.go b/pkg/managers/managers.go @@ -87,7 +87,7 @@ func getRoomKey(room database.ChatRoom) RoomKey { if room.IsProtected() { return RoomKey(fmt.Sprintf("%s%d", privateRoomKeyPrefix, room.ID)) } - return RoomKey(utils.FormatInt64(room.ID)) + return RoomKey(utils.FormatInt64(int64(room.ID))) } type ActiveUsersManager struct { diff --git a/pkg/web/handlers/api/v1/chess.go b/pkg/web/handlers/api/v1/chess.go @@ -382,7 +382,7 @@ func (b *Chess) GetGames() (out []ChessGame) { return } -func (b *Chess) NewGame1(roomKey string, roomID int64, player1, player2 database.User) (*ChessGame, error) { +func (b *Chess) NewGame1(roomKey string, roomID database.RoomID, player1, player2 database.User) (*ChessGame, error) { if player1.ID == player2.ID { return nil, errors.New("can't play yourself") } diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go @@ -100,7 +100,7 @@ func ChatMessagesHandler(c echo.Context) error { membersInRoom, membersInChat := managers.ActiveUsers.GetRoomUsers(room, ignoredSet) msgs, _ := database.GetChatMessages(room.ID, authUser.Username, authUser.ID, pmOnlyQuery, mentionsOnlyQuery, authUser.DisplayHellbanned || authUser.IsHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators) if room.IsProtected() { - key, err := hutils.GetRoomKeyCookie(c, room.ID) + key, err := hutils.GetRoomKeyCookie(c, int64(room.ID)) if err != nil { return c.NoContent(http.StatusForbidden) } @@ -423,7 +423,7 @@ func CaptchaSolverHandler(c echo.Context) error { func RoomNotifierHandler(c echo.Context) error { authUser := c.Get("authUser").(*database.User) - roomID := utils.DoParseInt64(c.Param("roomID")) + roomID := database.RoomID(utils.DoParseInt64(c.Param("roomID"))) lastKnownDate := c.Request().PostFormValue("last_known_date") room, err := database.GetChatRoomByID(roomID) @@ -438,7 +438,7 @@ func RoomNotifierHandler(c echo.Context) error { msgs, _ := database.GetChatMessages(roomID, authUser.Username, authUser.ID, 0, false, authUser.DisplayHellbanned || authUser.IsHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators) if room.IsProtected() { - key, err := hutils.GetRoomKeyCookie(c, room.ID) + key, err := hutils.GetRoomKeyCookie(c, int64(room.ID)) if err != nil { return c.NoContent(http.StatusForbidden) } diff --git a/pkg/web/handlers/api/v1/msgInterceptor.go b/pkg/web/handlers/api/v1/msgInterceptor.go @@ -63,7 +63,7 @@ func generalRoomKarma(authUser *database.User) { // ProcessRawMessage return the new html, and a map of tagged users used for notifications // This function takes an "unsafe" user input "in", and return html which will be safe to render. -func ProcessRawMessage(in, roomKey string, authUserID database.UserID, roomID int64, upload *database.Upload) (string, map[database.UserID]database.User) { +func ProcessRawMessage(in, roomKey string, authUserID database.UserID, roomID database.RoomID, upload *database.Upload) (string, map[database.UserID]database.User) { html, quoted := convertQuote(in, roomKey, roomID) // Get raw quote text which is not safe to render html = html2.EscapeString(html) // Makes user input safe to render // All html generated from this point on shall be safe to render. diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go @@ -79,6 +79,14 @@ func checkSpam(origMessage string, authUser *database.User) error { } } + prophanityWords := []string{"cock", "dick", "nigger", "niggers", "nigga", "niggas", "sex"} + prophanity := 0 + for _, w := range prophanityWords { + if n, ok := wordsMap[w]; ok { + prophanity += n + } + } + if authUser.GeneralMessagesCount < 20 || time.Since(authUser.CreatedAt) < 5*time.Hour { if wordsMap["cp"] > 0 && (wordsMap["link"] > 0 || wordsMap["links"] > 0) { dutils.SelfKick(*authUser, silentSelfKick) diff --git a/pkg/web/handlers/api/v1/topBarHandler.go b/pkg/web/handlers/api/v1/topBarHandler.go @@ -217,7 +217,7 @@ func ChatTopBarHandler(c echo.Context) error { roomKey := "" if room.IsProtected() { - key, err := hutils.GetRoomKeyCookie(c, room.ID) + key, err := hutils.GetRoomKeyCookie(c, int64(room.ID)) if err != nil { return c.NoContent(http.StatusForbidden) } @@ -493,13 +493,13 @@ func (c *Command) zeroProcMsg(rawMsg string) { c.zeroProcMsgRoom(rawMsg, c.roomKey, c.room.ID) } -func (c *Command) zeroProcMsgRoom(rawMsg, roomKey string, roomID int64) { +func (c *Command) zeroProcMsgRoom(rawMsg, roomKey string, roomID database.RoomID) { zeroUser := c.getZeroUser() procMsg, _ := ProcessRawMessage(rawMsg, roomKey, c.authUser.ID, roomID, nil) rawMsgRoom(zeroUser, c.authUser, rawMsg, procMsg, roomKey, roomID) } -func (c *Command) zeroPublicProcMsgRoom(rawMsg, roomKey string, roomID int64) { +func (c *Command) zeroPublicProcMsgRoom(rawMsg, roomKey string, roomID database.RoomID) { zeroUser := c.getZeroUser() procMsg, _ := ProcessRawMessage(rawMsg, roomKey, c.authUser.ID, roomID, nil) rawMsgRoom(zeroUser, nil, rawMsg, procMsg, roomKey, roomID) @@ -514,7 +514,7 @@ func (c *Command) rawMsg(user1 database.User, user2 *database.User, raw, msg str rawMsgRoom(user1, user2, raw, msg, c.roomKey, c.room.ID) } -func rawMsgRoom(user1 database.User, user2 *database.User, raw, msg, roomKey string, roomID int64) { +func rawMsgRoom(user1 database.User, user2 *database.User, raw, msg, roomKey string, roomID database.RoomID) { var toUserID *database.UserID if user2 != nil { toUserID = &user2.ID @@ -577,7 +577,7 @@ func sanitizeUserInput(html string) string { // Convert timestamps such as 01:23:45 to an archive link if a message with that timestamp exists. // eg: "Some text 14:31:46 some more text" -func convertArchiveLinks(html string, roomID int64, authUserID database.UserID) string { +func convertArchiveLinks(html string, roomID database.RoomID, authUserID database.UserID) string { start, rest := "", html // Do not replace timestamps that are inside a quote text @@ -677,7 +677,7 @@ func linkRoomTags(html string) string { } // Given a roomID and hourMinSec (01:23:45) and a username, retrieve the message from database that fits the predicates. -func getQuotedChatMessage(hourMinSec, username string, roomID int64) (quoted *database.ChatMessage) { +func getQuotedChatMessage(hourMinSec, username string, roomID database.RoomID) (quoted *database.ChatMessage) { if dt, err := utils.ParsePrevDatetimeAt(hourMinSec, clockwork.NewRealClock()); err == nil { if msgs, err := database.GetRoomChatMessagesByDate(roomID, dt.UTC()); err == nil && len(msgs) > 0 { msg := msgs[0] @@ -755,7 +755,7 @@ func getQuoteTxt(roomKey string, quoted database.ChatMessage) (out string) { // eg: we received altered quote, and return original quote -> // “[01:23:45] username - Some maliciously altered quote” Some text // “[01:23:45] username - The original text” Some text -func convertQuote(origHtml string, roomKey string, roomID int64) (html string, quoted *database.ChatMessage) { +func convertQuote(origHtml string, roomKey string, roomID database.RoomID) (html string, quoted *database.ChatMessage) { const quotePrefix = `“[` const quoteSuffix = `”` html = origHtml diff --git a/pkg/web/handlers/api/v1/werewolf.go b/pkg/web/handlers/api/v1/werewolf.go @@ -41,7 +41,7 @@ type Werewolf struct { cancel context.CancelFunc readyCh chan bool narratorID database.UserID - roomID int64 + roomID database.RoomID werewolfGroupID int64 spectatorGroupID int64 deadGroupID int64 diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -2266,7 +2266,7 @@ func chatHandler(c echo.Context, redRoom bool) error { btnSubmit := c.Request().PostFormValue("btn_submit") if btnSubmit == "logout" { - hutils.DeleteRoomCookie(c, room.ID) + hutils.DeleteRoomCookie(c, int64(room.ID)) return c.Redirect(http.StatusFound, "/chat") } @@ -2355,7 +2355,7 @@ func chatHandler(c echo.Context, redRoom bool) error { c.SetCookie(createSessionCookie(session.Token)) } - hutils.CreateRoomCookie(c, room.ID, hashedPassword, key) + hutils.CreateRoomCookie(c, int64(room.ID), hashedPassword, key) return c.Redirect(http.StatusFound, "/chat/"+room.Name) } @@ -3238,7 +3238,7 @@ func ChatDeleteHandler(c echo.Context) error { if c.Request().Method == http.MethodPost { if room.IsProtected() { - hutils.DeleteRoomCookie(c, room.ID) + hutils.DeleteRoomCookie(c, int64(room.ID)) } room.Name = room.Name + "_" + utils.FormatInt64(time.Now().Unix()) room.DoSave() @@ -3305,7 +3305,7 @@ func ChatArchiveHandler(c echo.Context) error { } if room.IsProtected() { - key, err := hutils.GetRoomKeyCookie(c, room.ID) + key, err := hutils.GetRoomKeyCookie(c, int64(room.ID)) if err != nil { return c.NoContent(http.StatusForbidden) } diff --git a/pkg/web/handlers/utils/utils.go b/pkg/web/handlers/utils/utils.go @@ -42,6 +42,10 @@ func DeleteCookie(name string) *http.Cookie { return CreateCookie(name, "", -1) } +func getGistCookieName(gistUUID string) string { + return fmt.Sprintf("gist_%s_auth", gistUUID) +} + func getRoomCookieName(roomID int64) string { return fmt.Sprintf("room_%d_auth", roomID) } @@ -50,10 +54,6 @@ func getRoomKeyCookieName(roomID int64) string { return fmt.Sprintf("room_%d_key", roomID) } -func getGistCookieName(gistUUID string) string { - return fmt.Sprintf("gist_%s_auth", gistUUID) -} - func GetRoomCookie(c echo.Context, roomID int64) (*http.Cookie, error) { return c.Cookie(getRoomCookieName(roomID)) }