fix platform workflow integrity and permissions

This commit is contained in:
david
2026-07-29 14:03:10 +08:00
parent afd9dbdeb5
commit d4799cd320
44 changed files with 797 additions and 224 deletions

View File

@@ -5,6 +5,7 @@ import (
"encoding/json"
"errors"
"io"
"time"
"git.apinb.com/bsm-sdk/core/errcode"
"git.apinb.com/bsm-sdk/core/infra"
@@ -40,6 +41,9 @@ func rewriteSettlementSubject(ctx *gin.Context) error {
if err := ctx.ShouldBindJSON(&input); err != nil {
return err
}
if !validSettlementPeriod(input["period_start"], input["period_end"]) {
return errors.New("invalid settlement period")
}
subjectType, _ := input["subject_type"].(string)
identity, _ := input["subject_identity"].(string)
var model any
@@ -66,3 +70,14 @@ func rewriteSettlementSubject(ctx *gin.Context) error {
ctx.Request.Body = io.NopCloser(bytes.NewReader(encoded))
return nil
}
func validSettlementPeriod(startValue, endValue any) bool {
startText, startOK := startValue.(string)
endText, endOK := endValue.(string)
if !startOK || !endOK {
return false
}
start, startErr := time.Parse(time.RFC3339, startText)
end, endErr := time.Parse(time.RFC3339, endText)
return startErr == nil && endErr == nil && end.After(start)
}

View File

@@ -0,0 +1,12 @@
package fin
import "testing"
func TestSettlementPeriodMustMoveForward(t *testing.T) {
if !validSettlementPeriod("2026-01-01T00:00:00Z", "2026-02-01T00:00:00Z") {
t.Fatal("valid settlement period was rejected")
}
if validSettlementPeriod("2026-02-01T00:00:00Z", "2026-01-01T00:00:00Z") {
t.Fatal("reversed settlement period was accepted")
}
}