Django Act As Auth Backend
==========================

.. sales pitch start

Django authentication back-end that allows one to login as someone else
(an existing Django user allowed to login) without having to know their
password.

Great for customer support and testing scenarios!

.. sales pitch end

.. image:: https://readthedocs.org/projects/django-act-as-auth/badge/?version=latest
        :target: http://django-act-as-auth.readthedocs.org/

.. quickstart start

Quickstart
----------

Install ``djactasauth``::

    pip install djactasauth

Add it to your auth backends in ``settings``::

    import djactasauth
    AUTHENTICATION_BACKENDS = (
        ...,
        'djactasauth.backends.OnlySuperuserCanActAsBackend',
        ...,
    )

Configure the custom login view to take advantage of all the features
in your ``urls.py``::

    from django.conf.urls import patterns, url
    from djactasauth.views import PrefillLoginView
    from testapp.views import whoami


    urlpatterns = patterns(
        '',
        url(r'^login/$', PrefillLoginView.as_view(), {}, 'login'),
    )


Then you can log in with username ``your_superuser_name/customer`` and password
``yourpassword``.

The full `documentation <https://django-act-as-auth.readthedocs.io/en/latest/>`_ including release notes on read the docs.
.. quickstart end


.. contributing start

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

As an open source project, we welcome contributions.

The code lives on `github <https://github.com/zsoldosp/django-act-as-auth>`_.

Reporting issues/improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Please open an `issue on github <https://github.com/zsoldosp/django-act-as-auth/issues/>`_
or provide a `pull request <https://github.com/zsoldosp/django-act-as-auth/pulls/>`_
whether for code or for the documentation.

For non-trivial changes, we kindly ask you to open an issue, as it might be rejected.
However, if the diff of a pull request better illustrates the point, feel free to make
it a pull request anyway.

Pull Requests
~~~~~~~~~~~~~

* for code changes

  * it must have tests covering the change. You might be asked to cover missing scenarios
  * the latest ``flake8`` will be run and shouldn't produce any warning
  * if the change is significant enough, documentation has to be provided

* if you are not there already, add yourself to the `Authors <authors>`_ file

To trigger packaging, run `make release` on the master branch.

Setting up all Python versions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

::

    sudo apt-get -y install software-properties-common
    sudo add-apt-repository ppa:fkrull/deadsnakes
    sudo apt-get update
    for version in 3.9 3.10 3.11 3.12 3.13; do
      py=python$version
      if ! which ${py}; then
        sudo apt-get -y install ${py} ${py}-dev
      fi
    done
    sudo add-apt-repository --remove ppa:deadsnakes/ppa
    sudo apt-get update

Code of Conduct
~~~~~~~~~~~~~~~

As it is a Django extension, it follows
`Django's own Code of Conduct <https://www.djangoproject.com/conduct/>`_.
As there is no mailing list yet, please just email one of the main authors
(see ``setup.py`` file)


.. contributing end
