NewEnforcer creates an enforcer via file or DB. File: e := casbin.NewEnforcer("path/to/basic_model.conf", "path/to/basic_policy.csv") MySQL DB: a := mysqladapter.NewDBAdapter("mysql", "mysql_username:mysql_password@tcp(127.0.0.1:3306)/") e := casbin.NewEnforcer("path/to/basic_model.conf", a)
(params ...interface{})
| 83 | // a := mysqladapter.NewDBAdapter("mysql", "mysql_username:mysql_password@tcp(127.0.0.1:3306)/") |
| 84 | // e := casbin.NewEnforcer("path/to/basic_model.conf", a) |
| 85 | func NewEnforcer(params ...interface{}) (*Enforcer, error) { |
| 86 | e := &Enforcer{} |
| 87 | |
| 88 | parsedParamLen := 0 |
| 89 | paramLen := len(params) |
| 90 | |
| 91 | switch paramLen - parsedParamLen { |
| 92 | case 2: |
| 93 | switch p0 := params[0].(type) { |
| 94 | case string: |
| 95 | switch p1 := params[1].(type) { |
| 96 | case string: |
| 97 | err := e.InitWithFile(p0, p1) |
| 98 | if err != nil { |
| 99 | return nil, err |
| 100 | } |
| 101 | default: |
| 102 | err := e.InitWithAdapter(p0, p1.(persist.Adapter)) |
| 103 | if err != nil { |
| 104 | return nil, err |
| 105 | } |
| 106 | } |
| 107 | default: |
| 108 | switch params[1].(type) { |
| 109 | case string: |
| 110 | return nil, errors.New("invalid parameters for enforcer") |
| 111 | default: |
| 112 | err := e.InitWithModelAndAdapter(p0.(model.Model), params[1].(persist.Adapter)) |
| 113 | if err != nil { |
| 114 | return nil, err |
| 115 | } |
| 116 | } |
| 117 | } |
| 118 | case 1: |
| 119 | switch p0 := params[0].(type) { |
| 120 | case string: |
| 121 | err := e.InitWithFile(p0, "") |
| 122 | if err != nil { |
| 123 | return nil, err |
| 124 | } |
| 125 | default: |
| 126 | err := e.InitWithModelAndAdapter(p0.(model.Model), nil) |
| 127 | if err != nil { |
| 128 | return nil, err |
| 129 | } |
| 130 | } |
| 131 | case 0: |
| 132 | return e, nil |
| 133 | default: |
| 134 | return nil, errors.New("invalid parameters for enforcer") |
| 135 | } |
| 136 | |
| 137 | return e, nil |
| 138 | } |
| 139 | |
| 140 | // InitWithFile initializes an enforcer with a model file and a policy file. |
| 141 | func (e *Enforcer) InitWithFile(modelPath string, policyPath string) error { |
searching dependent graphs…