dkforest

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

commit 71e57cfba278951e6f855b8a853a9d9c92dbf482
parent a781fe03d2fe468ff9bae200046940bc5bd35395
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sun,  4 Dec 2022 20:34:10 -0500

fix import cycle

Diffstat:
Mpkg/database/tableUsers.go | 31-------------------------------
Mpkg/database/utils/utils.go | 31+++++++++++++++++++++++++++++++
Mpkg/web/handlers/api/v1/slashInterceptor.go | 3++-
Mpkg/web/handlers/api/v1/spamInterceptor.go | 9+++++----
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 } }