Metadata-Version: 2.4
Name: drf-auth-kit
Version: 0.3.10
Summary: Modern Django REST Framework authentication toolkit with JWT cookies, social login, and 2FA support
Project-URL: Documentation, https://drf-auth-kit.readthedocs.io/
Project-URL: Homepage, https://github.com/forthecraft/drf-auth-kit
Project-URL: Repository, https://github.com/forthecraft/drf-auth-kit
Author-email: Huy Nguyen <danghuy1999@gmail.com>
License: MIT License
        
        Copyright (c) 2025, Huy Nguyen
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: AUTHORS.rst
License-File: LICENSE
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: <4.0,>=3.10
Requires-Dist: django-allauth<65.11.0,>=65.5.0
Requires-Dist: django<6,>=5
Requires-Dist: djangorestframework-simplejwt<6,>=5
Requires-Dist: djangorestframework<4,>=3
Requires-Dist: drf-spectacular
Requires-Dist: structlog
Provides-Extra: all
Requires-Dist: django-allauth[socialaccount]>=65.5.0; extra == 'all'
Requires-Dist: pyotp>=2.9.0; extra == 'all'
Provides-Extra: mfa
Requires-Dist: pyotp>=2.9.0; extra == 'mfa'
Provides-Extra: social
Requires-Dist: django-allauth[socialaccount]>=65.5.0; extra == 'social'
Description-Content-Type: text/x-rst

DRF AUTH KIT
============

.. image:: https://img.shields.io/pypi/v/drf-auth-kit
   :target: https://pypi.org/project/drf-auth-kit/
   :alt: PyPI

.. image:: https://codecov.io/github/forthecraft/drf-auth-kit/graph/badge.svg?token=lpj7sFpe3F
   :target: https://codecov.io/github/forthecraft/drf-auth-kit
   :alt: Code Coverage

.. image:: https://github.com/forthecraft/drf-auth-kit/actions/workflows/test.yml/badge.svg?branch=main
   :target: https://github.com/forthecraft/drf-auth-kit/actions/workflows/test.yml
   :alt: Test

.. image:: https://www.mypy-lang.org/static/mypy_badge.svg
   :target: https://mypy-lang.org/
   :alt: Checked with mypy

.. image:: https://microsoft.github.io/pyright/img/pyright_badge.svg
   :target: https://microsoft.github.io/pyright/
   :alt: Checked with pyright

.. image:: https://drf-auth-kit.readthedocs.io/en/latest/_static/interrogate_badge.svg
   :target: https://github.com/forthecraft/drf-auth-kit
   :alt: Docstring

Modern Django REST Framework authentication toolkit with JWT cookies, social login, MFA, and comprehensive user management.

Built as a next-generation alternative to existing DRF authentication packages, DRF Auth Kit provides a complete authentication solution with modern developer experience, inspired by dj-rest-auth but enhanced with full type safety, automatic OpenAPI schema generation, and comprehensive MFA support inspired by django-trench.

Features
--------

- **Multiple Authentication Types**: JWT (default), DRF Token, or Custom
- **Cookie-Based Security**: HTTP-only cookies
- **Complete User Management**: Registration, password reset, email verification
- **Multi-Factor Authentication**: Support multiple MFAs with backup codes
- **Social Authentication**: Django Allauth integration with 50+ providers, support for both OAuth2 and OpenID connect.
- **Internationalization**: Built-in support for 57 languages including English, Spanish, French, German, Chinese, Japanese, Korean, Vietnamese, and more
- **Full Type Safety**: Complete type hints with mypy and pyright
- **OpenAPI Integration**: Auto-generated API documentation with DRF Spectacular
- **Flexible Configuration**: Customizable serializers, views, and authentication backends

Installation
------------

.. code-block:: bash

    pip install drf-auth-kit

**Optional Features:**

.. code-block:: bash

    # For MFA support
    pip install drf-auth-kit[mfa]

    # For social authentication
    pip install drf-auth-kit[social]

    # For both MFA and social
    pip install drf-auth-kit[all]

**Core Dependencies:** Django 5.0+, DRF 3.0+, Django Allauth, DRF SimpleJWT

Quick Start
-----------

1. Add to your Django settings:

.. code-block:: python

    INSTALLED_APPS = [
        # ... your apps
        'rest_framework',
        'allauth',  # Required for social auth
        'allauth.account',  # Required for social auth
        # 'allauth.socialaccount',  # For social login
        # 'allauth.socialaccount.providers.google',  # For Google login
        'auth_kit',
        # 'auth_kit.social',  # For social authentication
        # 'auth_kit.mfa',  # For MFA support
    ]

    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': [
            'auth_kit.authentication.JWTCookieAuthentication',
        ],
    }

    # Override only if needed:
    # AUTH_KIT = {
    #     'USE_MFA': True,  # Enable MFA
    # }

    # Google OAuth2 settings (for social login)
    # SOCIALACCOUNT_PROVIDERS = {
    #     'google': {
    #         'SCOPE': ['profile', 'email'],
    #         'AUTH_PARAMS': {'access_type': 'online'},
    #         'OAUTH_PKCE_ENABLED': True,
    #         'APP': {
    #             'client_id': 'your-google-client-id',
    #             'secret': 'your-google-client-secret',
    #         }
    #     }
    # }

2. Include Auth Kit URLs:

.. code-block:: python

    from django.urls import path, include

    urlpatterns = [
        path('api/auth/', include('auth_kit.urls')),
        # path('api/auth/social/', include('auth_kit.social.urls')),  # For social auth
        # ... your other URLs
    ]

3. Run migrations (only needed if using MFA):

.. code-block:: bash

    python manage.py migrate

Authentication Types
--------------------

**JWT Authentication (Recommended)**
   - Access and refresh tokens
   - Token refresh support
   - Secure cookie storage

**DRF Token Authentication**
   - Simple token-based auth
   - Compatible with DRF TokenAuthentication
   - Cookie support available

**Custom Authentication**
   - Bring your own authentication backend
   - Full customization support
   - Integrate with third-party services

Documentation
-------------

Please visit `DRF Auth Kit docs <https://drf-auth-kit.readthedocs.io/>`_ for complete documentation, including:

- Detailed configuration options
- Custom serializer examples
- Advanced usage patterns
- Integration guides

Upcoming Features
-----------------

**Enhanced Multi-Factor Authentication**

- ☐ **Hardware Security Keys**: YubiKey and FIDO2/WebAuthn support
- ☐ **SMS & Voice**: Twilio integration for SMS and voice-based MFA
- ☐ **Authenticator Apps**: Enhanced TOTP support (Google Authenticator, Authy, etc.)
- ☐ **Trusted Devices**: Remember MFA verification for trusted browsers/sessions

**Passwordless Authentication**

- ☐ **WebAuthn**: Biometric and hardware key authentication
- ☐ **Magic Links**: Email-based passwordless login
- ☐ **SMS Login**: One-time password via SMS

**Advanced Security Features**

- ☐ **Rate Limiting**: Configurable rate limits for authentication endpoints
- ☐ **Account Lockout**: Progressive delays and temporary account locks
- ☐ **Audit Logging**: Comprehensive security event logging
- ☐ **Geographic Restrictions**: IP-based access controls and geo-blocking

Contributing
------------

Contributions are welcome! Please feel free to submit a Pull Request.

License
-------

This project is licensed under the MIT License - see the LICENSE file for details.
