From 48b2a8d470634ba1eea71f642de53b663cb814ec Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 15 Feb 2025 18:09:51 +0800 Subject: [PATCH] :sparkles: Separate news permission level --- pkg/internal/models/source.go | 13 +++++++------ pkg/internal/server/api/news_api.go | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/pkg/internal/models/source.go b/pkg/internal/models/source.go index aa8af64..a81ab94 100644 --- a/pkg/internal/models/source.go +++ b/pkg/internal/models/source.go @@ -1,10 +1,11 @@ package models type NewsSource struct { - ID string `json:"id"` - Label string `json:"label"` - Type string `json:"type"` - Source string `json:"source"` - Depth int `json:"depth"` - Enabled bool `json:"enabled"` + ID string `json:"id"` + Label string `json:"label"` + Type string `json:"type"` + Source string `json:"source"` + Depth int `json:"depth"` + Enabled bool `json:"enabled"` + Advanced bool `json:"advanced"` } diff --git a/pkg/internal/server/api/news_api.go b/pkg/internal/server/api/news_api.go index 1987859..42de75a 100644 --- a/pkg/internal/server/api/news_api.go +++ b/pkg/internal/server/api/news_api.go @@ -1,6 +1,7 @@ package api import ( + "git.solsynth.dev/hypernet/reader/pkg/internal/services" "time" "git.solsynth.dev/hypernet/nexus/pkg/nex/sec" @@ -48,6 +49,19 @@ func listNewsArticles(c *fiber.Ctx) error { tx = tx.Where("source = ?", source) } + isAdvanced := false + if err := sec.EnsureGrantedPerm(c, "ListNewsAdvanced", true); err == nil { + isAdvanced = true + } + + var sources []string + for _, srv := range services.NewsSources { + if !isAdvanced && srv.Advanced { + continue + } + sources = append(sources, srv.ID) + } + var count int64 countTx := tx if err := countTx.Model(&models.NewsArticle{}).Count(&count).Error; err != nil {