def _get_member(self, organization, member_id):
     try:
         return OrganizationMember.objects.get(
             Q(invite_status=InviteStatus.REQUESTED_TO_BE_INVITED.value)
             | Q(invite_status=InviteStatus.REQUESTED_TO_JOIN.value),
             organization=organization,
             user__isnull=True,
             id=member_id,
         )
     except ValueError:
         raise OrganizationMember.DoesNotExist()
Esempio n. 2
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)
Esempio n. 3
0
 def _get_member(
     self,
     request: Request,
     organization: Organization,
     member_id: int | str,
     invite_status: InviteStatus | None = None,
 ) -> OrganizationMember:
     try:
         return OrganizationMember.objects.get_member_invite_query(
             member_id).get(organization=organization)
     except ValueError:
         raise OrganizationMember.DoesNotExist()
Esempio n. 4
0
 def _get_member(
     self,
     request: Request,
     organization: Organization,
     member_id: int | str,
     invite_status: InviteStatus | None = None,
 ) -> OrganizationMember:
     try:
         return super()._get_member(request,
                                    organization,
                                    member_id,
                                    invite_status=InviteStatus.APPROVED)
     except ValueError:
         raise OrganizationMember.DoesNotExist()
Esempio n. 5
0
 def _get_member(self, request, organization, member_id):
     if member_id == "me":
         queryset = OrganizationMember.objects.filter(
             organization=organization, user__id=request.user.id, user__is_active=True
         )
     else:
         try:
             queryset = OrganizationMember.objects.filter(
                 Q(user__is_active=True) | Q(user__isnull=True),
                 organization=organization,
                 id=member_id,
             )
         except ValueError:
             raise OrganizationMember.DoesNotExist()
     return queryset.select_related("user").get()
Esempio n. 6
0
 def _get_member(self, organization, member_id):
     try:
         return OrganizationMember.objects.get_member_invite_query(
             member_id).get(organization=organization)
     except ValueError:
         raise OrganizationMember.DoesNotExist()