def email_missing_links(org_id, actor_id, provider_key, **kwargs): try: org = Organization.objects.get(id=org_id) actor = User.objects.get(id=actor_id) provider = manager.get(provider_key) except (Organization.DoesNotExist, User.DoesNotExist, ProviderNotRegistered) as e: logger.warning("Could not send SSO link emails: %s", e) return member_list = OrganizationMember.objects.filter( organization=org, flags=F("flags").bitand(~OrganizationMember.flags["sso:linked"]) ) for member in member_list: member.send_sso_link_email(actor, provider)
def email_missing_links(org_id, configurer_id, provider_key, **kwargs): try: org = Organization.objects.get(id=org_id) configurer = User.objects.get(id=configurer_id) provider = manager.get(provider_key) except(Organization.DoesNotExist, User.DoesNotExist, ProviderNotRegistered) as e: logger.warning('Could not send SSO link emails: %s', e) return member_list = OrganizationMember.objects.filter( organization=org, flags=~getattr(OrganizationMember.flags, 'sso:linked'), ) for member in member_list: member.send_sso_link_email(configurer, provider)
def email_missing_links(org_id, actor_id, provider_key, **kwargs): try: org = Organization.objects.get(id=org_id) actor = User.objects.get(id=actor_id) provider = manager.get(provider_key) except(Organization.DoesNotExist, User.DoesNotExist, ProviderNotRegistered) as e: logger.warning('Could not send SSO link emails: %s', e) return member_list = OrganizationMember.objects.filter( organization=org, flags=F('flags').bitand(~OrganizationMember.flags['sso:linked']), ) for member in member_list: member.send_sso_link_email(actor, provider)
def email_unlink_notifications(org_id, actor_id, provider_key): try: org = Organization.objects.get(id=org_id) actor = User.objects.get(id=actor_id) provider = manager.get(provider_key) except(Organization.DoesNotExist, User.DoesNotExist, ProviderNotRegistered) as e: logger.warning('Could not send SSO unlink emails: %s', e) return # Email all organization users, even if they never linked their accounts. # This provides a better experience in the case where SSO is enabled and # disabled in the timespan of users checking their email. member_list = OrganizationMember.objects.filter(organization=org).select_related('user') for member in member_list: member.send_sso_unlink_email(actor, provider)
def email_unlink_notifications(org_id, actor_id, provider_key): try: org = Organization.objects.get(id=org_id) actor = User.objects.get(id=actor_id) provider = manager.get(provider_key) except (Organization.DoesNotExist, User.DoesNotExist, ProviderNotRegistered) as e: logger.warning("Could not send SSO unlink emails: %s", e) return # Email all organization users, even if they never linked their accounts. # This provides a better experience in the case where SSO is enabled and # disabled in the timespan of users checking their email. member_list = OrganizationMember.objects.filter(organization=org).select_related("user") for member in member_list: member.send_sso_unlink_email(actor, provider)
def test_send_sso_unlink_email(self, builder): user = self.create_user(email="*****@*****.**") user.password = "" user.save() organization = self.create_organization() member = self.create_member(user=user, organization=organization) provider = manager.get("dummy") with self.options({"system.url-prefix": "http://example.com"}), self.tasks(): member.send_sso_unlink_email(user, provider) context = builder.call_args[1]["context"] assert context["organization"] == organization assert context["provider"] == provider assert not context["has_password"] assert "set_password_url" in context
def test_send_sso_unlink_email(self, builder): user = self.create_user(email='*****@*****.**') user.password = '' user.save() organization = self.create_organization() member = self.create_member(user=user, organization=organization) provider = manager.get('dummy') with self.options({'system.url-prefix': 'http://example.com'}), self.tasks(): member.send_sso_unlink_email(user, provider) context = builder.call_args[1]['context'] assert context['organization'] == organization assert context['provider'] == provider assert not context['has_password'] assert 'set_password_url' in context
def get_provider(self): from sentry.auth import manager return manager.get(self.provider, **self.config)