Metadata-Version: 2.1
Name: django-secured-accounts
Version: 1.0.2
Summary: Full featured user app with built-in verification and activity stream
Home-page: https://django-secured-accounts.readthedocs.io/
Author: Ahmed Shehab
Author-email: ahbox@outlook.com
License: BSD-3-Clause
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 3.1
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Requires-Dist: Django
Requires-Dist: six
Requires-Dist: Pillow
Requires-Dist: user-agents
Requires-Dist: geoip2
Requires-Dist: phonenumbers
Requires-Dist: django-phonenumber-field
Requires-Dist: maxminddb
Requires-Dist: twilio

========
Accounts
========

Accounts is a Django app handles essential user security

- Email verification upon register
- Phone is enforced and mandatory "handled by Twilio sms service"
- Device access location "handled by geoip2 and maxmind db"
- Activity stream for user access

Indeed it is opinionated user app as follows:

* User class is AbstractUser has a Profile foreign key
* Profile with has fields like photo and date_of_birth

Check the docs for deep details.

Quick start
-----------

1. Add "accounts" to your INSTALLED_APPS setting like this::

    INSTALLED_APPS = [
        ...
        'accounts',
    ]

    TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['accounts/templates'],
        ...
    }]
2. Include the accounts URLconf in your project urls.py like this::

        path('accounts/',
        include(('accounts.urls', 'accounts'), namespace='auth'))


* Note: mind the namespace as it is used in templates and testing.

3. Set mandatory settings::

    # refers to the user model
    AUTH_USER_MODEL = 'accounts.User'
    MEDIA_ROOT = os.path.join(BASE_DIR, "media")
    MEDIA_URL = '/media/'
    # this is on-demand auth backends
    AUTHENTICATION_BACKENDS = [
        'accounts.authentication.EmailAuthBackend',
        'accounts.authentication.PhoneAuthBackend',
        'accounts.authentication.UsernameAuthBackend',
    ]
    # your favorite email backend
    # just for testing it is set to console
    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

    # maxmind db required
    # follow https://docs.djangoproject.com/en/3.1/ref/contrib/gis/geoip2/
    GEOIP_PATH = os.path.join(BASE_DIR, 'path/to/maxmind/db')

    # Twilio required sms validation
    # get keys from https://www.twilio.com/
    TWILIO_API_KEY = ""
    TWILIO_AUTH_TOKEN = ""
    TWILIO_PHONE_NUMBER = ""


4. Run ``python manage.py migrate`` to create the accounts models.

5. Start the development server and visit http://127.0.0.1:8000/accounts/login/

- Full documentation on https://django-secured-accounts.readthedocs.io/

