fix platform authorization and workflow integrity

This commit is contained in:
david
2026-07-29 15:54:20 +08:00
parent a7d318a013
commit 969d7271f9
26 changed files with 566 additions and 161 deletions

View File

@@ -74,11 +74,19 @@ func ActiveRecords(query *gorm.DB) *gorm.DB {
}
func ListPage[T any](ctx *gin.Context) {
ListPageFiltered[T](ctx, nil)
}
// ListPageFiltered applies a resource-specific exact filter before pagination.
func ListPageFiltered[T any](ctx *gin.Context, filter func(*gorm.DB) *gorm.DB) {
page, size := PageSize(ctx)
var list []T
var total int64
model := new(T)
databaseQuery := ApplyKeywordFilter(ctx, ActiveRecords(impl.DBService.Model(model)), model)
if filter != nil {
databaseQuery = filter(databaseQuery)
}
if err := databaseQuery.Count(&total).Error; err != nil {
infra.Response.Error(ctx, err)
return
@@ -172,7 +180,7 @@ func gormColumn(tag string) string {
func GetByIdentity[T any](ctx *gin.Context) {
var data T
if err := impl.DBService.Where("identity = ?", ctx.Param("identity")).First(&data).Error; err != nil {
if err := ActiveRecords(impl.DBService).Where("identity = ?", ctx.Param("identity")).First(&data).Error; err != nil {
RespondRecordError(ctx, err)
return
}

View File

@@ -56,7 +56,7 @@ func ListResource(ctx *gin.Context, model any) {
func GetResource(ctx *gin.Context, model any) {
data := reflect.New(reflect.TypeOf(model).Elem())
if err := impl.DBService.Where("identity = ?", ctx.Param("identity")).First(data.Interface()).Error; err != nil {
if err := ActiveRecords(impl.DBService).Where("identity = ?", ctx.Param("identity")).First(data.Interface()).Error; err != nil {
RespondRecordError(ctx, err)
return
}