fix: port mailbox validation from im server
This commit is contained in:
+17
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user