# 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