dkforest

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

commit 2c84be74339ee914b1c2bd4fb896d54224a88e2a
parent 854a2d1c036676580daef25f869a672ad14ed483
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu, 19 Jan 2023 22:36:02 -0800

add purge admin command

Diffstat:
Mpkg/web/handlers/api/v1/handlers.go | 1+
Mpkg/web/handlers/api/v1/slashInterceptor.go | 18+++++++++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go @@ -43,6 +43,7 @@ var editRgx = regexp.MustCompile(`^/e (` + chatTs + `)\s(?s:(.*))`) var hbmtRgx = regexp.MustCompile(`^/hbmt (` + chatTs + `)$`) var chessRgx = regexp.MustCompile(`^/chess ` + optAtGUser) var inboxRgx = regexp.MustCompile(`^/inbox ` + optAtGUser + `(\s-e)?\s(?s:(.*))`) +var purgeRgx = regexp.MustCompile(`^/purge ` + optAtGUserOr0) var profileRgx = regexp.MustCompile(`^/p ` + optAtGUserOr0) var kickRgx = regexp.MustCompile(`^/(?:kick|k) ` + optAtGUser) var setUrlRgx = regexp.MustCompile(`^/seturl (.+)`) diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go @@ -125,7 +125,8 @@ func handleModeratorCmd(c *Command) (handled bool) { func handleAdminCmd(c *Command) (handled bool) { if c.authUser.IsAdmin { return handleSystemCmd(c) || - handleSetChatRoomExternalLink(c) + handleSetChatRoomExternalLink(c) || + handlePurge(c) } return false } @@ -1429,3 +1430,18 @@ func handleSetChatRoomExternalLink(c *Command) (handled bool) { } return } + +func handlePurge(c *Command) (handled bool) { + if m := purgeRgx.FindStringSubmatch(c.message); len(m) == 2 { + username := m[1] + user, err := database.GetUserByUsername(username) + if err != nil { + c.err = err + return true + } + database.NewAudit(*c.authUser, fmt.Sprintf("purge %s #%d", user.Username, user.ID)) + _ = database.DeleteUserChatMessages(user.ID) + return true + } + return +}