blob: 4c3ce2226dacf0c47a9fca59e902f3bf104df9ab [file] [log] [blame]
/*
* Copyright 2021 The casbin Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <casbin/casbin.h>
namespace py = pybind11;
void bindPyCachedEnforcer(py::module &m) {
py::class_<casbin::CachedEnforcer, casbin::Enforcer>(m, "CachedEnforcer")
.def(py::init<>(), "Enforcer is the default constructor.")
.def(py::init<const std::string &, const std::string &>(), R"doc(
Enforcer initializes an enforcer with a model file and a policy file.
@param model_path the path of the model file.
@param policy_file the path of the policy file.
)doc")
.def(py::init<const std::string &, std::shared_ptr<casbin::Adapter>>(), R"doc(
Enforcer initializes an enforcer with a database adapter.
@param model_path the path of the model file.
@param adapter the adapter.
)doc")
.def(py::init<std::shared_ptr<casbin::Model>, std::shared_ptr<casbin::Adapter>>(), R"doc(
Enforcer initializes an enforcer with a model and a database adapter.
@param m the model.
@param adapter the adapter.
)doc")
.def(py::init<std::shared_ptr<casbin::Model>>(), R"doc(
Enforcer initializes an enforcer with a model.
@param m the model.
)doc")
.def(py::init<const std::string &>(), R"doc(
Enforcer initializes an enforcer with a model file.
@param model_path the path of the model file.
)doc")
.def(py::init<const std::string &, const std::string &, bool>(), R"doc(
Enforcer initializes an enforcer with a model file, a policy file and an enable log flag.
@param model_path the path of the model file.
@param policy_file the path of the policy file.
@param enable_log whether to enable Casbin's log.
)doc")
.def("InvalidateCache", &casbin::CachedEnforcer::InvalidateCache)
.def("Enforce", py::overload_cast<const casbin::DataVector&>(&casbin::CachedEnforcer::Enforce), R"doc(
Enforce with a map param,decides whether a "subject" can access a "object"
with the operation "action", input parameters are usually: (sub, obj, act).
)doc")
.def("Enforce", py::overload_cast<const casbin::DataList &>(&casbin::CachedEnforcer::Enforce), R"doc(
Enforce with a map param,decides whether a "subject" can access a "object"
with the operation "action", input parameters are usually: (sub, obj, act).
)doc")
.def("Enforce", py::overload_cast<const casbin::DataMap &>(&casbin::CachedEnforcer::Enforce), R"doc(
Enforce with a map param,decides whether a "subject" can access a "object"
with the operation "action", input parameters are usually: (sub, obj, act).
)doc")
.def("EnforceWithMatcher", py::overload_cast<const std::string &, const casbin::DataList &>(&casbin::CachedEnforcer::EnforceWithMatcher), R"doc(
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 "".
)doc")
.def("EnforceWithMatcher", py::overload_cast<const std::string &, const casbin::DataMap &>(&casbin::CachedEnforcer::EnforceWithMatcher), R"doc(
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 "".
)doc");
}