# Whocan
Library for defining and determining access.
## Usage
### YAML usage
```yaml
statements:
- effect: allow
actions:
- workspace:Create*
- workspace:Delete*
- workspace:Get*
- workspace:List*
- workspace:Update*
resources:
- workspace:individual-${username}
```
```python
import pathlib
import whocan
policy = whocan.Policy.load(pathlib.Path('path-to-file.yaml'))
policy.is_allowed(
resource='workspaces:individual-my-username',
action='workspace:DeletePage',
arguments={'username': 'my-username'},
)
# True
policy.is_allowed(
resource='workspaces:individual-a-different-user',
action='workspace:DeletePage',
arguments={'username': 'my-username'},
)
# False
```
### Pure python usage
```python
import whocan
statement = whocan.Statement(
resources=['workspaces:individual-${username}'],
actions=[
'workspace:Create*',
'workspace:Delete*',
'workspace:Get*',
'workspace:List*',
'workspace:Update*',
],
effect='allow',
)
policy = whocan.Policy(statements=[statement])
policy.is_allowed(
resource='workspaces:individual-my-username',
action='workspace:DeletePage',
arguments={'username': 'my-username'},
)
# True
policy.is_allowed(
resource='workspaces:individual-a-different-user',
action='workspace:DeletePage',
arguments={'username': 'my-username'},
)
# False
```
Raw data
{
"_id": null,
"home_page": "https://gitlab.com/kjschiroo/whocan",
"name": "whocan",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "Kevin Schiroo",
"author_email": "kjschiroo@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/6f/31/bcf06053744f905ea7d23266114fc1422ce890e9a671734f16858694f7b7/whocan-0.4.1.tar.gz",
"platform": null,
"description": "# Whocan\n\nLibrary for defining and determining access.\n\n## Usage\n\n### YAML usage\n\n```yaml\nstatements:\n- effect: allow\n actions:\n - workspace:Create*\n - workspace:Delete*\n - workspace:Get*\n - workspace:List*\n - workspace:Update*\n resources:\n - workspace:individual-${username}\n```\n\n```python\nimport pathlib\nimport whocan\n\npolicy = whocan.Policy.load(pathlib.Path('path-to-file.yaml'))\npolicy.is_allowed(\n resource='workspaces:individual-my-username',\n action='workspace:DeletePage',\n arguments={'username': 'my-username'},\n)\n# True\npolicy.is_allowed(\n resource='workspaces:individual-a-different-user',\n action='workspace:DeletePage',\n arguments={'username': 'my-username'},\n)\n# False\n```\n\n### Pure python usage\n\n```python\nimport whocan\n\nstatement = whocan.Statement(\n resources=['workspaces:individual-${username}'],\n actions=[\n 'workspace:Create*',\n 'workspace:Delete*',\n 'workspace:Get*',\n 'workspace:List*',\n 'workspace:Update*',\n ],\n effect='allow',\n)\n\npolicy = whocan.Policy(statements=[statement])\npolicy.is_allowed(\n resource='workspaces:individual-my-username',\n action='workspace:DeletePage',\n arguments={'username': 'my-username'},\n)\n# True\npolicy.is_allowed(\n resource='workspaces:individual-a-different-user',\n action='workspace:DeletePage',\n arguments={'username': 'my-username'},\n)\n# False\n```",
"bugtrack_url": null,
"license": "MIT",
"summary": "Library for defining and determining access.",
"version": "0.4.1",
"project_urls": {
"Homepage": "https://gitlab.com/kjschiroo/whocan",
"Repository": "https://gitlab.com/kjschiroo/whocan"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0bd6dbeb0cf9cda7d8fdfa6eb8677c6dc667cea3b760e8f1720ae0309dcdb165",
"md5": "670d867c6bc51549199150b867a3972f",
"sha256": "8a4cc3d574f18345348f62c83384ec72077055a077aac5a9feb9878ff09fcbf0"
},
"downloads": -1,
"filename": "whocan-0.4.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "670d867c6bc51549199150b867a3972f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<4.0",
"size": 7253,
"upload_time": "2023-10-30T04:25:30",
"upload_time_iso_8601": "2023-10-30T04:25:30.846267Z",
"url": "https://files.pythonhosted.org/packages/0b/d6/dbeb0cf9cda7d8fdfa6eb8677c6dc667cea3b760e8f1720ae0309dcdb165/whocan-0.4.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6f31bcf06053744f905ea7d23266114fc1422ce890e9a671734f16858694f7b7",
"md5": "4561fc07e77dd5af7da4e372da4a20ac",
"sha256": "031c84467a695f3532500bf0697beced1c8cb73cfd31abe1028f07c8374f2778"
},
"downloads": -1,
"filename": "whocan-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "4561fc07e77dd5af7da4e372da4a20ac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<4.0",
"size": 5851,
"upload_time": "2023-10-30T04:25:32",
"upload_time_iso_8601": "2023-10-30T04:25:32.110072Z",
"url": "https://files.pythonhosted.org/packages/6f/31/bcf06053744f905ea7d23266114fc1422ce890e9a671734f16858694f7b7/whocan-0.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-30 04:25:32",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "kjschiroo",
"gitlab_project": "whocan",
"lcname": "whocan"
}