Validate gallery images.

This commit is contained in:
2025-11-07 22:35:07 +08:00
parent 853647edbc
commit 8e2f326532

View File

@@ -7,6 +7,7 @@ import (
"nysoure/server/model" "nysoure/server/model"
"nysoure/server/search" "nysoure/server/search"
"nysoure/server/utils" "nysoure/server/utils"
"slices"
"strconv" "strconv"
"strings" "strings"
@@ -56,6 +57,18 @@ func CreateResource(uid uint, params *ResourceParams) (uint, error) {
}, },
} }
} }
gallery := make([]uint, 0, len(params.Gallery))
for _, id := range params.Gallery {
if slices.Contains(params.Images, id) {
gallery = append(gallery, id)
}
}
nsfw := make([]uint, 0, len(params.GalleryNsfw))
for _, id := range params.GalleryNsfw {
if slices.Contains(gallery, id) {
nsfw = append(nsfw, id)
}
}
r := model.Resource{ r := model.Resource{
Title: params.Title, Title: params.Title,
AlternativeTitles: params.AlternativeTitles, AlternativeTitles: params.AlternativeTitles,
@@ -64,8 +77,8 @@ func CreateResource(uid uint, params *ResourceParams) (uint, error) {
Images: images, Images: images,
Tags: tags, Tags: tags,
UserID: uid, UserID: uid,
Gallery: params.Gallery, Gallery: gallery,
GalleryNsfw: params.GalleryNsfw, GalleryNsfw: nsfw,
} }
if r, err = dao.CreateResource(r); err != nil { if r, err = dao.CreateResource(r); err != nil {
return 0, err return 0, err
@@ -452,12 +465,25 @@ func EditResource(uid, rid uint, params *ResourceParams) error {
return model.NewUnAuthorizedError("You have not permission to edit this resource") return model.NewUnAuthorizedError("You have not permission to edit this resource")
} }
gallery := make([]uint, 0, len(params.Gallery))
for _, id := range params.Gallery {
if slices.Contains(params.Images, id) {
gallery = append(gallery, id)
}
}
nsfw := make([]uint, 0, len(params.GalleryNsfw))
for _, id := range params.GalleryNsfw {
if slices.Contains(gallery, id) {
nsfw = append(nsfw, id)
}
}
r.Title = params.Title r.Title = params.Title
r.AlternativeTitles = params.AlternativeTitles r.AlternativeTitles = params.AlternativeTitles
r.Article = params.Article r.Article = params.Article
r.Links = params.Links r.Links = params.Links
r.Gallery = params.Gallery r.Gallery = gallery
r.GalleryNsfw = params.GalleryNsfw r.GalleryNsfw = nsfw
images := make([]model.Image, len(params.Images)) images := make([]model.Image, len(params.Images))
for i, id := range params.Images { for i, id := range params.Images {