MCPcopy Index your code
hub / github.com/apache/casbin / AddPolicy

Method AddPolicy

model/policy.go:197–225  ·  view source on GitHub ↗

AddPolicy adds a policy rule to the model.

(sec string, ptype string, rule []string)

Source from the content-addressed store, hash-verified

195
196// AddPolicy adds a policy rule to the model.
197func (model Model) AddPolicy(sec string, ptype string, rule []string) error {
198 assertion, err := model.GetAssertion(sec, ptype)
199 if err != nil {
200 return err
201 }
202 assertion.Policy = append(assertion.Policy, rule)
203 assertion.PolicyMap[strings.Join(rule, DefaultSep)] = len(model[sec][ptype].Policy) - 1
204
205 hasPriority := false
206 if _, ok := assertion.FieldIndexMap[constant.PriorityIndex]; ok {
207 hasPriority = true
208 }
209 if sec == "p" && hasPriority {
210 if idxInsert, err := strconv.Atoi(rule[assertion.FieldIndexMap[constant.PriorityIndex]]); err == nil {
211 i := len(assertion.Policy) - 1
212 for ; i > 0; i-- {
213 idx, err := strconv.Atoi(assertion.Policy[i-1][assertion.FieldIndexMap[constant.PriorityIndex]])
214 if err != nil || idx <= idxInsert {
215 break
216 }
217 assertion.Policy[i] = assertion.Policy[i-1]
218 assertion.PolicyMap[strings.Join(assertion.Policy[i-1], DefaultSep)]++
219 }
220 assertion.Policy[i] = rule
221 assertion.PolicyMap[strings.Join(rule, DefaultSep)] = i
222 }
223 }
224 return nil
225}
226
227// AddPolicies adds policy rules to the model.
228func (model Model) AddPolicies(sec string, ptype string, rules [][]string) error {

Callers 1

Calls 1

GetAssertionMethod · 0.95

Tested by

no test coverage detected