MCPcopy
hub / github.com/apache/casbin / updateFilteredPoliciesWithoutNotify

Method updateFilteredPoliciesWithoutNotify

internal_api.go:317–375  ·  view source on GitHub ↗
(sec string, ptype string, newRules [][]string, fieldIndex int, fieldValues ...string)

Source from the content-addressed store, hash-verified

315}
316
317func (e *Enforcer) updateFilteredPoliciesWithoutNotify(sec string, ptype string, newRules [][]string, fieldIndex int, fieldValues ...string) ([][]string, error) {
318 var (
319 oldRules [][]string
320 err error
321 )
322
323 if _, err = e.model.GetAssertion(sec, ptype); err != nil {
324 return oldRules, err
325 }
326
327 if e.shouldPersist() {
328 if oldRules, err = e.adapter.(persist.UpdatableAdapter).UpdateFilteredPolicies(sec, ptype, newRules, fieldIndex, fieldValues...); err != nil {
329 if err.Error() != notImplemented {
330 return nil, err
331 }
332 }
333 // For compatibility, because some adapters return oldRules containing ptype, see https://github.com/casbin/xorm-adapter/issues/49
334 for i, oldRule := range oldRules {
335 if len(oldRules[i]) == len(e.model[sec][ptype].Tokens)+1 {
336 oldRules[i] = oldRule[1:]
337 }
338 }
339 }
340
341 if e.dispatcher != nil && e.autoNotifyDispatcher {
342 return oldRules, e.dispatcher.UpdateFilteredPolicies(sec, ptype, oldRules, newRules)
343 }
344
345 ruleChanged, err := e.model.RemovePolicies(sec, ptype, oldRules)
346 if err != nil {
347 return oldRules, err
348 }
349 err = e.model.AddPolicies(sec, ptype, newRules)
350 if err != nil {
351 return oldRules, err
352 }
353 ruleChanged = ruleChanged && len(newRules) != 0
354 if !ruleChanged {
355 return make([][]string, 0), nil
356 }
357
358 if sec == "g" {
359 err := e.BuildIncrementalRoleLinks(model.PolicyRemove, ptype, oldRules) // remove the old rules
360 if err != nil {
361 return oldRules, err
362 }
363 err = e.BuildIncrementalRoleLinks(model.PolicyAdd, ptype, newRules) // add the new rules
364 if err != nil {
365 return oldRules, err
366 }
367
368 // Validate constraints after updating filtered grouping policies
369 if err := e.validateConstraintsForGroupingPolicy(); err != nil {
370 return oldRules, err
371 }
372 }
373
374 return oldRules, nil

Callers 1

Calls 8

shouldPersistMethod · 0.95
GetAssertionMethod · 0.80
RemovePoliciesMethod · 0.65
AddPoliciesMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected