Files
ttstd-infinite-canvas/backend/internal/app/provider_resource_helpers.go
ddcat666 4272b0e499 fix(media): 资源访问 - 签名地址有效期跟随后台策略并放开服务器访问地址限制
平台展示与厂商读取的签名地址有效期改为读取「资源与请求策略」,默认均为 4 小时,不再硬编码 5 分钟。服务器访问地址只校验 http/https 格式,允许本机、局域网或 HTTP 地址,模型读取平台资源不再强制 HTTPS 公网地址。
2026-09-30 03:38:31 +08:00

29 lines
1.0 KiB
Go

package app
import (
"errors"
"time"
"infinite-canvas/backend/internal/assets"
"infinite-canvas/backend/internal/model"
)
// ResourceForUser 是 Provider worker 读取资源时必须经过的 service 层归属校验。
func (s *Service) ResourceForUser(actor *model.User, id string) (*model.Resource, error) {
if actor == nil || actor.ID == "" {
return nil, errors.New("用户身份无效")
}
return s.repo.ResourceForUser(actor.ID, id)
}
// providerResourceURL 只能接收已经完成用户归属和 ready 状态校验的资源,
// 并为上游签发短时地址;它不是绕过权限校验的通用资源 URL 生成器。
// expiresAt 为零值时使用后台「厂商访问地址有效期」(默认 4 小时),非零时只能进一步缩短。
func (s *Service) providerResourceURL(resource *model.Resource, expiresAt time.Time) (string, error) {
access, err := s.resolveResourceAccess(resource, ResourceAccessOptions{Purpose: assets.PurposeProvider, ExpiresAt: expiresAt})
if err != nil {
return "", err
}
return access.URL, nil
}