Metadata-Version: 2.1
Name: django-modular-user
Version: 0.2.0
Summary: Modular user model for Django
Home-page: https://gitlab.com/aiakos/django-modular-user
Author: Aiakos Contributors
Author-email: aiakos@aiakosauth.com
License: UNKNOWN
Keywords: django user model auth email phone number
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Topic :: System :: Systems Administration :: Authentication/Directory
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
Description-Content-Type: text/markdown
Requires-Dist: django (<2.99,>=2.0.0)

# Modular user model for Django
[![PyPI version](https://badge.fury.io/py/django-modular-user.svg)](https://badge.fury.io/py/django-modular-user)

**django-modular-user** lets you easily customize Django's User model, without any compromises. Unlike Django's own `AbstractBaseUser`, here nothing is irremovable, you can use exactly the parts you want.

## Requirements
* Django 2.0+

## Installation
```sh
pip install django-modular-user
```

* Create a new Django package with following models.py, and a migrations/ subdirectory:
```python
from django_modular_user.user import AbstractUser

class User(AbstractUser):
    pass
```

* In `settings.py`, set `AUTH_USER_MODEL = 'your_new_package_name.User'`
* Run `./manage.py makemigrations`

## Configuration
You may configure the basic profile data with `USER_CORE_MODULES` setting. For example, to create an User model without usernames and passwords, that uses email as the username, you may use:
```python
USER_CORE_MODULES = [
    'django_modular_user.user:AbstractBaseUser',
    'django_modular_user.user:EmailMixin', # email
    'django_modular_user.user:NamePartsMixin', # given_name, middle_name, family_name
    'django_modular_user.user:ActiveMixin', # is_active
    'django_modular_user.user:StaffMixin', # is_staff
    'django_modular_user.user:PermissionsMixin', # is_superuser and other permissions
    'django_modular_user.user:JoinedMixin', # date_joined
]
USERNAME_FIELD = 'email'
USER_EMAIL_UNIQUE = True
```

## App-specific User mixins
`django-modular-user` automatically scans all `INSTALLED_APPS` for `user.py` modules that contain a `UserMixin` class. Such mixins are automatically added to the User model; you only need to run `./manage.py makemigrations` after adding an app to your `INSTALLED_APPS` list.


