Jump to >

AuthBackendHook

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)