1212// See the License for the specific language governing permissions and
1313// limitations under the License.
1414
15- extension CoreAPI {
15+ extension Enforcer {
1616 //MARK: InternalApi
1717 func addPolicyInternal( sec: String , ptype: String , rule: [ String ] ) async throws -> Bool {
1818 let _bool = try await adapter. addPolicy ( sec: sec, ptype: ptype, rule: rule)
@@ -21,7 +21,7 @@ extension CoreAPI {
2121 }
2222 let ruleAdded = model. addPolicy ( sec: sec, ptype: ptype, rule: rule)
2323 let eventData = EventData . AddPolicy ( sec, ptype, rule)
24- return try afterOperatePolicy ( sec: sec, oped: ruleAdded, d: eventData, t: ruleAdded)
24+ return try await afterOperatePolicy ( sec: sec, oped: ruleAdded, d: eventData, t: ruleAdded)
2525 }
2626
2727 func addPoliciesInternal( sec: String , ptype: String , rules: [ [ String ] ] ) async throws -> Bool {
@@ -31,7 +31,7 @@ extension CoreAPI {
3131 }
3232 let rulesAdded = model. addPolicies ( sec: sec, ptype: ptype, rules: rules)
3333 let eventData = EventData . AddPolicies ( sec, ptype, rules)
34- return try afterOperatePolicy ( sec: sec, oped: rulesAdded, d: eventData, t: rulesAdded)
34+ return try await afterOperatePolicy ( sec: sec, oped: rulesAdded, d: eventData, t: rulesAdded)
3535 }
3636
3737 func removePolicyInternal( sec: String , ptype: String , rule: [ String ] ) async throws -> Bool {
@@ -41,7 +41,7 @@ extension CoreAPI {
4141 }
4242 let ruleRemoved = model. removePolicy ( sec: sec, ptype: ptype, rule: rule)
4343 let eventData = EventData . RemovePolicy ( sec, ptype, rule)
44- return try afterOperatePolicy ( sec: sec, oped: ruleRemoved, d: eventData, t: ruleRemoved)
44+ return try await afterOperatePolicy ( sec: sec, oped: ruleRemoved, d: eventData, t: ruleRemoved)
4545 }
4646
4747 func removePoliciesInternal( sec: String , ptype: String , rules: [ [ String ] ] ) async throws -> Bool {
@@ -51,7 +51,7 @@ extension CoreAPI {
5151 }
5252 let rulesRemoved = model. removePolicies ( sec: sec, ptype: ptype, rules: rules)
5353 let eventData = EventData . RemovePolicies ( sec, ptype, rules)
54- return try afterOperatePolicy ( sec: sec, oped: rulesRemoved, d: eventData, t: rulesRemoved)
54+ return try await afterOperatePolicy ( sec: sec, oped: rulesRemoved, d: eventData, t: rulesRemoved)
5555 }
5656
5757 func removeFilteredPolicyInternal( sec: String , ptype: String , fieldIndex: Int , fieldValues: [ String ] ) async throws -> ( Bool , [ [ String ] ] ) {
@@ -61,19 +61,17 @@ extension CoreAPI {
6161 }
6262 let ( rolesRemoved, rules) = model. removeFilteredPolicy ( sec: sec, ptype: ptype, fieldIndex: fieldIndex, fieldValues: fieldValues)
6363 let eventData = EventData . RemoveFilteredPolicy ( sec, ptype, rules)
64- return try afterOperatePolicy ( sec: sec, oped: rolesRemoved, d: eventData, t: ( rolesRemoved, rules) )
64+ return try await afterOperatePolicy ( sec: sec, oped: rolesRemoved, d: eventData, t: ( rolesRemoved, rules) )
6565 }
6666
67- private func afterOperatePolicy< T> ( sec: String , oped: Bool , d: EventData , t: T ) throws -> T {
67+ private func afterOperatePolicy< T> ( sec: String , oped: Bool , d: EventData , t: T ) async throws -> T {
6868 if oped {
69- emit ( e: Event . PolicyChange, d: d)
70- emit ( e: Event . ClearCache, d: EventData . ClearCache)
71- }
72- if sec != " g " || !hasAutoBuildRoleLinksEnabled( ) {
73- return t
69+ await emit ( e: Event . PolicyChange, d: d)
70+ await emit ( e: Event . ClearCache, d: EventData . ClearCache)
7471 }
72+ let needsBuild = hasAutoBuildRoleLinksEnabled ( )
73+ if sec != " g " || !needsBuild { return t }
7574 try buildIncrementalRoleLinks ( eventData: d) . get ( )
7675 return t
7776 }
7877}
79-
0 commit comments