Skip to content

Commit

Permalink
feat: Added bindings for casbin::ABACData
Browse files Browse the repository at this point in the history
Signed-off-by: Yash Pandey (YP) <yash.btech.cs19@iiitranchi.ac.in>
  • Loading branch information
EmperorYP7 committed Aug 5, 2021
1 parent e176189 commit 4b519ed
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
1 change: 1 addition & 0 deletions bindings/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ set(SOURCES
main.cpp
py_cached_enforcer.cpp
py_enforcer.cpp
py_abac_data.cpp
)

set(HEADERS
Expand Down
83 changes: 83 additions & 0 deletions bindings/python/py_abac_data.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/*
* 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 bindABACData(py::module& m) {
py::class_<casbin::ABACData>(m, "ABACData")
.def(py::init<const casbin::AttributeMap &>(), R"doc(
@brief Construct a new casbin::ABACData object
@param attribs Should be of the format: {
{ "attrib_name1", value1 },
{ "attring_name2", value2 },
...
}
Key's type is std::string and value's type can be one of std::string, int32_t, double, and float only
)doc")
.def("AddAttribute", &casbin::ABACData::AddAttribute, R"doc(
@brief Add attribute to the corresponding ABAC entity
@param key Name of the attribute
@param value Value of the attribute
@return true when attribute is added successfully, false otherwise
)doc")
.def("AddAttributes", &casbin::ABACData::AddAttributes, R"doc(
@brief Add attributes to the corresponding ABAC entity
@param attribs Should be of the format: {
{ "attrib_name1", value1 },
{ "attring_name2", value2 },
...
}
Key's type is std::string and value's type can be one of std::string, int32_t, and float only
@return true if attributes are added successfully, false otherwise
)doc")
.def("DeleteAttribute", &casbin::ABACData::DeleteAttribute, R"doc(
@brief Delete attribute of the corresponding ABAC entity
@param key Name of the attribute to be deleted
@return true when attribute is deleted successfully, false otherwise
)doc")
.def("UpdateAttribute", &casbin::ABACData::UpdateAttribute, R"doc(
@brief Update attribute of the corresponding ABAC entity
@param key Name of the attribute to be updated
@param value Value which would replace the current value of the attribute corresponding
to the given key
@return true
@return false
)doc")
.def("GetAttributes", &casbin::ABACData::GetAttributes, R"doc(
@brief Get the Attributes of the corresponding ABAC entity
@return const reference to the hashmap containing attributes in key-value pairs
)doc");

m.def("GetDataObject", &casbin::GetDataObject, R"doc(
@brief Get casbin::ABACData object
@param attribs Should be of the format: {
{ "attrib_name1", value1 },
{ "attrib_name2", value2 },
...
}
Key's type is std::string and value's type can be one of std::string, int32_t, double, and float only
@return Pointer to casbin::ABACData entity
)doc");
}
1 change: 1 addition & 0 deletions bindings/python/py_casbin.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ namespace py = pybind11;

void bindPyEnforcer(py::module &m);
void bindPyCachedEnforcer(py::module &m);
void bindABACData(py::module &m);

0 comments on commit 4b519ed

Please sign in to comment.