This reusable TOM Toolkit app provides support for two user registration flows in the TOM Toolkit.
The two registration flows are as follows:
-
Open Registration - In this flow, the user fills in a registration form and is immediately able to access the TOM as a member of the Public Group.
-
Approval Registration - In this flow, the user fills in a registration form, and is inactive until an administrator reviews and approves their registration.
- Install the package into your TOM environment:
pip install tom_registration
-
In your project
settings.py
, addtom_registration
to yourINSTALLED_APPS
setting:INSTALLED_APPS = [ ... 'tom_registration', ]
And add the follow setting, with appropriate values for your use case:
TOM_REGISTRATION = { 'REGISTRATION_AUTHENTICATION_BACKEND': 'django.contrib.auth.backends.ModelBackend', 'REGISTRATION_REDIRECT_PATTERN': 'home', 'SEND_APPROVAL_EMAILS': True }
To prevent logged-in users from accessing the registration page, add
RedirectAuthenticatedUsersFromRegisterMiddleware
to theMIDDLEWARE
settings:MIDDLEWARE = [ ... 'tom_common.middleware.AuthStrategyMiddleware', 'tom_registration.middleware.RedirectAuthenticatedUsersFromRegisterMiddleware', ]
-
Depending on your preferred registration flow, include the appropriate tom_registration URLconf in your project
urls.py
. You will need to ensure that this urlpattern appears in the list before yourtom_common.urls
.
Open Registration:
```python
urlpatterns = [
...
path('', include('tom_registration.registration_flows.open.urls', namespace='registration')),
]
```
Approval Registration:
```python
urlpatterns = [
...
path('', include('tom_registration.registration_flows.approval_required.urls', namespace='registration')),
]
```
- While the registration views are now accessible directly, some changes need to be made to templates to make them available.
Copy the contents of this file to templates/tom_common/partials/navbar_login.html
.
If you're using approval registration, copy the contents of this file to templates/auth/user_list.html
.
- If you're using approval registration and you would like a message informing the user that their account is pending approval if they try to log in prior to approval, you'll need to make the following changes:
First, in your settings.py
, set the first item of your AUTHENTICATION_BACKENDS
:
```python
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.AllowAllUsersModelBackend',
'guardian.backends.ObjectPermissionBackend'
)
```
Then, change the value of REGISTRATION_AUTHENTICATION_BACKEND
in the TOM_REGISTRATION
setting that was just created:
```python
TOM_REGISTRATION = {
'REGISTRATION_AUTHENTICATION_BACKEND': 'django.contrib.auth.backends.AllowAllUsersModelBackend`,
...
}
```
In the approval required registration flow, there is available behavior to send basic emails notifying administrators of a registration request, and notifying users of registration approval. Administrators are determined by the Django MANAGERS setting. Email behavior can be enabled or disabled with SEND_APPROVAL_EMAILS
.
The configuration of an email backend is a topic covered in depth by the Django docs. There are a number of required settings that will need to be added.
In the future, tom_registration
will provide more configurable behavior upon user registration/approval.
In order to run the tests, run the following in your virtualenv:
python manage.py test