diff --git a/object/enforcer.go b/object/enforcer.go index 02a6a43b..468668fc 100644 --- a/object/enforcer.go +++ b/object/enforcer.go @@ -246,7 +246,7 @@ func (enforcer *Enforcer) LoadModelCfg() error { return nil } - model, err := GetModel(enforcer.Model) + model, err := GetModelEx(enforcer.Model) if err != nil { return err } else if model == nil { diff --git a/object/model.go b/object/model.go index 19b73c73..a2832fc6 100644 --- a/object/model.go +++ b/object/model.go @@ -84,6 +84,19 @@ func GetModel(id string) (*Model, error) { return getModel(owner, name) } +func GetModelEx(id string) (*Model, error) { + owner, name := util.GetOwnerAndNameFromId(id) + model, err := getModel(owner, name) + if err != nil { + return nil, err + } + if model != nil { + return model, nil + } + + return getModel("built-in", name) +} + func UpdateModelWithCheck(id string, modelObj *Model) error { // check model grammar _, err := model.NewModelFromString(modelObj.ModelText) diff --git a/object/permission.go b/object/permission.go index d08a97ba..4d6bd78e 100644 --- a/object/permission.go +++ b/object/permission.go @@ -151,7 +151,7 @@ func UpdatePermission(id string, permission *Permission) (bool, error) { } if permission.ResourceType == "Application" { - model, err := GetModel(util.GetId(owner, permission.Model)) + model, err := GetModelEx(util.GetId(owner, permission.Model)) if err != nil { return false, err } else if model == nil {