diff --git a/src/sentry/api/endpoints/auth_config.py b/src/sentry/api/endpoints/auth_config.py index 987dbb010ce7..9077ed341139 100644 --- a/src/sentry/api/endpoints/auth_config.py +++ b/src/sentry/api/endpoints/auth_config.py @@ -4,7 +4,6 @@ from django.contrib.auth import REDIRECT_FIELD_NAME from django.http.request import HttpRequest from django.http.response import HttpResponseBase -from django.urls import reverse from rest_framework.request import Request from rest_framework.response import Response @@ -42,6 +41,7 @@ class AuthConfigResponse(TypedDict): vstsLoginLink: NotRequired[str] warning: NotRequired[str] loginBannerMarkdown: NotRequired[str] + singleOrganizationSlug: NotRequired[str] @control_silo_endpoint @@ -83,12 +83,10 @@ def get(self, request: Request, *args, **kwargs) -> Response: # Auth login verifies the test cookie is set request.session.set_test_cookie() - # Single org mode -- send them to the org-specific handler + payload = self.prepare_login_context(request, *args, **kwargs) if settings.SENTRY_SINGLE_ORGANIZATION: - org = Organization.get_default() - return Response({"nextUri": reverse("sentry-auth-organization", args=[org.slug])}) + payload["singleOrganizationSlug"] = Organization.get_default().slug - payload = self.prepare_login_context(request, *args, **kwargs) return self.respond_with_login_context(request, payload) def respond_with_login_context(self, request: Request, payload: AuthConfigResponse) -> Response: diff --git a/tests/sentry/api/endpoints/test_auth_config.py b/tests/sentry/api/endpoints/test_auth_config.py index f8db5d66f799..595e204e7e16 100644 --- a/tests/sentry/api/endpoints/test_auth_config.py +++ b/tests/sentry/api/endpoints/test_auth_config.py @@ -60,7 +60,24 @@ def test_single_org(self) -> None: response = self.client.get(self.path) assert response.status_code == 200 - assert response.data["nextUri"] == "/auth/login/sentry/" + assert response.data == { + "canRegister": False, + "hasNewsletter": False, + "pendingMfa": None, + "serverHostname": "testserver", + "singleOrganizationSlug": "sentry", + } + + @override_settings(SENTRY_SINGLE_ORGANIZATION=True) + @assume_test_silo_mode(SiloMode.MONOLITH) + def test_authenticated_single_org(self) -> None: + create_default_projects() + self.login_as(self.create_user("user@example.com")) + + response = self.client.get(self.path) + + assert response.status_code == 200 + assert set(response.data) == {"nextUri"} def test_superuser_is_not_redirected(self) -> None: user = self.create_user("foo@example.com", is_superuser=True)