Files
common-server-public/archive/bbs-go/server/internal/spam/spam.go
12600k-rog-d4 8f4d399cfd 20251209
2025-12-09 20:33:57 +08:00

54 lines
1.3 KiB
Go

package spam
import (
"bbs-go/internal/models"
"log/slog"
)
var strategies []Strategy
func init() {
strategies = append(strategies, &EmailVerifyStrategy{})
strategies = append(strategies, &CaptchaStrategy{})
// strategies = append(strategies, &PostFrequencyStrategy{})
}
func CheckTopic(user *models.User, form models.CreateTopicForm) error {
if len(strategies) == 0 {
return nil
}
for _, strategy := range strategies {
if err := strategy.CheckTopic(user, form); err != nil {
slog.Warn("[Topic]命中策略", slog.Any("strategy", strategy.Name()), slog.Any("userId", user.Id))
return err
}
}
return nil
}
func CheckArticle(user *models.User, form models.CreateArticleForm) error {
if len(strategies) == 0 {
return nil
}
for _, strategy := range strategies {
if err := strategy.CheckArticle(user, form); err != nil {
slog.Warn("[Article]命中策略", slog.Any("strategy", strategy.Name()), slog.Any("userId", user.Id))
return err
}
}
return nil
}
func CheckComment(user *models.User, form models.CreateCommentForm) error {
if len(strategies) == 0 {
return nil
}
for _, strategy := range strategies {
if err := strategy.CheckComment(user, form); err != nil {
slog.Warn("[Comment]命中策略", slog.Any("strategy", strategy.Name()), slog.Any("userId", user.Id))
return err
}
}
return nil
}