dkforest

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

commit cf4f10a3124b565aa011af811f1e21f99719c827
parent a759293f55aa611db926bfbe95b01fee0affccb7
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri,  2 Dec 2022 23:20:33 -0500

Add /system command for admin

Diffstat:
Mpkg/database/tableChatMessages.go | 3++-
Mpkg/web/handlers/api/v1/msgInterceptor.go | 2+-
Mpkg/web/handlers/api/v1/slashInterceptor.go | 22+++++++++++++++++++++-
Mpkg/web/handlers/api/v1/topBarHandler.go | 1+
Mpkg/web/handlers/api/v1/werewolf.go | 2+-
5 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go @@ -457,7 +457,7 @@ func CreateOrEditMessage( toUserID *UserID, upload *Upload, groupID *int64, - hellbanMsg, modMsg bool) (int64, error) { + hellbanMsg, modMsg, systemMsg bool) (int64, error) { if roomKey != "" { var err error @@ -476,6 +476,7 @@ func CreateOrEditMessage( msg := makeMsg(raw, message, roomID, fromUserID) editMsg = &msg editMsg.IsHellbanned = hellbanMsg + editMsg.System = systemMsg editMsg.Moderators = modMsg editMsg.GroupID = groupID editMsg.ToUserID = toUserID diff --git a/pkg/web/handlers/api/v1/msgInterceptor.go b/pkg/web/handlers/api/v1/msgInterceptor.go @@ -26,7 +26,7 @@ func (i MsgInterceptor) InterceptMsg(cmd *Command) { toUserID := database.UserPtrID(cmd.toUser) - msgID, _ := database.CreateOrEditMessage(cmd.editMsg, html, cmd.origMessage, cmd.roomKey, cmd.room.ID, cmd.fromUserID, toUserID, cmd.upload, cmd.groupID, cmd.hellbanMsg, cmd.modMsg) + msgID, _ := database.CreateOrEditMessage(cmd.editMsg, html, cmd.origMessage, cmd.roomKey, cmd.room.ID, cmd.fromUserID, toUserID, cmd.upload, cmd.groupID, cmd.hellbanMsg, cmd.modMsg, cmd.systemMsg) if !cmd.skipInboxes { sendInboxes(cmd.room, cmd.authUser, cmd.toUser, msgID, cmd.groupID, html, cmd.modMsg, taggedUsersIDsMap) diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go @@ -37,7 +37,8 @@ func (i SlashInterceptor) InterceptMsg(c *Command) { handled := handleUserCmd(c) || handlePrivateRoomCmd(c) || handlePrivateRoomOwnerCmd(c) || - handleModeratorCmd(c) + handleModeratorCmd(c) || + handleAdminCmd(c) if !handled { c.err = errors.New("invalid slash command") } @@ -114,6 +115,13 @@ func handleModeratorCmd(c *Command) (handled bool) { return false } +func handleAdminCmd(c *Command) (handled bool) { + if c.authUser.IsAdmin { + return handleSystemCmd(c) + } + return false +} + func handleModeratorGroupCmd(c *Command) (handled bool) { if strings.HasPrefix(c.message, "/m ") || strings.HasPrefix(c.message, "/n ") { if strings.HasPrefix(c.message, "/n ") { @@ -1287,3 +1295,15 @@ func handleErrorCmd(c *Command) (handled bool) { } return } + +func handleSystemCmd(c *Command) (handled bool) { + if strings.HasPrefix(c.message, "/system ") || strings.HasPrefix(c.message, "/sys ") { + if strings.HasPrefix(c.message, "/sys ") { + c.message = strings.Replace(c.message, "/sys ", "/system ", 1) + } + c.message = strings.TrimPrefix(c.message, "/system ") + c.systemMsg = true + return true + } + return false +} diff --git a/pkg/web/handlers/api/v1/topBarHandler.go b/pkg/web/handlers/api/v1/topBarHandler.go @@ -454,6 +454,7 @@ type Command struct { editMsg *database.ChatMessage // If we're editing a message groupID *int64 // If the message is for a subgroup hellbanMsg bool // Is the message will be marked HB + systemMsg bool // Is the message system modMsg bool // Is the message part of the "moderators" group c echo.Context zeroUser *database.User // Cache the zero (@0) user diff --git a/pkg/web/handlers/api/v1/werewolf.go b/pkg/web/handlers/api/v1/werewolf.go @@ -334,7 +334,7 @@ func (b *Werewolf) Narrate(msg string, toUserID *database.UserID, groupID *int64 } func (b *Werewolf) NarrateRaw(msg string, toUserID *database.UserID, groupID *int64) { - _, _ = database.CreateOrEditMessage(nil, msg, msg, "", b.roomID, b.narratorID, toUserID, nil, groupID, false, false) + _, _ = database.CreateOrEditMessage(nil, msg, msg, "", b.roomID, b.narratorID, toUserID, nil, groupID, false, false, false) } // Display roles assigned at beginning of the Game