commit 71e57cfba278951e6f855b8a853a9d9c92dbf482
parent a781fe03d2fe468ff9bae200046940bc5bd35395
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 4 Dec 2022 20:34:10 -0500
fix import cycle
Diffstat:
4 files changed, 38 insertions(+), 36 deletions(-)
diff --git a/pkg/database/tableUsers.go b/pkg/database/tableUsers.go
@@ -2,9 +2,7 @@ package database
import (
"dkforest/pkg/config"
- "dkforest/pkg/managers"
"errors"
- "fmt"
"strings"
"time"
@@ -555,32 +553,3 @@ func (u *User) CanSendPM() bool {
}
return u.GeneralMessagesCount >= 20
}
-
-func (u *User) Kick(kickedBy User) {
- silent := u.IsHellbanned
- u.kick(kickedBy, silent)
-}
-
-func (u *User) SilentKick(kickedBy User) {
- u.kick(kickedBy, true)
-}
-
-func (u *User) kick(kickedBy User, silent bool) {
- NewAudit(kickedBy, fmt.Sprintf("kick %s #%d", u.Username, u.ID))
- u.Verified = false
- u.DoSave()
-
- // Remove user from the user cache
- managers.ActiveUsers.RemoveUser(u.ID)
-
- // Purge user messages
- if err := DeleteUserChatMessages(u.ID); err != nil {
- logrus.Error(err)
- }
-
- // If user is HB, do not display system message
- if !silent {
- // Display kick message
- CreateKickMsg(*u, kickedBy)
- }
-}
diff --git a/pkg/database/utils/utils.go b/pkg/database/utils/utils.go
@@ -3,7 +3,9 @@ package utils
import (
"dkforest/pkg/config"
"dkforest/pkg/database"
+ "dkforest/pkg/managers"
"dkforest/pkg/utils"
+ "fmt"
"github.com/sirupsen/logrus"
)
@@ -51,3 +53,32 @@ func DoParseUserID(v string) (out database.UserID) {
out, _ = ParseUserID(v)
return
}
+
+func Kick(kicked, kickedBy database.User) {
+ silent := kicked.IsHellbanned
+ kick(kicked, kickedBy, silent)
+}
+
+func SilentKick(kicked, kickedBy database.User) {
+ kick(kicked, kickedBy, true)
+}
+
+func kick(kicked, kickedBy database.User, silent bool) {
+ database.NewAudit(kickedBy, fmt.Sprintf("kick %s #%d", kicked.Username, kicked.ID))
+ kicked.Verified = false
+ kicked.DoSave()
+
+ // Remove user from the user cache
+ managers.ActiveUsers.RemoveUser(kicked.ID)
+
+ // Purge user messages
+ if err := database.DeleteUserChatMessages(kicked.ID); err != nil {
+ logrus.Error(err)
+ }
+
+ // If user is HB, do not display system message
+ if !silent {
+ // Display kick message
+ database.CreateKickMsg(kicked, kickedBy)
+ }
+}
diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go
@@ -4,6 +4,7 @@ import (
"dkforest/pkg/clockwork"
"dkforest/pkg/config"
"dkforest/pkg/database"
+ dutils "dkforest/pkg/database/utils"
"dkforest/pkg/managers"
"dkforest/pkg/utils"
"errors"
@@ -178,7 +179,7 @@ func handleKickCmd(c *Command) (handled bool) {
return true
}
- user.Kick(*c.authUser)
+ dutils.Kick(user, *c.authUser)
c.err = ErrRedirect
return true
diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go
@@ -2,6 +2,7 @@ package v1
import (
"dkforest/pkg/database"
+ dutils "dkforest/pkg/database/utils"
"dkforest/pkg/utils"
"errors"
"github.com/sirupsen/logrus"
@@ -35,13 +36,13 @@ func checkSpam(origMessage string, authUser *database.User) error {
strings.Contains(lowerCaseMessage, "i wanna see gore") ||
strings.Contains(lowerCaseMessage, "how can i make money") ||
strings.Contains(lowerCaseMessage, "any links for scary stuff") {
- authUser.SilentKick(*authUser)
+ dutils.SilentKick(*authUser, *authUser)
return ErrSpamFilterTriggered
}
}
if authUser.GeneralMessagesCount < 20 || time.Since(authUser.CreatedAt) < 5*time.Hour {
if strings.Contains(lowerCaseMessage, "cp link") {
- authUser.SilentKick(*authUser)
+ dutils.SilentKick(*authUser, *authUser)
return ErrSpamFilterTriggered
}
}
@@ -50,7 +51,7 @@ func checkSpam(origMessage string, authUser *database.User) error {
if authUser.IsModerator() {
return ErrSpamFilterTriggered
}
- authUser.SilentKick(*authUser)
+ dutils.SilentKick(*authUser, *authUser)
return ErrSpamFilterTriggered
}
@@ -78,7 +79,7 @@ func checkSpam(origMessage string, authUser *database.User) error {
if authUser.GeneralMessagesCount < 20 || time.Since(authUser.CreatedAt) < 5*time.Hour {
if wordsMap["cp"] > 0 && (wordsMap["link"] > 0 || wordsMap["links"] > 0) {
- authUser.SilentKick(*authUser)
+ dutils.SilentKick(*authUser, *authUser)
return ErrSpamFilterTriggered
}
}