Jump to >

AuthBackendHook

New in version 2.0.

reviewboard.extensions.hooks.AuthBackendHook allows extensions to register new authentication backends, which can be used to integrate with databases or servers to handle authentication, user lookup, and profile manipulation.

Extensions must provide a subclass of reviewboard.accounts.backends.AuthBackend, and pass it as a parameter to AuthBackendHook. Each class must provide backend_id and name attributes, and must implement authenticate() and get_or_create_user() methods.

Example

from reviewboard.accounts.backends import AuthBackend
from reviewboard.extensions.base import Extension
from reviewboard.extensions.hooks import AuthBackendHook


class SampleAuthBackend(AuthBackend):
    backend_id = 'myvendor_sample_auth'
    name = 'Sample Authentication'

    def authenticate(self, username, password):
        if username == 'superuser' and password == 's3cr3t':
            return self.get_or_create_user(username, password=password)

        return None

    def get_or_create_user(self, username, request=None, password=None):
        user, is_new = User.objects.get_or_create(username=username)

        if is_new:
            user.set_unusable_password()
            user.save()

        return user


class SampleExtension(Extension):
    def initialize(self):
        AuthBackendHook(self, SampleAuthBackend)