Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tomi77/django-auth-role
Add roles to django-auth
https://github.com/tomi77/django-auth-role
django django-application django-authentication django-permissions
Last synced: 3 days ago
JSON representation
Add roles to django-auth
- Host: GitHub
- URL: https://github.com/tomi77/django-auth-role
- Owner: tomi77
- License: mit
- Created: 2017-04-19T06:52:52.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-05-10T16:50:52.000Z (over 7 years ago)
- Last Synced: 2024-10-12T07:21:48.302Z (about 1 month ago)
- Topics: django, django-application, django-authentication, django-permissions
- Language: Python
- Size: 40 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
================
django-auth-role
================.. image:: https://codeclimate.com/github/tomi77/django-auth-role/badges/gpa.svg
:target: https://codeclimate.com/github/tomi77/django-auth-role
:alt: Code Climate
.. image:: https://travis-ci.org/tomi77/django-auth-role.svg?branch=master
:target: https://travis-ci.org/tomi77/django-auth-role
.. image:: https://coveralls.io/repos/github/tomi77/django-auth-role/badge.svg?branch=master
:target: https://coveralls.io/github/tomi77/django-auth-role?branch=masterAdd roles to django-auth
Role are set of group of permissions and permissions. It's fully customizable. Everything is in database.
Admin application allow to manage roles.
Installation
============.. sourcecode:: sh
pip install django-auth-role
Quick start
===========Add ``authrole`` to `INSTALLED_APPS` (``django.contrib.auth`` and ``django.contrib.contenttypes`` are also required)
and ``AuthRoleBackend`` to `AUTHENTICATION_BACKENDS`... sourcecode:: python
INSTALLED_APPS = [
...
'django.contrib.contenttypes',
'django.contrib.auth',
'authrole',
]AUTHENTICATION_BACKENDS = (
'authrole.auth.backends.AuthRoleBackend',
)Extend ``auth.User``.
.. sourcecode:: python
from authrole.mixins import RoleMixin
from django.db import modelsclass MyUser(RoleMixin, models.Model):
user = models.OneToOneField('auth.User', related_name='user')or create new auth user model:
.. sourcecode:: python
from authrole.mixins import RoleMixin
from django.contrib.auth.models import AbstractUser
from django.db import modelsclass MyUser(RoleMixin, AbstractUser):
passIn this case remember to set ``AUTH_USER_MODEL`` to Your model.
Create tables.
.. sourcecode:: sh
./manage.py migrate
Advanced usage
==============Own authentication backend
--------------------------If You need Your own authentication backend, simply extend ``BaseAuthRoleBackend``.
``fetch_role_permissions`` function must return a list of ``auth.Permission`` objects:.. sourcecode:: python
from authrole.auth.backends import BaseAuthRoleBackend
from django.contrib.auth.models import Permissionclass MyBackend(BaseAuthRoleBackend):
def fetch_role_permissions(self, user_obj):
if user_obj.username == 'admin':
return Permission.objects.all()
else:
return Permission.objects.none()Extend role
-----------Add ``OneToOneField`` to Your model:
.. sourcecode:: python
from django.db import models
class MyRole(models.Model):
role = models.OneToOneField('authrole.Role', null=False, blank=False, related_name='myrole')
extra_field = models.CharField(max_length=10)And use:
.. sourcecode:: python
from authrole.models import Role
role = Role.objects.all()[0]
print(role.myrole.extra_field)
Or write Your own role class based on ``AbstractRole`` (Django >= 1.5):
.. sourcecode:: python
from authrole.model import AbstractRole
class MyRole(AbstractRole):
extra_field = models.CharField(max_length=10)Point `AUTHROLE_ROLE_MODEL` to Your new model:
.. sourcecode:: python
AUTHROLE_ROLE_MODEL = 'app.MyRole'
And use:
.. sourcecode:: python
from app.models import MyRole
role = MyRole.objects.all()[0]
print(role.extra_field)