whocan


Namewhocan JSON
Version 0.4.1 PyPI version JSON
download
home_pagehttps://gitlab.com/kjschiroo/whocan
SummaryLibrary for defining and determining access.
upload_time2023-10-30 04:25:32
maintainer
docs_urlNone
authorKevin Schiroo
requires_python>=3.8,<4.0
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.14340s