|
|
|
# bam - Blinkenbunt Account Manager
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
Currently, this repository does only contain a plain _Django_ app without a
|
|
|
|
project. The app is not (yet) packaged. Therfore, the following steps are
|
|
|
|
necessary to initialize a development environment:
|
|
|
|
|
|
|
|
1. Initialize _Django_ project:
|
|
|
|
|
|
|
|
```
|
|
|
|
django-admin startproject PROJECT_NAME
|
|
|
|
```
|
|
|
|
|
|
|
|
2. Clone this repository to a location outside the project directory.
|
|
|
|
|
|
|
|
3. Below the project directory, create a symlink called `bam` to the `bam`
|
|
|
|
folder of this repository, e.g.:
|
|
|
|
|
|
|
|
```
|
|
|
|
ln -sr bam PROJECT_DIRECTORY/bam
|
|
|
|
```
|
|
|
|
|
|
|
|
4. Add `bam` to `INSTALLED_APPS` in the project's `settings.py`.
|
|
|
|
|
|
|
|
5. Set `bam.hashers.LDAPPBKDF2PasswordHasher` as the first item of the
|
|
|
|
`PASSWORD_HASHERS` array in the project's `settings.py`.
|
|
|
|
|
|
|
|
6. Insert the settings `BAM_LDAP_URI`, `BAM_LDAP_BIND_DN`, `BAM_LDAP_SECRET`
|
|
|
|
and `BAM_LDAP_BASE_DN_MAP` according to your setup into the project's
|
|
|
|
`settings.py`. The base DN map has to be a dict from base DNs to arrays of
|
|
|
|
Django groups.
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
```
|
|
|
|
BAM_LDAP_BASE_DN_MAP = {
|
|
|
|
'ou=test,dc=blinkenbunt,dc=org': [
|
|
|
|
'jabber',
|
|
|
|
'git',
|
|
|
|
],
|
|
|
|
'ou=admins,dc=blinkenbunt,dc=org': [
|
|
|
|
'admin',
|
|
|
|
],
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
7. Append `path('', include('bam.urls')),` to the project's `urls.py`.
|
|
|
|
|
|
|
|
8. Initialize database:
|
|
|
|
|
|
|
|
```
|
|
|
|
./manage.py migrate
|
|
|
|
```
|
|
|
|
|
|
|
|
9. Create a superuser account:
|
|
|
|
|
|
|
|
```
|
|
|
|
./manage.py createsuperuser
|
|
|
|
```
|
|
|
|
|
|
|
|
10. Download _Pure.css_ and extract it to `bam/static/pure.css/`.
|
|
|
|
|
|
|
|
11. Start the development server:
|
|
|
|
|
|
|
|
```
|
|
|
|
./manage.py runserver
|
|
|
|
```
|
|
|
|
|
|
|
|
## ToDo
|
|
|
|
|
|
|
|
### Essential
|
|
|
|
|
|
|
|
* LDAP sync mangement command
|
|
|
|
* profile page view to be displayed after login
|
|
|
|
* unify CSS for custom views and auth view
|
|
|
|
|
|
|
|
### Optional, planned
|
|
|
|
|
|
|
|
* service-based logins
|
|
|
|
* self-service registration
|
|
|
|
* package this app as a _Python_ module
|
|
|
|
|