diff --git a/src/app/(main)/settings/websites/[websiteId]/WebsiteTransferForm.tsx b/src/app/(main)/settings/websites/[websiteId]/WebsiteTransferForm.tsx index db46c212..eb568a7f 100644 --- a/src/app/(main)/settings/websites/[websiteId]/WebsiteTransferForm.tsx +++ b/src/app/(main)/settings/websites/[websiteId]/WebsiteTransferForm.tsx @@ -71,7 +71,7 @@ export function WebsiteTransferForm({ {result.data .filter(({ teamUser }) => teamUser.find( - ({ role, userId }) => role === ROLES.teamOwner && userId === user.id, + ({ role, userId }) => [ ROLES.teamOwner, ROLES.teamManager ].includes(role) && userId === user.id, ), ) .map(({ id, name }) => { diff --git a/src/lib/auth.ts b/src/lib/auth.ts index 5b17cf13..12fb0a28 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -106,7 +106,7 @@ export async function canTransferWebsiteToUser({ user }: Auth, websiteId: string if (website.teamId && user.id === userId) { const teamUser = await getTeamUser(website.teamId, userId); - return teamUser?.role === ROLES.teamOwner; + return teamUser && hasPermission(teamUser.role, PERMISSIONS.websiteTransferToUser); } return false; @@ -118,7 +118,7 @@ export async function canTransferWebsiteToTeam({ user }: Auth, websiteId: string if (website.userId && website.userId === user.id) { const teamUser = await getTeamUser(teamId, user.id); - return teamUser?.role === ROLES.teamOwner; + return teamUser && hasPermission(teamUser.role, PERMISSIONS.websiteTransferToTeam); } return false; diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 35917802..25030708 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -160,6 +160,8 @@ export const PERMISSIONS = { websiteCreate: 'website:create', websiteUpdate: 'website:update', websiteDelete: 'website:delete', + websiteTransferToTeam: 'website:transfer-to-team', + websiteTransferToUser: 'website:transfer-to-user', teamCreate: 'team:create', teamUpdate: 'team:update', teamDelete: 'team:delete', @@ -180,12 +182,15 @@ export const ROLE_PERMISSIONS = { PERMISSIONS.websiteCreate, PERMISSIONS.websiteUpdate, PERMISSIONS.websiteDelete, + PERMISSIONS.websiteTransferToTeam, + PERMISSIONS.websiteTransferToUser, ], [ROLES.teamManager]: [ PERMISSIONS.teamUpdate, PERMISSIONS.websiteCreate, PERMISSIONS.websiteUpdate, PERMISSIONS.websiteDelete, + PERMISSIONS.websiteTransferToTeam, ], [ROLES.teamMember]: [ PERMISSIONS.websiteCreate,