完善站点运营设置:分路由管理、登录可见评论、邮件模板内联与关闭注册 SSR。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-23 00:17:00 +08:00
parent acde7ee288
commit 6f054a903c
98 changed files with 8239 additions and 2073 deletions

View File

@@ -31,6 +31,7 @@ var (
// PostFileService 帖子文件附件(私有目录 + API 下载)
type PostFileService struct {
ops *Operations
db *gorm.DB
dir string // data/private/files
setting *SettingService
@@ -132,6 +133,13 @@ func (s *PostFileService) SaveDraftFile(userID uint, originalName string, src io
stored := hex.EncodeToString(raw) + ext
full := absPath(s.dir, stored)
tmp := full + ".partial"
if s.ops != nil {
release, e := s.ops.BeginTemporary(tmp)
if e != nil {
return nil, e
}
defer release()
}
f, err := os.OpenFile(tmp, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0o600)
if err != nil {
@@ -168,6 +176,17 @@ func (s *PostFileService) SaveDraftFile(userID uint, originalName string, src io
Size: int(written),
PricePoints: pricePoints,
}
if s.ops != nil {
id, e := s.ops.StoreFile(full, att.MIME, false)
if e != nil {
_ = os.Remove(full)
return nil, e
}
att.ObjectID = id
if id != "" {
_ = os.Remove(full)
}
}
if err := s.db.Create(att).Error; err != nil {
_ = os.Remove(full)
return nil, err
@@ -268,6 +287,9 @@ func (s *PostFileService) DeleteOwn(userID, attID uint) error {
if err := s.db.Delete(&att).Error; err != nil {
return err
}
if s.ops != nil && att.ObjectID != "" {
return s.ops.RemoveObject(att.ObjectID)
}
_ = os.Remove(path)
return nil
}
@@ -332,3 +354,5 @@ func (s *PostFileService) EnsureAttachmentUnlocked(userID uint, att *model.PostA
}).Error
})
}
func (s *PostFileService) WithOperations(o *Operations) { s.ops = o }