Metadata-Version: 2.1
Name: django-basicauth
Version: 0.5.3
Summary: Basic auth utilities for Django.
Home-page: https://github.com/hirokiky/django-basicauth/
Author: Hiroki KIYOHARA
Author-email: hirokiky@gmail.com
License: MIT
Platform: UNKNOWN
Requires-Dist: Django (>=2.0)

================
django-basicauth
================

Basic auth utilities for Django.

Requires
========

Tested under...

* Python

  * 3.6
  * 3.7
  * 3.8
  * 3.9

* Django

  * 2.2
  * 3.0
  * 3.1

Installation
============

::

    pip install django-basicauth


Usage
=====

.. code-block:: python

    from basicauth.decorators import basic_auth_required

    @basic_auth_required
    def myview(request):
        ...

or by a middleware.

.. code-block:: python

    MIDDLEWARE = (
        'basicauth.middleware.BasicAuthMiddleware',
        ...
    )


Basic Auth for specific requests only
-------------------------------------

To apply basic auth for specific requests,
Use ``target_test`` argument.

In the below code, anonymous users will be required Basic Auth
Authenticated users can pass it without `Basic ...` header.

.. code-block:: python

    from basicauth.decorators import basic_auth_required

    @basic_auth_required(
        target_test=lambda request: not request.user.is_authenticated
    )
    def myview(request):
        ...

``target_test`` accepts ``typing.Callable[[HttpRequest], bool]``,
and if the callable returns ``True``, Basic Auth will be required.

Applying decorator to CBVs
==========================

To apply ``@basic_auth_required`` decorator to Class Based Views,
use ``django.utils.decorators.method_decorator``.

.. code-block:: python

    from django.utils.decorators import method_decorator
    from basicauth.decorators import basic_auth_required

    @method_decorator(basic_auth_required, name='dispatch')
    class YourView(TemplateView):
        template_name = "my-template.html"

Settings
========

* ``BASICAUTH_USERS`` (required): Dictionary including keys as username and values as passwords.
* ``BASICAUTH_REALM``: realm string, default is "Secure resource".
* ``BASICAUTH_DISABLE``: Disable all of barriers by this library.


Changes
=======

0.5.3 (2020-11-17)
----------------------------
* Added supporting Django3 and Python3.8,3.9
    * Thanks @rhoboro !
* Dropped Py2, Django1.11

0.5.2 (2019-04-06)
----------------------------
* Added supporting Django2.2

0.5.1 (2018-08-06)
--------------------------
* Added supporting Django2.1
    * Thanks @rhymes

0.5 (2018-05-09)
---------------------
* Added supporting Django2.0
    * Thanks @timheap

0.4.2 (2017-11-27)
------------------
* Fixed to avoid timing attacks
    * Lots of thanks for Hugo Castilho

0.4.1 (2017-10-20)
------------------
* Added ``target_test`` argument for the decorator.

0.4 (2017-09-30)
----------------

* Supported Python 2.7
* Dropped Django1.9
* Supported Django 1.10+ style middleware

0.3 (2017-08-28)
----------------

* Added ``BASICAUTH_DISABLE`` setting
* Changed API of ``basicauthutils.validate_request``
    * Fixed to return True/False
    * Adding REMOTE_USER by this function

0.2.1 (2017-08-28)
------------------

* Officially supported Django 1.11, 1.10, 1.9

0.2 (2016-03-31)
----------------

* Added BasicAuthMiddleware https://github.com/hirokiky/django-basicauth/pull/3

0.1 (2015-04-20)
----------------

* Initial


