authkits

Search Authkits

Search pages, documentation, and resources.

Getting started

Templates and UI overrides

Authkits ships clean default Django templates, but they are not an embedded UI. Your project can override the packaged templates with normal Django template resolution and make the authentication experience match the rest of your application.

Account

login.html, signup.html, verification, password recovery, password change, account deletion

Security

security center, MFA login/management/step-up, sessions, trusted devices

Social

social accounts, connect continuation, reauthentication, headless launch

Email

verification.txt, reset.txt, mfa.txt

Enable project template overrides

Add your project-level templates directory before app templates and keep Django app-template discovery enabled.

settings.py
settings.py
1
2
3
4
5
6
7
8
TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [BASE_DIR / "templates"],
        "APP_DIRS": True,
        # ...
    },
]

Mirror the Authkits template path

To override a packaged template, create the same path under your project's templates directory. You only need to copy the templates you actually want to change.

project structure
project structure
1
2
3
4
5
6
7
8
your_project/
├── templates/
│   └── authkits/
│       ├── login.html
│       ├── signup.html
│       └── emails/
│           └── verification.txt
└── manage.py

For example, templates/authkits/login.html overrides the packaged authkits/login.html while every other Authkits template continues using the default shipped version.

Override one page

Individual page overrides can keep the packaged Authkits base layout while replacing only the page content.

templates/authkits/login.html
templates/authkits/login.html
1
2
3
4
5
6
7
8
9
10
11
12
{% extends "authkits/base.html" %}

{% block title %}Welcome back{% endblock %}

{% block content %}
  <h1>Welcome back</h1>
  <form method="post">
    {% csrf_token %}
    {% include "authkits/fields.html" %}
    <button type="submit">Sign in</button>
  </form>
{% endblock %}

Replace the global Authkits shell

All packaged browser templates extend authkits/base.html. To apply your own global markup, typography, navigation, and stylesheet, copy the packaged base template into templates/authkits/base.html and customize that project copy.

The packaged base exposes title, styles, extra head content, language, and page-content blocks. You can also replace the default authkits/auth.css reference with your own static stylesheet.

Shared form fields

Override templates/authkits/fields.html when you want one consistent rendering treatment for Authkits forms. The packaged partial already handles hidden fields, validation errors, help text, accessible error associations, and password reveal controls.

Email template overrides

Verification, password-reset, and email-MFA messages are normal Django templates too.

project structure
project structure
1
2
3
4
templates/authkits/emails/
├── verification.txt
├── reset.txt
└── mfa.txt

Keep the required challenge identifiers, codes, or page URLs that the corresponding flow expects. Authkits deliberately keeps secrets out of query strings.

Security rules still apply

Template ownership does not bypass the Authkits security boundary. Preserve CSRF tokens on POST forms, keep destructive actions as POSTs, render hidden fields supplied by Authkits forms, and avoid putting passwords, MFA codes, recovery codes, bearer credentials, or other secrets into URLs or client logs.

Continue configuration

Once the UI matches your app, configure account policy, MFA, sessions, social providers, and APIs.

Configuration