Giter Site home page Giter Site logo

1813331017 / drf-user Goto Github PK

View Code? Open in Web Editor NEW

This project forked from 101loop/drf-user

0.0 0.0 0.0 99 KB

This Django User Model is customised user model keeping in mind the practical need (esp. in India)

License: GNU General Public License v3.0

Python 100.00%

drf-user's Introduction

Django REST Framework - User

User APP for Django REST Framework with API Views.

DRF User is a Django app that overrides default user app to provide additional attributes and functionalities. The current stable version includes:

  • Mobile Number
  • Single field for full name
  • REST API to register
  • REST API to login
  • MultiModelBackend: User can login using either of mobile, email or username
  • REST API to login with OTP (Same API endpoint as for OTP Verification; Set is_login: true while sending JSON request)
  • OTP Verification for mobile and email
  • API to register / login with OTP (no pre-registration required)
  • Mail sending feature upon successful registration
  • SMS sending feature upon successful registration
  • Change Password
  • Update Profile
  • settings.py based configuration
  • Signal based mails: Pending in OTP section
  • Mail based activation (optional alternative for OTP based activation)

Contributors

  • Civil Machines Technologies Private Limited: For providing me platform and funds for research work. This project is hosted currently with CMT only.
  • Himanshu Shankar: The app was initiated and worked upon majorly by Himanshu. This app is currently in use in various other django projects that are developed by him.
  • Aditya Gupta: Aditya has updated view in the app to include additional features such as Change Password. He is also an active contributor in this repository and is working to replace ValidateAndPerformView with appropriate Django REST Framework GenericAPI Views.

** We're looking for someone who can contribute on docs part **

Installation

  • Download and Install via pip
pip install drf_user

or

Download and Install via easy_install

easy_install drf_user
  • Add drf_user in INSTALLED_APPS
INSTALLED_APPS = [
    ...
    'drf_user',
    ...
]
  • Also add other dependencies in INSTALLED_APPS
INSTALLED_APPS = [
    ...
    'drfaddons',
    'rest_framework',
    'django_filters',
    ...
]
  • Include urls of drf_user in urls.py
urlpatterns = [
    ...
    path('api/user/', include('drf_user.urls')),
    ...
]

# or

urlpatterns = [
    ...
    url(r'^api/user/', include('drf_user.urls')),
    ...
]
  • Include AUTH_USER_MODEL in settings.py
...
AUTH_USER_MODEL = 'drf_user.User'
...
  • Finally, run migrate command
python manage.py migrate drf_user

Additional settings

These additional settings are required to use drf_user at its full extent. These settings should be done in settings.py

  • Set AUTHENTICATION_BACKEND:
AUTHENTICATION_BACKENDS = [
    'drf_user.auth.MultiFieldModelBackend',
]
  • Set JWT_PAYLOAD_HANDLER in JWT_AUTH configurations
JWT_AUTH = {
    ...
    'JWT_PAYLOAD_HANDLER': 'drf_user.auth.jwt_payload_handler',
    ...
}
  • Set DEFAULT_AUTHENTICATION_CLASSES in REST_FRAMEWORK configuration
REST_FRAMEWORK = {
    ...
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'drfaddons.auth.JSONWebTokenAuthenticationQS',
        ...
    ),
}

Manual Settings

User can define manual setting in settings.py file in USER_SETTINGS variable . Default options are provided below

user_settings = {
    'DEFAULT_ACTIVE_STATE': False,
    'OTP': {
        'LENGTH': 7,
        'ALLOWED_CHARS': '1234567890',
        'VALIDATION_ATTEMPTS': 3,
        'SUBJECT': 'OTP for Verification',
        'COOLING_PERIOD': 3
    },
    'MOBILE_VALIDATION': True,
    'EMAIL_VALIDATION': True,
    'REGISTRATION': {
        'SEND_MAIL': False,
        'SEND_MESSAGE': False,
        'MAIL_SUBJECT': 'Welcome to DRF-USER',
        'SMS_BODY': 'Your account has been created',
        'TEXT_MAIL_BODY': 'Your account has been created.',
        'HTML_MAIL_BODY': 'Your account has been created.'
    }
}

drf-user's People

Contributors

iamhssingh avatar ag93999 avatar iamaditya-gaur avatar sumit4613 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.