fix platform workflow integrity and permissions
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
12
backend/api/internal/logic/platform/fin/fin_test.go
Normal file
12
backend/api/internal/logic/platform/fin/fin_test.go
Normal 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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user