예제 #1
0
    def dispatch(self, request, organization, provider):
        sp_metadata_url = absolute_uri(
            reverse("sentry-auth-organization-saml-metadata",
                    args=[organization.slug]))

        if request.method != "POST":
            saml_form = SAMLForm(provider.config["idp"])
            attr_mapping_form = AttributeMappingForm(
                provider.config["attribute_mapping"])
        else:
            saml_form = SAMLForm(request.POST)
            attr_mapping_form = AttributeMappingForm(request.POST)

            if saml_form.is_valid() and attr_mapping_form.is_valid():
                provider.config["idp"] = saml_form.cleaned_data
                provider.config[
                    "attr_mapping_form"] = attr_mapping_form.cleaned_data
                provider.save()

        return self.render(
            "sentry_auth_saml2/configure.html",
            {
                "sp_metadata_url": sp_metadata_url,
                "forms": {
                    "saml": saml_form,
                    "attrs": attr_mapping_form
                },
            },
        )
예제 #2
0
    def handle(self, request: Request, helper) -> Response:
        if "save_mappings" not in request.POST:
            form = AttributeMappingForm()
        else:
            form = AttributeMappingForm(request.POST)
            if form.is_valid():
                helper.bind_state("attribute_mapping", form.cleaned_data)
                return helper.next_step()

        return self.respond("sentry_auth_saml2/map-attributes.html", {"form": form})