commit 2c84be74339ee914b1c2bd4fb896d54224a88e2a
parent 854a2d1c036676580daef25f869a672ad14ed483
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Thu, 19 Jan 2023 22:36:02 -0800
add purge admin command
Diffstat:
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
+}