/django-user-roles

Simple role-based user permissions for Django.

Primary LanguagePython

Django User Roles

[![build-status-image]][travis]

Simple role-based user permissions for Django.

django-user-roles is a simple, reusable app that allows you to create a set of user roles, which can be used to control which views each type of user has permission to view, and to customize how the site is presented to different types of user.

Settings

Install using pip:

pip install django-user-roles

Add the USER_ROLES setting to your settings.py. For example:

USER_ROLES = (
    'manager',
    'moderator',
    'client',
)

Basic Usage

Setting the user role:

from userroles.models import set_user_role
from userroles import roles

set_user_role(self.user, roles.manager)

Checking the user role:

from userroles import roles

user.role == roles.manager
user.role in (roles.manager, roles.moderator)
user.role.is_moderator

The role_required decorator provides similar behavior to Django's login_required and permission_required decorators. If the user accessing the view does not have the required roles, they will be redirected to the login page:

from userroles.decorators import role_required
from userroles import roles

@role_required(roles.manager, roles.moderator)
def view(request):
    ...

Testing

./manage.py test userroles