fix(images): 私有图片支持 Bearer 鉴权,画布节点改为带鉴权 blob 加载

This commit is contained in:
2026-10-12 13:54:34 +08:00
parent c559e712b6
commit 256eeb3234
5 changed files with 84 additions and 45 deletions
+16 -1
View File
@@ -48,6 +48,21 @@ func (s *ImageAccessService) IsPublic(ctx context.Context, rel string) (bool, er
return s.showcase.IsPublicFile(ctx, rel)
}
func (s *ImageAccessService) IsAuthorized(ctx context.Context, sessionCookie, owner string) (bool, error) {
func (s *ImageAccessService) IsAuthorized(ctx context.Context, authHeader, sessionCookie, owner string) (bool, error) {
// Private images may be requested by an <img> tag with the session cookie
// OR by the SPA via a Bearer token. Admins may view anyone's images.
if authHeader != "" {
user, _, err := s.auth.CurrentUserFromBearer(ctx, authHeader)
if err != nil {
return false, err
}
if user == nil {
return false, nil
}
if user.Role == "admin" {
return true, nil
}
return s.auth.OwnsImageDir(user, owner), nil
}
return s.auth.IsAuthorizedForPrivateImage(ctx, sessionCookie, owner)
}