Skip to content

Commit 12b3629

Browse files
authored
chore(clerk-js,types): Remove system delete permission for domains and memberships (#2256) (#2270)
1 parent b94f32a commit 12b3629

File tree

7 files changed

+17
-29
lines changed

7 files changed

+17
-29
lines changed

.changeset/moody-zoos-deliver.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@clerk/clerk-js': patch
3+
'@clerk/types': patch
4+
---
5+
6+
Drop `org:sys_domains:delete` and `org:sys_memberships:delete` as those have now been merged with the respective `manage` ones.

packages/clerk-js/src/core/test/fixtures.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,8 @@ export const createOrganizationMembership = (params: OrgParams): OrganizationMem
5656
public_metadata: {},
5757
role: role || 'admin',
5858
permissions: permissions || [
59-
'org:sys_domains:delete',
6059
'org:sys_domains:manage',
6160
'org:sys_domains:read',
62-
'org:sys_memberships:delete',
6361
'org:sys_memberships:manage',
6462
'org:sys_memberships:read',
6563
'org:sys_profile:delete',

packages/clerk-js/src/ui/components/OrganizationProfile/ActiveMembersList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ const MemberRow = (props: {
122122
</Gate>
123123
</Td>
124124
<Td>
125-
<Gate permission={'org:sys_memberships:delete'}>
125+
<Gate permission={'org:sys_memberships:manage'}>
126126
<ThreeDotsMenu
127127
actions={[
128128
{

packages/clerk-js/src/ui/components/OrganizationProfile/DomainList.tsx

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,37 +23,24 @@ type DomainListProps = GetDomainsParams & {
2323
fallback?: React.ReactNode;
2424
};
2525

26-
const useDomainList = () => {
27-
const { isAuthorizedUser: canDeleteDomain } = useGate({ permission: 'org:sys_domains:delete' });
28-
const { isAuthorizedUser: canVerifyDomain } = useGate({ permission: 'org:sys_domains:manage' });
29-
30-
return {
31-
showDotMenu: canDeleteDomain || canVerifyDomain,
32-
canVerifyDomain,
33-
canDeleteDomain,
34-
};
35-
};
36-
3726
const buildDomainListRelativeURL = (parentPath: string, domainId: string, mode?: 'verify' | 'remove') =>
3827
trimLeadingSlash(stripOrigin(toURL(`${parentPath}/${domainId}/${mode || ''}`)));
3928

4029
const useMenuActions = (
4130
parentPath: string,
4231
domainId: string,
4332
): { label: LocalizationKey; onClick: () => Promise<unknown>; isDestructive?: boolean }[] => {
44-
const { canDeleteDomain, canVerifyDomain } = useDomainList();
33+
const { isAuthorizedUser: canManageDomain } = useGate({ permission: 'org:sys_domains:manage' });
34+
4535
const { navigate } = useRouter();
4636

4737
const menuActions = [];
4838

49-
if (canVerifyDomain) {
39+
if (canManageDomain) {
5040
menuActions.push({
5141
label: localizationKeys('organizationProfile.profilePage.domainSection.unverifiedDomain_menuAction__verify'),
5242
onClick: () => navigate(buildDomainListRelativeURL(parentPath, domainId, 'verify')),
5343
});
54-
}
55-
56-
if (canDeleteDomain) {
5744
menuActions.push({
5845
label: localizationKeys('organizationProfile.profilePage.domainSection.unverifiedDomain_menuAction__remove'),
5946
isDestructive: true,
@@ -84,7 +71,7 @@ export const DomainList = withGate(
8471
},
8572
});
8673

87-
const { showDotMenu } = useDomainList();
74+
const { isAuthorizedUser: canManageDomain } = useGate({ permission: 'org:sys_domains:manage' });
8875
const { ref } = useInView({
8976
threshold: 0,
9077
onChange: inView => {
@@ -123,7 +110,7 @@ export const DomainList = withGate(
123110
<Col>
124111
{domainList.length === 0 && !domains?.isLoading && fallback}
125112
{domainList.map(d => {
126-
if (!(d.verification && d.verification.status === 'verified') || !showDotMenu) {
113+
if (!(d.verification && d.verification.status === 'verified') || !canManageDomain) {
127114
return (
128115
<BlockWithTrailingComponent
129116
key={d.id}
@@ -136,7 +123,7 @@ export const DomainList = withGate(
136123
})}
137124
badge={<EnrollmentBadge organizationDomain={d} />}
138125
trailingComponent={
139-
showDotMenu ? (
126+
canManageDomain ? (
140127
<DomainListDotMenu
141128
redirectSubPath={redirectSubPath}
142129
domainId={d.id}

packages/clerk-js/src/ui/components/OrganizationProfile/OrganizationProfileRoutes.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ export const OrganizationProfileRoutes = (props: PropsOfComponent<typeof Profile
6969
</Route>
7070
<Route path=':id/remove'>
7171
<Gate
72-
permission={'org:sys_domains:delete'}
72+
permission={'org:sys_domains:manage'}
7373
redirectTo='../../'
7474
>
7575
<RemoveDomainPage />
7676
</Gate>
7777
</Route>
7878
<Route path=':id'>
7979
<Gate
80-
some={[{ permission: 'org:sys_domains:manage' }, { permission: 'org:sys_domains:delete' }]}
80+
permission={'org:sys_domains:manage'}
8181
redirectTo='../../'
8282
>
8383
<VerifiedDomainPage />

packages/clerk-js/src/ui/components/OrganizationProfile/VerifiedDomainPage.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ export const VerifiedDomainPage = withCardStateProvider(() => {
6262
});
6363

6464
const { isAuthorizedUser: canManageDomain } = useGate({ permission: 'org:sys_domains:manage' });
65-
const { isAuthorizedUser: canDeleteDomain } = useGate({ permission: 'org:sys_domains:delete' });
6665

6766
const { navigateToFlowStart } = useNavigateToFlowStart();
6867
const { params, navigate, queryParams } = useRouter();
@@ -210,7 +209,7 @@ export const VerifiedDomainPage = withCardStateProvider(() => {
210209
)}
211210
/>
212211
)}
213-
{allowsEdit && canDeleteDomain && (
212+
{allowsEdit && canManageDomain && (
214213
<Tab
215214
localizationKey={localizationKeys('organizationProfile.verifiedDomainPage.start.headerTitle__danger')}
216215
/>
@@ -270,7 +269,7 @@ export const VerifiedDomainPage = withCardStateProvider(() => {
270269
</Form.Root>
271270
</TabPanel>
272271
)}
273-
{allowsEdit && canDeleteDomain && (
272+
{allowsEdit && canManageDomain && (
274273
<TabPanel
275274
direction={'col'}
276275
gap={4}

packages/types/src/organizationMembership.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,10 @@ export type MembershipRole = 'admin' | 'basic_member' | 'guest_member' | (string
4646

4747
export type OrganizationPermission =
4848
| 'org:sys_domains:manage'
49-
| 'org:sys_domains:delete'
5049
| 'org:sys_profile:manage'
5150
| 'org:sys_profile:delete'
5251
| 'org:sys_memberships:read'
5352
| 'org:sys_memberships:manage'
54-
| 'org:sys_memberships:delete'
5553
| 'org:sys_domains:read';
5654

5755
export type UpdateOrganizationMembershipParams = {

0 commit comments

Comments
 (0)