Coverage for apps/comments_views/journal/mixins.py: 93%
21 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-05-19 19:20 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2024-05-19 19:20 +0000
1from django.contrib.auth import REDIRECT_FIELD_NAME
2from django.contrib.auth import logout
3from django.http import HttpRequest
4from django.http import HttpResponseRedirect
5from django.urls import reverse
7from ptf.url_utils import format_url_with_params
9from ..core.mixins import AbstractCommentRightsMixin
10from .models import OIDCUser
11from .rights import OIDCUserRights
14class OIDCCommentRightsMixin(AbstractCommentRightsMixin):
15 @property
16 def rights_class(self) -> type[OIDCUserRights]:
17 return OIDCUserRights
20class SSOLoginRequiredMixin:
21 """
22 Redirects to the `remote_login` URL if the current user is not a `OIDCUser`.
23 """
25 def dispatch(self, request: HttpRequest, *args, **kwargs):
26 if not isinstance(request.user, OIDCUser):
27 redirect_uri = format_url_with_params(
28 reverse("remote_login"), {REDIRECT_FIELD_NAME: request.build_absolute_uri()}
29 )
30 if request.user.is_authenticated: 30 ↛ 31line 30 didn't jump to line 31, because the condition on line 30 was never true
31 logout(request)
32 return HttpResponseRedirect(redirect_uri)
34 return super().dispatch(request, *args, **kwargs) # type:ignore