feat: change builtInMaxFields to 6 in Casbin policy length (#4130)

This commit is contained in:
Attack825
2025-08-29 22:39:39 +08:00
committed by GitHub
parent f26f56e88b
commit fbc16ef124
2 changed files with 14 additions and 6 deletions

View File

@@ -49,7 +49,7 @@ type Permission struct {
State string `xorm:"varchar(100)" json:"state"`
}
const builtInAvailableField = 5 // Casdoor built-in adapter, use V5 to filter permission, so has 5 available field
const builtInMaxFields = 6 // Casdoor built-in adapter, use V5 to filter permission, so has 6 max field
func GetPermissionCount(owner, field, value string) (int64, error) {
session := GetSession(owner, -1, -1, field, value, "", "")

View File

@@ -410,15 +410,23 @@ m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act`
policyDefinition := strings.Split(cfg.String("policy_definition::p"), ",")
fieldsNum := len(policyDefinition)
if fieldsNum > builtInAvailableField {
return nil, fmt.Errorf("the maximum policy_definition field number cannot exceed %d, got %d", builtInAvailableField, fieldsNum)
if fieldsNum > builtInMaxFields {
return nil, fmt.Errorf("the maximum policy_definition field number cannot exceed %d, got %d", builtInMaxFields, fieldsNum)
}
// filled empty field with "" and V5 with "permissionId"
for i := builtInAvailableField - fieldsNum; i > 0; i-- {
policyDefinition = append(policyDefinition, "")
if fieldsNum == builtInMaxFields {
sixthField := strings.TrimSpace(policyDefinition[builtInMaxFields-1])
if sixthField != "permissionId" {
return nil, fmt.Errorf("when adding policies with permissions, the sixth field of policy_definition must be permissionId, got %s", policyDefinition[builtInMaxFields-1])
}
} else {
needFill := builtInMaxFields - fieldsNum
for i := 0; i < needFill-1; i++ {
policyDefinition = append(policyDefinition, "")
}
policyDefinition = append(policyDefinition, "permissionId")
}
policyDefinition = append(policyDefinition, "permissionId")
m, err := model.NewModelFromString(modelText)
if err != nil {