authentik.stages.user_logout.stage

Logout stage logic

 1"""Logout stage logic"""
 2
 3from django.contrib.auth import logout
 4from django.dispatch import Signal
 5from django.http import HttpRequest, HttpResponse
 6from structlog.stdlib import get_logger
 7
 8from authentik.flows.stage import StageView
 9
10LOGGER = get_logger()
11
12# Custom signal for handling
13# front-channel logouts
14flow_pre_user_logout = Signal()
15
16
17class UserLogoutStageView(StageView):
18    """Logout stage that logs out the user"""
19
20    def dispatch(self, request: HttpRequest) -> HttpResponse:
21        """Log out user and send pre-logout signal"""
22
23        # This signal is for handling SAML front-channel logouts
24        flow_pre_user_logout.send(
25            sender=self.__class__, request=request, user=request.user, executor=self.executor
26        )
27
28        LOGGER.debug(
29            "Logged out",
30            user=request.user,
31            flow_slug=self.executor.flow.slug,
32        )
33        logout(self.request)
34
35        return self.executor.stage_ok()
LOGGER = <BoundLoggerLazyProxy(logger=None, wrapper_class=None, processors=None, context_class=None, initial_values={}, logger_factory_args=())>
flow_pre_user_logout = <django.dispatch.dispatcher.Signal object>
class UserLogoutStageView(authentik.flows.stage.StageView):
18class UserLogoutStageView(StageView):
19    """Logout stage that logs out the user"""
20
21    def dispatch(self, request: HttpRequest) -> HttpResponse:
22        """Log out user and send pre-logout signal"""
23
24        # This signal is for handling SAML front-channel logouts
25        flow_pre_user_logout.send(
26            sender=self.__class__, request=request, user=request.user, executor=self.executor
27        )
28
29        LOGGER.debug(
30            "Logged out",
31            user=request.user,
32            flow_slug=self.executor.flow.slug,
33        )
34        logout(self.request)
35
36        return self.executor.stage_ok()

Logout stage that logs out the user

def dispatch( self, request: django.http.request.HttpRequest) -> django.http.response.HttpResponse:
21    def dispatch(self, request: HttpRequest) -> HttpResponse:
22        """Log out user and send pre-logout signal"""
23
24        # This signal is for handling SAML front-channel logouts
25        flow_pre_user_logout.send(
26            sender=self.__class__, request=request, user=request.user, executor=self.executor
27        )
28
29        LOGGER.debug(
30            "Logged out",
31            user=request.user,
32            flow_slug=self.executor.flow.slug,
33        )
34        logout(self.request)
35
36        return self.executor.stage_ok()

Log out user and send pre-logout signal