Files
paperless-ngx-deployment/authentik-setup.py
T
feedc0de 8c2af0de52
Test and deploy / test (push) Successful in 28s
Test and deploy / deploy (push) Failing after 28s
Enable Authentik login and prefer arschrock for OCR
2026-10-04 17:51:08 +02:00

61 lines
2.4 KiB
Python

from django.db import transaction
from authentik.core.models import Application, Group, User
from authentik.policies.models import PolicyBinding
from authentik.providers.oauth2.models import OAuth2Provider
with transaction.atomic():
template = OAuth2Provider.objects.get(name="Argo CD")
redirect = template.redirect_uris[0]
provider, _ = OAuth2Provider.objects.get_or_create(
name="Paperless-ngx",
defaults={
"authorization_flow": template.authorization_flow,
"invalidation_flow": template.invalidation_flow,
"client_type": "confidential",
"grant_types": ["authorization_code", "refresh_token"],
"client_id": "paperless-ngx",
"client_secret": CLIENT_SECRET,
"signing_key": template.signing_key,
},
)
provider.authorization_flow = template.authorization_flow
provider.invalidation_flow = template.invalidation_flow
provider.client_type = "confidential"
provider.grant_types = ["authorization_code", "refresh_token"]
provider.client_id = "paperless-ngx"
provider.client_secret = CLIENT_SECRET
provider.signing_key = template.signing_key
provider.redirect_uris = [
type(redirect)(
matching_mode=redirect.matching_mode,
url="https://paper.brunner.ninja/accounts/oidc/authentik/login/callback/",
redirect_uri_type=redirect.redirect_uri_type,
)
]
provider.save()
provider.property_mappings.set(
template.property_mappings.filter(managed__startswith="goauthentik.io/providers/oauth2/scope-")
)
app, _ = Application.objects.get_or_create(
slug="paperless-ngx", defaults={"name": "Paperless-ngx", "provider": provider}
)
app.name = "Paperless-ngx"
app.provider = provider
app.meta_launch_url = "https://paper.brunner.ninja"
app.save()
group, _ = Group.objects.get_or_create(name="Paperless Users")
admin_group, _ = Group.objects.get_or_create(name="Paperless Admins")
owner = User.objects.get(username="feedc0de")
group.users.add(owner)
admin_group.users.add(owner)
binding, _ = PolicyBinding.objects.get_or_create(
target=app, group=group, defaults={"order": 0, "enabled": True}
)
if not binding.enabled:
binding.enabled = True
binding.save(update_fields=["enabled"])
print("PAPERLESS_AUTHENTIK_READY")