61 lines
2.4 KiB
Python
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")
|