Authentication and Roles

Arctic uses the underlying Django authentication backend, but it adds its own role base permission system. It also includes a user management app.

Creating an admin user

When Arctic is installed, the Django createsuperuser command will create a User that is also setup with the admin role in Arctic, this role has full access to every view in Arctic:

./manage.py createsuperuser

Arctic users app

This app has a UI to manage users in arctic.

In urls.py add the following to urlpatterns:

urlpatterns = [
    ...
    url(r'^users/', include('arctic.users.urls', namespace='users')),

]

And in settings.py add a reference to ARCTIC_MENU:

ARCTIC_MENU = (
    ...
    ('Users', 'users:list', 'fa-user'),
)

Setting up permissions in Views

Every Arctic view needs a permission_required property, this should be unique and will be used in the definition of roles. For example:

permission_required = 'view_user'

The naming convention to be used here is the same as what Django uses for its model based permissions: <view|add|change|delete>_<entity>

Defining roles

Roles are defined in settings with the ARCTIC_ROLES dictionary, the key of the dictionary is the role name, and its value a list of permissions that have been defined in the premission_required property of the Views, for example:

ARCTIC_ROLES = {
    'editor': ('view_user', 'view_article', 'add_article', 'change_article',)
    ...
}