commit e81730a06949ec79065dea455e44cda3f25f3872
parent aed894c54c085bc730e0865b72c27b15f6b7fdf0
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Mon, 12 Dec 2022 20:29:38 -0500
strongly typed RoomID
Diffstat:
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))
}