コード例 #1
0
    def handle_sso(self, request, organization, auth_provider):
        # if they're authenticated we want them to go through the standard
        # link flow
        if request.user.is_authenticated():
            return self.redirect(
                reverse('sentry-auth-link-identity', args=[organization.slug]))

        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LOGIN,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'CAN_REGISTER': False,
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/organization-login.html', context)
コード例 #2
0
ファイル: auth_link_identity.py プロジェクト: vitaliyf/sentry
    def handle_authed(self, request, organization, auth_provider):
        try:
            om = OrganizationMember.objects.get(
                organization=organization,
                user=request.user,
            )
        except OrganizationMember.DoesNotExist:
            auth_logger.debug('User does is not a member of organization: %s',
                              organization.slug)
            messages.add_message(
                request, messages.ERROR,
                ERR_LINK_INVALID,
            )
            return self.redirect(reverse('sentry'))

        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LINK_IDENTITY,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/auth-link-identity.html', context)
コード例 #3
0
    def handle_sso(self, request, organization, auth_provider):
        # if they're authenticated we want them to go through the standard
        # link flow
        if request.user.is_authenticated():
            return self.redirect(reverse('sentry-auth-link-identity',
                                         args=[organization.slug]))

        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LOGIN,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'CAN_REGISTER': False,
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/organization-login.html', context)
コード例 #4
0
    def handle(self, request, organization_slug):
        try:
            organization = Organization.objects.get(
                slug=organization_slug
            )
        except Organization.DoesNotExist:
            return self.redirect(reverse('sentry-login'))

        try:
            auth_provider = AuthProvider.objects.get(
                organization=organization
            )
        except AuthProvider.DoesNotExist:
            return self.redirect(reverse('sentry-login'))

        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LOGIN,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/organization-login.html', context)
コード例 #5
0
ファイル: test_saml2.py プロジェクト: liang0/sentry-1
    def test_set_session_expiration(self, mock_auth):
        self.org = self.create_organization()
        self.auth_provider = AuthProvider.objects.create(provider="saml2",
                                                         organization=self.org)
        self.provider = SAML2Provider(key=self.auth_provider.provider)
        self.provider.config = dummy_provider_config
        self.auth_provider.get_provider = mock.MagicMock(
            return_value=self.provider)
        super(SAML2ACSViewTest, self).setUp()

        request = self.make_request(user=None)
        request.META = {
            "PATH_INFO": "/",
        }

        test_view = SAML2ACSView()
        helper = AuthHelper(request,
                            self.org,
                            AuthHelper.FLOW_LOGIN,
                            auth_provider=self.auth_provider)

        def mock_next_step(self):
            return

        helper.next_step = types.MethodType(mock_next_step, helper)

        instance = mock_auth.return_value
        instance.get_errors.return_value = None
        instance.get_attributes.return_value = {}
        instance.get_session_expiration.return_value = 1591044492

        test_view.dispatch(request, helper)

        assert request.session.get_expiry_date() == datetime.fromtimestamp(
            1591044492).replace(tzinfo=timezone.utc)
コード例 #6
0
    def handle_authed(self, request, organization, auth_provider):
        om = OrganizationMember.objects.filter(
            organization=organization,
            user=request.user,
        )
        if not om.exists():
            auth_logger.debug('User does is not a member of organization: %s',
                              organization.slug)
            messages.add_message(
                request,
                messages.ERROR,
                ERR_LINK_INVALID,
            )
            return self.redirect(reverse('sentry'))

        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LINK_IDENTITY,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/auth-link-identity.html', context)
コード例 #7
0
    def handle(self, request, organization_slug):
        try:
            organization = Organization.objects.get(slug=organization_slug)
        except Organization.DoesNotExist:
            return self.redirect(reverse('sentry-login'))

        try:
            auth_provider = AuthProvider.objects.get(organization=organization)
        except AuthProvider.DoesNotExist:
            return self.redirect(reverse('sentry-login'))

        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LOGIN,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/organization-login.html', context)
コード例 #8
0
 def handle_provider_setup(self, request, organization, provider_key):
     helper = AuthHelper(
         request=request,
         organization=organization,
         provider_key=provider_key,
         flow=AuthHelper.FLOW_SETUP_PROVIDER,
     )
     helper.init_pipeline()
     return helper.next_step()
コード例 #9
0
 def handle_provider_setup(self, request, organization, provider_key):
     helper = AuthHelper(
         request=request,
         organization=organization,
         provider_key=provider_key,
         flow=AuthHelper.FLOW_SETUP_PROVIDER,
     )
     helper.init_pipeline()
     return helper.next_step()
コード例 #10
0
    def handle(self, request, organization_slug):
        try:
            organization = Organization.objects.get(
                slug=organization_slug
            )
        except Organization.DoesNotExist:
            messages.add_message(
                request, messages.ERROR,
                ERR_LINK_INVALID,
            )
            return self.redirect(reverse('sentry'))

        try:
            om = OrganizationMember.objects.get(
                organization=organization,
                user=request.user,
            )
        except OrganizationMember.DoesNotExist():
            messages.add_message(
                request, messages.ERROR,
                ERR_LINK_INVALID,
            )
            return self.redirect(reverse('sentry'))

        try:
            auth_provider = AuthProvider.objects.get(
                organization=organization
            )
        except AuthProvider.DoesNotExist:
            messages.add_message(
                request, messages.ERROR,
                ERR_LINK_INVALID,
            )
            return self.redirect(reverse('sentry-organization-home',
                                         args=[organization.slug]))

        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LINK_IDENTITY,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/auth-link-identity.html', context)
コード例 #11
0
    def handle(self, request, organization_slug):
        try:
            organization = Organization.objects.get(slug=organization_slug)
        except Organization.DoesNotExist:
            messages.add_message(
                request,
                messages.ERROR,
                ERR_LINK_INVALID,
            )
            return self.redirect(reverse('sentry'))

        try:
            om = OrganizationMember.objects.get(
                organization=organization,
                user=request.user,
            )
        except OrganizationMember.DoesNotExist:
            messages.add_message(
                request,
                messages.ERROR,
                ERR_LINK_INVALID,
            )
            return self.redirect(reverse('sentry'))

        try:
            auth_provider = AuthProvider.objects.get(organization=organization)
        except AuthProvider.DoesNotExist:
            messages.add_message(
                request,
                messages.ERROR,
                ERR_LINK_INVALID,
            )
            return self.redirect(
                reverse('sentry-organization-home', args=[organization.slug]))

        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LINK_IDENTITY,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/auth-link-identity.html', context)
コード例 #12
0
    def handle_sso(self, request, organization, auth_provider):
        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LOGIN,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'CAN_REGISTER': False,
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/organization-login.html', context)
コード例 #13
0
    def handle_sso(self, request, organization, auth_provider):
        if request.method == 'POST':
            helper = AuthHelper(
                request=request,
                organization=organization,
                auth_provider=auth_provider,
                flow=AuthHelper.FLOW_LOGIN,
            )
            helper.init_pipeline()
            return helper.next_step()

        provider = auth_provider.get_provider()

        context = {
            'CAN_REGISTER': False,
            'organization': organization,
            'provider_key': provider.key,
            'provider_name': provider.name,
        }

        return self.respond('sentry/organization-login.html', context)