Browse Source

fix(domains) Update org auth config for customer-domains (#43738)

- Show users customer-domain compatible login URL
- Fix 'back to settings' link.
Mark Story 2 years ago
parent
commit
9d822d4e79

+ 2 - 3
src/sentry/web/frontend/organization_auth_settings.py

@@ -13,7 +13,6 @@ from sentry.auth.helper import AuthHelper
 from sentry.models import AuthProvider, Organization, OrganizationMember, User
 from sentry.plugins.base import Response
 from sentry.tasks.auth import email_missing_links, email_unlink_notifications
-from sentry.utils.http import absolute_uri
 from sentry.web.frontend.base import OrganizationView
 
 ERR_NO_SSO = _("The SSO feature is not enabled for this organization.")
@@ -171,8 +170,8 @@ class OrganizationAuthSettingsView(OrganizationView):
         context = {
             "form": form,
             "pending_links_count": pending_links_count,
-            "login_url": absolute_uri(Organization.get_url(organization.slug)),
-            "settings_url": absolute_uri(
+            "login_url": organization.absolute_url(Organization.get_url(organization.slug)),
+            "settings_url": organization.absolute_url(
                 reverse("sentry-organization-settings", args=[organization.slug])
             ),
             "auth_provider": auth_provider,

+ 6 - 0
src/sentry/web/urls.py

@@ -420,6 +420,11 @@ urlpatterns += [
                     name="sentry-account-close-account",
                 ),
                 url(r"^account/", generic_react_page_view, name="sentry-account-settings-generic"),
+                url(
+                    r"^organization/auth/configure/$",
+                    OrganizationAuthSettingsView.as_view(),
+                    name="sentry-customer-domain-organization-auth-provider-settings",
+                ),
                 url(
                     r"^organization/",
                     react_page_view,
@@ -708,6 +713,7 @@ urlpatterns += [
         react_page_view,
         name="sentry-manage-project",
     ),
+    # Avatars
     url(
         r"^avatar/(?P<avatar_id>[^\/]+)/$",
         UserAvatarPhotoView.as_view(),

+ 18 - 0
tests/sentry/web/frontend/test_organization_auth_settings.py

@@ -16,6 +16,7 @@ from sentry.models import (
     SentryAppInstallationForProvider,
 )
 from sentry.testutils import AuthProviderTestCase, PermissionTestCase
+from sentry.testutils.helpers.features import with_feature
 from sentry.testutils.silo import region_silo_test
 
 
@@ -196,6 +197,23 @@ class OrganizationAuthSettingsTest(AuthProviderTestCase):
         ).exists()
         assert not logger.info.called
 
+    @with_feature("organizations:customer-domains")
+    @patch("sentry.auth.helper.logger")
+    def test_basic_flow_customer_domain(self, logger):
+        organization, auth_provider = self.create_org_and_auth_provider()
+        self.create_om_and_link_sso(organization)
+
+        path = reverse("sentry-customer-domain-organization-auth-provider-settings")
+        self.login_as(self.user, organization_id=organization.id)
+
+        with self.feature("organizations:sso-basic"):
+            resp = self.client.get(path, SERVER_NAME=f"{organization.slug}.testserver")
+
+        content = resp.content.decode("utf-8")
+        assert f"http://{organization.slug}.testserver" in content
+        assert f"http://{organization.slug}.testserver/issues" in content
+        assert f"/organziations/{organization.slug}/issues" not in content
+
     @patch("sentry.auth.helper.logger")
     @patch("sentry.auth.providers.dummy.DummyProvider.build_identity")
     def test_basic_flow_error(self, build_identity, logger):