Extension points ================ Authentication Backends ----------------------- FilteredModelBackend .................... If a subclass of ``djactasauth.backends.FilteredModelBackend`` has a class or instance level ``filter_kwargs`` field, then those filters would be applied in the ``FilteredModelBackend.get_user`` method. If there is no such field, it's ignored, and the behaviour is the same as its parent, ``django.contrib.auth.backends.ModelBackend``. An empty dictionary (``{}``) is also a valid value for filters, again, the behavior is the same as if no such field was specifiec. ``ActAsBackend`` ..................... You can have precise control over which user can act as which other kind of user, by subclassing ``djactasauth.backends.ActAsBackend``, and describing your policy by overwriting the ``can_act_as(self, auth_user, user)`` method. For an example, see ``djactasauth.backends.OnlySuperuserCanActAsBackend``. ``ActAsBackend`` by default doesn't allow anyone to act-as, so there is no chance for misconfiguration. Views ----- ``act_as_login_view`` ..................... You can extend ``djactasauth.views.act_as_login_view`` through the standard ``kwargs``, as you would extend ``django.contrib.auth.views.login``, or you can create your own view method that eventually delegates to it - the same way this implementation does for Django's own :-) Forms ----- ``get_login_form`` .................. ``djactasauth.views.get_login_form`` This is used by ``djactasauth.views.act_as_login_view``. On the one hand, it backports a Django 1.6 feature to 1.5 (pass in ``request`` as an argument to the form), and if needed, it mixes in ``djactasauth.forms.InitialValuesFromRequestGetFormMixin``, so the username can be prefilled for act-as-auth links from the ``GET`` request. ``InitialValuesFromRequestGetFormMixin`` ........................................ ``djactasauth.forms.InitialValuesFromRequestGetFormMixin`` is a ``Form`` mixin, which - given one of its super`s has initialized the form's ``self.request``, will got through ``self.request.GET``, and copy over the values to ``self.initial`` - unless ``self.initial`` already has a value for the given field names you declared in your class's ``query2initial`` property (``tuple``). This is needed for a feature here, but you might find it useful in other parts of your code too :-) Other ----- ``djactasauth.util.act_as_login_url`` ..................................... Convenience method to encapsulate how the act as auth username should be constructed from the two usernames.