{ "info": { "author": "Dimagi", "author_email": "dev@dimagi.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Django PRBAC\n============\n\n(Parameterized Role-Based Access Control)\n\nhttps://github.com/dimagi/django-prbac\n\n|Build Status| |Test coverage| |PyPi version|\n\nAbout RBAC and PRBAC\n--------------------\n\n**Role-based access control (RBAC)** is the standard method for access control in large systems.\nWith RBAC, you grant *privileges* to *roles*. For example you\nmight grant the privilege ``Reporting`` to the role ``Analyst``. In most\nsystems, you can nest roles as deeply as you want, and give users however many roles. A good\nexample of this in practice is `PostgreSQL roles and privileges\n`_.\n\nThe roles and privileges are whatever abstract concepts make sense for your system. It is up\nto application code to determine what actions to take based on the privileges granted. This\ncan, of course, be implemented in terms of a lower-level permission system such as\nrow-level or object-level access control lists (ACLs).\n\n**Parameterized role-based access control (PRBAC)** adds parameters\nto roles and privileges. Now, for example, you might grant ``\"Reporting(organization=\"Dimagi\",area=\"Finance\")``\nto ``FinancialAnalyst(organization=\"Dimagi\")``. If you don't use parameters, then it is just RBAC.\nIf you use parameters with finite sets of choice, then it is exponentially more powerful. If you\nuse parameters with infinitely many choices (such as strings or integers) then it is\ninfinitely more powerful. A good example of limited parameterization is how particular privileges\n(``SELECT``, ``UPDATE``, etc) in PostgreSQL may be parameterized by an object. In PRBAC\nthis parameterization is pervasive.\n\n\nIn-depth documentation\n----------------------\n\nTo learn more about parameterized role-based access control as implemented in this library, please\nvisit http://django-prbac.readthedocs.org/\n\n\nAccess Control for Django\n-------------------------\n\n* `django.contrib.auth `_: This app, shipped with Django, provides unix-style access control (users, groups, permissions) \n with an extensible set of permissions that are implicitly parameterized by a content type. This is\n fundamentally different than role-based access control. It is only worth mentioning because it comes\n with Django and everyone is going to want to know \"why did you reimplement the wheel?\". If ``django.contrib.auth``\n is the wheel, then RBAC is the car and PRBAC is a transformer. I leave it as an exercise to the reader to\n attempt to implement PRBAC using ``django.contrib.auth`` :-)\n\n* `django-rbac `_: This project appears defunct and is not\n parameterized in any rate.\n\n* `django-role-permissions `_: This app implements a sort of\n RBAC where roles are statically defined in code.\n\n* Others can be perused at https://www.djangopackages.com/grids/g/perms/. Many offer object-level permissions,\n which is as orthogonal to role-based access control as unix permissions. In fact, this is probably true of \n anything using the term \"permissions\".\n\n\nQuick Start\n-----------\n\nTo install, use pip:\n\n::\n\n $ pip install django-prbac\n\nLicense\n-------\n\nDjango-prbac is distributed under the MIT license. (See the LICENSE file for details)\n\n.. |Build Status| image:: https://travis-ci.org/dimagi/django-prbac.png?branch=master\n :target: https://travis-ci.org/dimagi/django-prbac\n.. |Test coverage| image:: https://coveralls.io/repos/dimagi/django-prbac/badge.png?branch=master\n :target: https://coveralls.io/r/dimagi/django-prbac\n.. |PyPi version| image:: https://img.shields.io/pypi/v/django-prbac.svg\n :target: https://pypi.python.org/pypi/django-prbac\n.. |PyPi downloads| image:: https://img.shields.io/pypi/dm/django-prbac.svg\n :target: https://pypi.python.org/pypi/django-prbac\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/dimagi/django-prbac", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-prbac", "package_url": "https://pypi.org/project/django-prbac/", "platform": "", "project_url": "https://pypi.org/project/django-prbac/", "project_urls": { "Homepage": "http://github.com/dimagi/django-prbac" }, "release_url": "https://pypi.org/project/django-prbac/0.0.7/", "requires_dist": [ "django (<2.1,>=1.8)", "jsonfield (>=1.0.3)", "simplejson", "six" ], "requires_python": "", "summary": "Parameterized Role-Based Access Control for Django", "version": "0.0.7" }, "last_serial": 4122307, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "f3d88cf20bbb83c1f299fdfa0b78ba7c", "sha256": "4f4dd43af9b1f54d31f406a7ea5d2d26eae10d4378cb0c3805861e383a442340" }, "downloads": -1, "filename": "django-prbac-0.0.1.tar.gz", "has_sig": false, "md5_digest": "f3d88cf20bbb83c1f299fdfa0b78ba7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5017, "upload_time": "2013-10-30T19:59:36", "url": "https://files.pythonhosted.org/packages/9b/4c/330cb1c5e831ce8ef3ccee6975d2b6525af9cc5180a2a88b6c8983818e7d/django-prbac-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "50c51e5dd32104904f8af8a60fec959f", "sha256": "45361452c6f0c9126552195958d5d6e4caa51d87afd41bb9f88130b5b92b0b97" }, "downloads": -1, "filename": "django-prbac-0.0.2.tar.gz", "has_sig": false, "md5_digest": "50c51e5dd32104904f8af8a60fec959f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6362, "upload_time": "2013-11-26T20:54:10", "url": "https://files.pythonhosted.org/packages/fc/c9/0cc547bf7575be8e93da9e784d45659000aa7114fd405767f381674334db/django-prbac-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "8058697feb4fa6c4d553dab39cf2361c", "sha256": "b6d64f27c5f1ea20ee22e401af5a50e2c139d202c78a5346b62afe844746a7c1" }, "downloads": -1, "filename": "django-prbac-0.0.4.tar.gz", "has_sig": false, "md5_digest": "8058697feb4fa6c4d553dab39cf2361c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11992, "upload_time": "2017-08-12T10:43:38", "url": "https://files.pythonhosted.org/packages/44/65/8f8975e42464bc0b6b9bb65c7c8179d731ebeb10942c43af39e5ea9797ce/django-prbac-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "8a2e1322f9515b4717af4823b0bfe328", "sha256": "ed251a307ead1369c1720e631f90dc2080022150bb9e415930d5cf7e61be0ca0" }, "downloads": -1, "filename": "django-prbac-0.0.5.tar.gz", "has_sig": false, "md5_digest": "8a2e1322f9515b4717af4823b0bfe328", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12280, "upload_time": "2017-10-31T18:32:54", "url": "https://files.pythonhosted.org/packages/3f/40/c6f81198cafbffbfc83270d99b19464248c1c70a7c3cf202ea60047ae6ce/django-prbac-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "5bbff40601d06a7be6235d4f25d5adcb", "sha256": "1c25f8b3a32b868dc9f14605df83df552ef9646d452aa81cef66ed1532d7e445" }, "downloads": -1, "filename": "django_prbac-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5bbff40601d06a7be6235d4f25d5adcb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18181, "upload_time": "2018-05-23T13:09:10", "url": "https://files.pythonhosted.org/packages/04/5c/420fb1a6f36e8088509384a410a850e2a6b545d11c8ac5435573e9af6b5d/django_prbac-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "395ba74bf9cb06f799dc873327ecb3e6", "sha256": "53bf42f1c6199272c5907dcbf541bb5b88218ae9b2cfb92aa994561e8c7ce65c" }, "downloads": -1, "filename": "django-prbac-0.0.6.tar.gz", "has_sig": false, "md5_digest": "395ba74bf9cb06f799dc873327ecb3e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12684, "upload_time": "2018-05-23T13:09:11", "url": "https://files.pythonhosted.org/packages/75/8c/48d5b4ca326e736e54d73320f7312c6e86eb11ae97fdd3fa0939a4a1cd2a/django-prbac-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "d3fcbf5c23ac7ece14d345a2c8648949", "sha256": "893581de2c3159de483e43a1e68b5bb126ef52ade9045a6e7b5fa65d68cea5c9" }, "downloads": -1, "filename": "django_prbac-0.0.7-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "d3fcbf5c23ac7ece14d345a2c8648949", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19323, "upload_time": "2018-07-31T22:51:38", "url": "https://files.pythonhosted.org/packages/ae/fa/0a437a5247dc1fe6db947289de7efba8ec13a05261f1b6ac1b7c67be4826/django_prbac-0.0.7-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d3fcbf5c23ac7ece14d345a2c8648949", "sha256": "893581de2c3159de483e43a1e68b5bb126ef52ade9045a6e7b5fa65d68cea5c9" }, "downloads": -1, "filename": "django_prbac-0.0.7-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "d3fcbf5c23ac7ece14d345a2c8648949", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19323, "upload_time": "2018-07-31T22:51:38", "url": "https://files.pythonhosted.org/packages/ae/fa/0a437a5247dc1fe6db947289de7efba8ec13a05261f1b6ac1b7c67be4826/django_prbac-0.0.7-py2.py3-none-any.whl" } ] }