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 :-)