@@ -513,6 +513,81 @@ bool SyncedEnforcer ::RemoveFilteredNamedGroupingPolicy(const std::string& ptype
513513 return Enforcer::RemoveFilteredNamedGroupingPolicy (ptype, fieldIndex, fieldValues);
514514}
515515
516+ // GetAllActions gets the list of actions that show up in the current policy.
517+ std::vector<std::string> SyncedEnforcer::GetAllActions () {
518+ std::unique_lock<std::shared_mutex> lock (policyMutex);
519+ return Enforcer::GetAllActions ();
520+ }
521+
522+ // GetFilteredPolicy gets all the authorization rules in the policy, field filters can be specified.
523+ PoliciesValues SyncedEnforcer::GetFilteredPolicy (int fieldIndex, std::vector<std::string> fieldValues) {
524+ std::unique_lock<std::shared_mutex> lock (policyMutex);
525+ return Enforcer::GetFilteredPolicy (fieldIndex, fieldValues);
526+ }
527+
528+ // EnforceExWithMatcher use a custom matcher and explain enforcement by informing matched rules.
529+ bool SyncedEnforcer::SyncedEnforceExWithMatcher (const std::string& matcher, std::shared_ptr<IEvaluator> evalator, std::vector<std::string>& explain) {
530+ std::unique_lock<std::shared_mutex> lock (policyMutex);
531+ return Enforcer::EnforceExWithMatcher (matcher, evalator, explain);
532+ }
533+
534+ bool SyncedEnforcer::SyncedEnforceExWithMatcher (const std::string& matcher, const DataList& params, std::vector<std::string>& explain) {
535+ std::unique_lock<std::shared_mutex> lock (policyMutex);
536+ return Enforcer::EnforceExWithMatcher (matcher, params, explain);
537+ }
538+
539+ bool SyncedEnforcer::SyncedEnforceExWithMatcher (const std::string& matcher, const DataVector& params, std::vector<std::string>& explain) {
540+ std::unique_lock<std::shared_mutex> lock (policyMutex);
541+ return Enforcer::EnforceExWithMatcher (matcher, params, explain);
542+ }
543+
544+ bool SyncedEnforcer::SyncedEnforceExWithMatcher (const std::string& matcher, const DataMap& params, std::vector<std::string>& explain) {
545+ std::unique_lock<std::shared_mutex> lock (policyMutex);
546+ return Enforcer::EnforceExWithMatcher (matcher, params, explain);
547+ }
548+
549+ // EnforceEx explain enforcement by informing matched rules.
550+ bool SyncedEnforcer::SyncedEnforceEx (std::shared_ptr<IEvaluator> evalator, std::vector<std::string>& explain) {
551+ std::unique_lock<std::shared_mutex> lock (policyMutex);
552+ return Enforcer::EnforceEx (evalator, explain);
553+ }
554+
555+ bool SyncedEnforcer::SyncedEnforceEx (const DataList& params, std::vector<std::string>& explain) {
556+ std::unique_lock<std::shared_mutex> lock (policyMutex);
557+ return Enforcer::EnforceEx (params, explain);
558+ }
559+
560+ bool SyncedEnforcer::SyncedEnforceEx (const DataVector& params, std::vector<std::string>& explain) {
561+ std::unique_lock<std::shared_mutex> lock (policyMutex);
562+ return Enforcer::EnforceEx (params, explain);
563+ }
564+
565+ bool SyncedEnforcer::SyncedEnforceEx (const DataMap& params, std::vector<std::string>& explain) {
566+ std::unique_lock<std::shared_mutex> lock (policyMutex);
567+ return Enforcer::EnforceEx (params, explain);
568+ }
569+
570+ // EnforceWithMatcher use a custom matcher to decides whether a "subject" can access a "object" with the operation "action", input parameters are usually: (matcher, sub, obj, act), use model matcher by default when matcher is "".
571+ bool SyncedEnforcer::SyncedEnforceWithMatcher (const std::string& matcher, std::shared_ptr<IEvaluator> evalator) {
572+ std::unique_lock<std::shared_mutex> lock (policyMutex);
573+ return Enforcer::EnforceWithMatcher (matcher, evalator);
574+ }
575+
576+ bool SyncedEnforcer::SyncedEnforceWithMatcher (const std::string& matcher, const DataList& params) {
577+ std::unique_lock<std::shared_mutex> lock (policyMutex);
578+ return Enforcer::EnforceWithMatcher (matcher, params);
579+ }
580+
581+ bool SyncedEnforcer::SyncedEnforceWithMatcher (const std::string& matcher, const DataVector& params) {
582+ std::unique_lock<std::shared_mutex> lock (policyMutex);
583+ return Enforcer::EnforceWithMatcher (matcher, params);
584+ }
585+
586+ bool SyncedEnforcer::SyncedEnforceWithMatcher (const std::string& matcher, const DataMap& params) {
587+ std::unique_lock<std::shared_mutex> lock (policyMutex);
588+ return Enforcer::EnforceWithMatcher (matcher, params);
589+ }
590+
516591} // namespace casbin
517592
518- #endif // ENFORCER_SYNCED_CPP
593+ #endif // ENFORCER_SYNCED_CPP
0 commit comments