Skip to content

Commit 6b73d0a

Browse files
committed
require verified email to send invites
1 parent 2d3d4f8 commit 6b73d0a

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/sentry/api/endpoints/organization_member/requests/invite/index.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from sentry.api.api_publish_status import ApiPublishStatus
88
from sentry.api.base import region_silo_endpoint
99
from sentry.api.bases.organization import OrganizationEndpoint, OrganizationPermission
10+
from sentry.api.decorators import email_verification_required
1011
from sentry.api.endpoints.organization_member.index import OrganizationMemberRequestSerializer
1112
from sentry.api.paginator import OffsetPaginator
1213
from sentry.api.serializers import serialize
@@ -54,6 +55,7 @@ def get(self, request: Request, organization) -> Response:
5455
paginator_cls=OffsetPaginator,
5556
)
5657

58+
@email_verification_required
5759
def post(self, request: Request, organization) -> Response:
5860
"""
5961
Add a invite request to Organization

tests/sentry/api/endpoints/test_organization_invite_request_index.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
from sentry.models.options.organization_option import OrganizationOption
99
from sentry.models.organizationmember import InviteStatus, OrganizationMember
1010
from sentry.models.organizationmemberteam import OrganizationMemberTeam
11+
from sentry.models.useremail import UserEmail
12+
from sentry.silo.base import SiloMode
1113
from sentry.testutils.cases import APITestCase, SlackActivityNotificationTest
1214
from sentry.testutils.hybrid_cloud import HybridCloudTestMixin
1315
from sentry.testutils.outbox import outbox_runner
@@ -115,6 +117,18 @@ def test_simple(self):
115117

116118
self.assert_org_member_mapping(org_member=member)
117119

120+
def test_inviter_must_have_verified_email(self):
121+
with assume_test_silo_mode(SiloMode.CONTROL):
122+
UserEmail.objects.filter(user=self.user).update(is_verified=False)
123+
124+
self.login_as(user=self.user)
125+
126+
response = self.client.post(
127+
self.url, {"email": "eric@localhost", "role": "member", "teams": [self.team.slug]}
128+
)
129+
130+
assert response.status_code == 401
131+
118132
def test_higher_role(self):
119133
self.login_as(user=self.user)
120134
response = self.client.post(

0 commit comments

Comments
 (0)