Core library for Nexus django applications that require User accounts
Project description
Core library for Nexus django applications that require User accounts
Documentation
The full documentation is at https://django-genomix-users.readthedocs.io.
Quickstart
Install django-genomix-users:
pip install django-genomix-users
Make the following changes to INSTALLED_APPS in settings.py file:
INSTALLED_APPS = ( ... 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.staticfiles', ... 'rest_framework', 'rest_framework.authtoken', 'rest_auth', 'django_filters', ... 'django_python3_ldap', ... 'genomix_users', ... )
Add django-genomix-users’s URL patterns:
from genomix_users import urls as genomix_users_urls urlpatterns = [ ... url(r'^', include(genomix_users_urls, namespace='users')), ... ]
Make sure settings.py file has TEMPLATES and STATIC_URL set (example below):
TEMPLATES = [ { # See: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TEMPLATES-BACKEND 'BACKEND': 'django.template.backends.django.DjangoTemplates', # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-dirs 'DIRS': [ os.path.join(ROOT_DIR, 'templates'), os.path.join(APPS_DIR, 'templates'), ], 'OPTIONS': { # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-debug 'debug': DEBUG, # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-loaders # https://docs.djangoproject.com/en/dev/ref/templates/api/#loader-types 'loaders': [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', ], # See: https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', # Your stuff: custom template context processors go here ], }, }, ] STATIC_URL = '/static/'
Make sure settings.py file has MIDDLEWARE set (example below):
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
Optional settings
Turn off the creation of associated user profiles in settings.py.
CREATE_PROFILE_ON_SAVE = False
Enable authentication to use JSON Web Token in settings.py:
REST_USE_JWT = True REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ), }
Enable LDAP authentication in settings.py:
LDAP_AUTH_URL = 'ldap://chop.edu:3268' LDAP_AUTH_USE_TLS = False LDAP_AUTH_SEARCH_BASE = 'dc=chop,dc=edu' LDAP_AUTH_OBJECT_CLASS = 'person' LDAP_AUTH_USER_LOOKUP_FIELDS = ('username',) LDAP_AUTH_USER_FIELDS = { "username": "sAMAccountName", "first_name": "givenName", "last_name": "sn", "email": "mail", } LDAP_AUTH_FORMAT_USERNAME = 'django_python3_ldap.utils.format_username_active_directory' LDAP_AUTH_ACTIVE_DIRECTORY_DOMAIN = 'chop-edu' AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', 'django_python3_ldap.auth.LDAPBackend', ]
Enable LDAP User group filtering in settings.py:
LDAP_AUTH_FORMAT_SEARCH_FILTERS = 'genomix_users.authentication.genomix_search_filters' LDAP_AUTH_SEARCH_FILTER = 'CN=dgd_nexus_users,ou=DGD Groups,ou=SecurityGroups,ou=Research,ou=Managed By Others,dc=chop,dc=edu'
Sync User Profile with LDAP fields in settings.py:
Note
If CREATE_PROFILE_ON_SAVE = False, LDAP profile will not sync!
LDAP_AUTH_SYNC_USER_RELATIONS = "genomix_users.authentication.sync_genomix_profile" # User model fields mapped to the LDAP attributes that represent them. LDAP_AUTH_PROFILE_FIELDS = { "title": "title", }
Features
- GenomiX REST API for authentication using django-rest-auth
- GenomiX LDAP authentication using django-python3-ldap
Running Tests
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
History
0.1.0 (2017-12-03)
- First release on PyPI.
- Initial models and REST API.
0.5.0 (2017-04-07)
- Added support for Django 2.0 and Python 3.6
- Dropped support for Django < 1.11 and Python 2.7, 3.3, 3.4
0.5.1 (2017-04-10)
- Fixed issue with Admin registration. From now on - users can import and use this in their apps
0.5.4 (2018-08-13)
- Updated 3rd party requirements. Some requirements had changed so it was causing failures
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-genomix-users-0.5.11.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbacadf92b367c730b9d1d3cce8a46448707121d35ea33a18012ef9dca047312 |
|
MD5 | 116287aa0aa3d70efa99e6deba0c7f74 |
|
BLAKE2-256 | 6a169b070407d0ec10c986817a835d32876e0cf1f8e35cd030083bdefb43b005 |
Hashes for django_genomix_users-0.5.11-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c662f9e8dd97a2d142b913602f31245f7efe41c3f6069e4dfad3f9c9412ef83 |
|
MD5 | 803b7ce66df1a1704002166f7573838d |
|
BLAKE2-256 | ddad8182611ce9b5d354f093caca252c2213fb3aa996f55bb46b350162cfec37 |