* format files Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix pyright Signed-off-by: Jens Langhammer <jens@goauthentik.io> * revert #8367 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * sigh Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
"""proxy provider tasks"""
|
|
|
|
from hashlib import sha256
|
|
|
|
from asgiref.sync import async_to_sync
|
|
from channels.layers import get_channel_layer
|
|
from django.db import DatabaseError, InternalError, ProgrammingError
|
|
|
|
from authentik.outposts.consumer import OUTPOST_GROUP
|
|
from authentik.outposts.models import Outpost, OutpostType
|
|
from authentik.providers.proxy.models import ProxyProvider
|
|
from authentik.root.celery import CELERY_APP
|
|
|
|
|
|
@CELERY_APP.task(
|
|
throws=(DatabaseError, ProgrammingError, InternalError),
|
|
)
|
|
def proxy_set_defaults():
|
|
"""Ensure correct defaults are set for all providers"""
|
|
for provider in ProxyProvider.objects.all():
|
|
provider.set_oauth_defaults()
|
|
provider.save()
|
|
|
|
|
|
@CELERY_APP.task()
|
|
def proxy_on_logout(session_id: str):
|
|
"""Update outpost instances connected to a single outpost"""
|
|
layer = get_channel_layer()
|
|
hashed_session_id = sha256(session_id.encode("ascii")).hexdigest()
|
|
for outpost in Outpost.objects.filter(type=OutpostType.PROXY):
|
|
group = OUTPOST_GROUP % {"outpost_pk": str(outpost.pk)}
|
|
async_to_sync(layer.group_send)(
|
|
group,
|
|
{
|
|
"type": "event.provider.specific",
|
|
"sub_type": "logout",
|
|
"session_id": hashed_session_id,
|
|
},
|
|
)
|