provider/samlv2: more samlv2 progres
This commit is contained in:
31
passbook/providers/samlv2/views/base.py
Normal file
31
passbook/providers/samlv2/views/base.py
Normal file
@ -0,0 +1,31 @@
|
||||
"""SAML base views"""
|
||||
from typing import Optional
|
||||
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.views import View
|
||||
|
||||
from passbook.core.models import Application
|
||||
from passbook.core.views.access import AccessMixin
|
||||
from passbook.providers.samlv2.saml.constants import SESSION_KEY
|
||||
from passbook.providers.samlv2.saml.parser import SAMLRequest
|
||||
|
||||
|
||||
class BaseSAMLView(AccessMixin, View):
|
||||
"""Base SAML View to resolve app_slug"""
|
||||
|
||||
application: Application
|
||||
|
||||
def setup(self, request: HttpRequest, *args, **kwargs):
|
||||
View.setup(self, request, *args, **kwargs)
|
||||
self.application = self.get_application(self.kwargs.get("app_slug"))
|
||||
|
||||
def get_application(self, app_slug: str) -> Optional[Application]:
|
||||
"""Return application or raise 404"""
|
||||
return get_object_or_404(Application, slug=app_slug)
|
||||
|
||||
def handle_saml_request(self, request: SAMLRequest) -> HttpResponse:
|
||||
"""Handle SAML Request"""
|
||||
self.request.SESSION[SESSION_KEY] = request
|
||||
if self.application.skip_authorization:
|
||||
pass
|
||||
Reference in New Issue
Block a user