-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: complete async_redis_adapter (#2)
- Loading branch information
Showing
13 changed files
with
735 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# Always validate the PR title AND all the commits | ||
titleAndCommits: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
name: build | ||
on: | ||
push: | ||
branches: [master] | ||
pull_request: | ||
branches: [master] | ||
|
||
jobs: | ||
test: | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
python-version: ['3.9', '3.10', '3.11'] | ||
os: [ubuntu-latest] | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
|
||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Set up Redis | ||
uses: nnhy/[email protected] | ||
|
||
- name: Install dependencies | ||
run: | | ||
pip install -r requirements.txt | ||
pip install coveralls | ||
- name: Run tests | ||
run: coverage run -m unittest discover -s tests -t tests | ||
|
||
- name: Upload coverage data to coveralls.io | ||
run: coveralls --service=github | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
COVERALLS_FLAG_NAME: ${{ matrix.os }} - ${{ matrix.python-version }} | ||
COVERALLS_PARALLEL: true | ||
|
||
lint: | ||
name: Run Linters | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
|
||
- name: Super-Linter | ||
uses: github/[email protected] | ||
env: | ||
VALIDATE_PYTHON_BLACK: true | ||
DEFAULT_BRANCH: master | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
coveralls: | ||
name: Indicate completion to coveralls.io | ||
needs: test | ||
runs-on: ubuntu-latest | ||
container: python:3-slim | ||
steps: | ||
- name: Finished | ||
run: | | ||
pip3 install --upgrade coveralls | ||
coveralls --finish | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
release: | ||
name: Release | ||
runs-on: ubuntu-latest | ||
needs: [ test, coveralls ] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Setup Node.js | ||
uses: actions/setup-node@v2 | ||
with: | ||
node-version: '18' | ||
|
||
- name: Setup | ||
run: npm install -g semantic-release @semantic-release/github @semantic-release/changelog @semantic-release/commit-analyzer @semantic-release/git @semantic-release/release-notes-generator semantic-release-pypi | ||
|
||
- name: Set up python | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.10' | ||
|
||
- name: Install setuptools | ||
run: python -m pip install --upgrade setuptools wheel twine | ||
|
||
- name: Release | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} | ||
run: npx semantic-release |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
{ | ||
"branches": "master", | ||
"plugins": [ | ||
"@semantic-release/commit-analyzer", | ||
"@semantic-release/release-notes-generator", | ||
"semantic-release-pypi", | ||
"@semantic-release/github", | ||
[ | ||
"@semantic-release/changelog", | ||
{ | ||
"changelogFile": "CHANGELOG.md", | ||
"changelogTitle": "# Semantic Versioning Changelog" | ||
} | ||
], | ||
[ | ||
"@semantic-release/git", | ||
{ | ||
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", | ||
"assets": [ | ||
"CHANGELOG.md", | ||
"setup.py", | ||
"setup.cfg" | ||
] | ||
} | ||
] | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,101 @@ | ||
# async-redis-adapter | ||
Async Redis Adapter for PyCasbin | ||
==== | ||
|
||
[![GitHub Actions](https://github.com/pycasbin/async-redis-adapter/workflows/build/badge.svg?branch=master)](https://github.com/pycasbin/async-redis-adapter/actions) | ||
[![Coverage Status](https://coveralls.io/repos/github/pycasbin/async-redis-adapter/badge.svg?branch=master)](https://coveralls.io/github/pycasbin/async-redis-adapter?branch=master) | ||
[![Version](https://img.shields.io/pypi/v/casbin_async_redis_adapter.svg)](https://pypi.org/project/casbin_async_redis_adapter/) | ||
[![PyPI - Wheel](https://img.shields.io/pypi/wheel/casbin_async_redis_adapter.svg)](https://pypi.org/project/casbin_async_redis_adapter/) | ||
[![Pyversions](https://img.shields.io/pypi/pyversions/casbin_async_redis_adapter.svg)](https://pypi.org/project/casbin_async_redis_adapter/) | ||
[![Download](https://img.shields.io/pypi/dm/casbin_async_redis_adapter.svg)](https://pypi.org/project/casbin_async_redis_adapter/) | ||
[![License](https://img.shields.io/pypi/l/casbin_async_redis_adapter.svg)](https://pypi.org/project/casbin_async_redis_adapter/) | ||
|
||
Async Redis Adapter is the async [redis](https://redis.io/) adapter for [PyCasbin](https://github.com/casbin/pycasbin). | ||
With this | ||
library, Casbin can load policy from redis or save policy to it. | ||
|
||
## Installation | ||
|
||
``` | ||
pip install casbin_async_redis_adapter | ||
``` | ||
|
||
## Simple Example | ||
|
||
```python | ||
import asyncio | ||
from casbin_async_redis_adapter import Adapter | ||
import casbin | ||
|
||
|
||
async def get_enforcer(): | ||
adapter = Adapter("localhost", 6379, encoding="utf-8") | ||
e = casbin.AsyncEnforcer("rbac_model.conf", adapter) | ||
model = e.get_model() | ||
|
||
model.clear_policy() | ||
model.add_policy("p", "p", ["alice", "data1", "read"]) | ||
await adapter.save_policy(model) | ||
|
||
model.clear_policy() | ||
model.add_policy("p", "p", ["bob", "data2", "write"]) | ||
await adapter.save_policy(model) | ||
|
||
model.clear_policy() | ||
model.add_policy("p", "p", ["data2_admin", "data2", "read"]) | ||
await adapter.save_policy(model) | ||
|
||
model.clear_policy() | ||
model.add_policy("p", "p", ["data2_admin", "data2", "write"]) | ||
await adapter.save_policy(model) | ||
|
||
model.clear_policy() | ||
model.add_policy("g", "g", ["alice", "data2_admin"]) | ||
await adapter.save_policy(model) | ||
|
||
e = casbin.AsyncEnforcer("rbac_model.conf", adapter) | ||
await e.load_policy() | ||
|
||
return e | ||
|
||
|
||
sub = "alice" # the user that wants to access a resource. | ||
obj = "data1" # the resource that is going to be accessed. | ||
act = "read" # the operation that the user performs on the resource. | ||
|
||
|
||
async def main(): | ||
e = await get_enforcer() | ||
if e.enforce("alice", "data1", "read"): | ||
print("alice can read data1") | ||
else: | ||
print("alice can not read data1") | ||
|
||
|
||
asyncio.run(main()) | ||
``` | ||
|
||
## Configuration | ||
|
||
`Adapter()` enable decode_responses by default and supports any Redis parameter configuration. | ||
|
||
To use casbin_redis_adapter, you must provide the following parameter configuration | ||
|
||
- `host`: address of the redis service | ||
- `port`: redis service port | ||
|
||
The following parameters are provided by default | ||
|
||
- `db`: redis database, default is `0` | ||
- `username`: redis username, default is `None` | ||
- `password`: redis password, default is `None` | ||
- `key`: casbin rule to store key, default is `casbin_rules` | ||
|
||
For more parameters, please follow [redis-py](https://redis.readthedocs.io/en/stable/connections.html#redis.Redis) | ||
|
||
### Getting Help | ||
|
||
- [PyCasbin](https://github.com/casbin/pycasbin) | ||
|
||
### License | ||
|
||
This project is licensed under the [Apache 2.0 license](LICENSE). |
Empty file.
Oops, something went wrong.