authentik.recovery.lib

Recovery helper functions.

 1"""Recovery helper functions."""
 2
 3from datetime import datetime
 4
 5from django.urls import reverse
 6from django.utils.text import slugify
 7from django.utils.timezone import now
 8
 9from authentik.core.models import Group, Token, TokenIntents, User
10
11
12def create_admin_group(user: User) -> Group:
13    """Create admin group and add user to it."""
14    group, _ = Group.objects.update_or_create(
15        name="authentik Admins",
16        defaults={
17            "is_superuser": True,
18        },
19    )
20    group.users.add(user)
21
22    return group
23
24
25def create_recovery_token(user: User, expiry: datetime, generated_from: str) -> tuple[Token, str]:
26    """Create recovery token and associated link"""
27    _now = now()
28    token = Token.objects.create(
29        expires=expiry,
30        user=user,
31        intent=TokenIntents.INTENT_RECOVERY,
32        description=f"Recovery Token generated by {generated_from} on {_now}",
33        identifier=slugify(f"ak-recovery-{user}-{_now}"),
34    )
35    url = reverse("authentik_recovery:use-token", kwargs={"key": str(token.key)})
36    return token, url
def create_admin_group(user: authentik.core.models.User) -> authentik.core.models.Group:
13def create_admin_group(user: User) -> Group:
14    """Create admin group and add user to it."""
15    group, _ = Group.objects.update_or_create(
16        name="authentik Admins",
17        defaults={
18            "is_superuser": True,
19        },
20    )
21    group.users.add(user)
22
23    return group

Create admin group and add user to it.

def create_recovery_token( user: authentik.core.models.User, expiry: datetime.datetime, generated_from: str) -> tuple[authentik.core.models.Token, str]:
26def create_recovery_token(user: User, expiry: datetime, generated_from: str) -> tuple[Token, str]:
27    """Create recovery token and associated link"""
28    _now = now()
29    token = Token.objects.create(
30        expires=expiry,
31        user=user,
32        intent=TokenIntents.INTENT_RECOVERY,
33        description=f"Recovery Token generated by {generated_from} on {_now}",
34        identifier=slugify(f"ak-recovery-{user}-{_now}"),
35    )
36    url = reverse("authentik_recovery:use-token", kwargs={"key": str(token.key)})
37    return token, url

Create recovery token and associated link