fix: port mailbox validation from im server

This commit is contained in:
richjohnrambo
2026-09-15 13:31:45 +08:00
parent 1d994c9302
commit cf08f7ceeb
5 changed files with 95 additions and 2 deletions
+17 -1
View File
@@ -719,8 +719,24 @@ func (s *Store) MailboxConfig(ctx context.Context) (*MailboxConfig, error) {
}
func (s *Store) CreateMailboxSubmission(ctx context.Context, userID int64, submission MailboxSubmission, idempotencyKey string) (*MailboxSubmission, error) {
cfg, err := s.MailboxConfig(ctx)
if err != nil {
return nil, err
}
submission.Subject = strings.TrimSpace(submission.Subject)
submission.Content = strings.TrimSpace(submission.Content)
if !cfg.Enabled || (submission.Anonymous && !cfg.AllowAnonymous) {
return nil, ErrPolicy
}
maxLength := cfg.MaxLength
if maxLength <= 0 {
maxLength = 5000
}
if len([]rune(submission.Subject)) > 200 || len([]rune(submission.Content)) > maxLength {
return nil, ErrPolicy
}
now := time.Now().UTC().Round(time.Millisecond)
_, err := s.db.ExecContext(ctx, `INSERT INTO im_mailbox_submissions(submission_id,sender_id,subject,content,anonymous,attachment_file_ids,notice_version,idempotency_key,status,submitted_at)
_, err = s.db.ExecContext(ctx, `INSERT INTO im_mailbox_submissions(submission_id,sender_id,subject,content,anonymous,attachment_file_ids,notice_version,idempotency_key,status,submitted_at)
VALUES(?,?,?,?,?,?,?,?,?,?)`, submission.SubmissionID, userID, submission.Subject, submission.Content, submission.Anonymous, submission.AttachmentFileIDs, submission.NoticeVersion, idempotencyKey, "received", now)
if isDuplicate(err) && idempotencyKey != "" {
var existing MailboxSubmission