From 558992d947bdb406c0f00abc45369cab7a2a67c8 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Thu, 20 Jul 2023 11:14:21 +0100 Subject: [PATCH] Merge pull request #13916 from overleaf/bg-managed-users-hide-leave-group-action managed users hide leave group action GitOrigin-RevId: 160e31e6935cd3737356714020e057f8c1acc5b8 --- .../Subscription/SubscriptionController.js | 2 ++ .../Subscription/SubscriptionRouter.js | 1 + .../src/Features/User/UserPagesController.js | 2 +- services/web/app/views/layout-base.pug | 1 + services/web/app/views/user/settings.pug | 1 - .../group-subscription-membership.tsx | 23 +++++++++++++++---- 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/services/web/app/src/Features/Subscription/SubscriptionController.js b/services/web/app/src/Features/Subscription/SubscriptionController.js index 312c244003..644c0b1fb8 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionController.js +++ b/services/web/app/src/Features/Subscription/SubscriptionController.js @@ -297,6 +297,8 @@ async function userSubscriptionPage(req, res) { cancelButtonNewCopy, groupPlans: groupPlansDataForDash, groupSettingsEnabledFor, + isManagedAccount: !!req.managedBy, + userRestrictions: Array.from(req.userRestrictions || []), } res.render('subscriptions/dashboard-react', data) } diff --git a/services/web/app/src/Features/Subscription/SubscriptionRouter.js b/services/web/app/src/Features/Subscription/SubscriptionRouter.js index 3795d17c8c..8960719556 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionRouter.js +++ b/services/web/app/src/Features/Subscription/SubscriptionRouter.js @@ -23,6 +23,7 @@ module.exports = { webRouter.get( '/user/subscription', AuthenticationController.requireLogin(), + PermissionsController.useCapabilities(), SubscriptionController.userSubscriptionPage ) diff --git a/services/web/app/src/Features/User/UserPagesController.js b/services/web/app/src/Features/User/UserPagesController.js index ac9190dc1f..61e934aeed 100644 --- a/services/web/app/src/Features/User/UserPagesController.js +++ b/services/web/app/src/Features/User/UserPagesController.js @@ -126,7 +126,7 @@ async function settingsPage(req, res) { showPersonalAccessToken, personalAccessTokens, emailAddressLimit: Settings.emailAddressLimit, - isManagedAccount: !!user.enrollment?.managedBy, + isManagedAccount: !!req.managedBy, userRestrictions: Array.from(req.userRestrictions || []), }) } diff --git a/services/web/app/views/layout-base.pug b/services/web/app/views/layout-base.pug index f2f5f830c8..a1882d4a54 100644 --- a/services/web/app/views/layout-base.pug +++ b/services/web/app/views/layout-base.pug @@ -64,6 +64,7 @@ html( indexName : settings.templates.indexName }) + meta(name="ol-isManagedAccount" data-type="boolean" content=isManagedAccount) each restriction in userRestrictions || [] meta(name='ol-cannot-' + restriction data-type="boolean" content=true) diff --git a/services/web/app/views/user/settings.pug b/services/web/app/views/user/settings.pug index e29f0d2184..a6c265c05e 100644 --- a/services/web/app/views/user/settings.pug +++ b/services/web/app/views/user/settings.pug @@ -25,7 +25,6 @@ block append meta meta(name="ol-showPersonalAccessToken", data-type="boolean" content=showPersonalAccessToken) meta(name="ol-personalAccessTokens", data-type="json" content=personalAccessTokens) meta(name="ol-emailAddressLimit", data-type="json", content=emailAddressLimit) - meta(name="ol-isManagedAccount" data-type="boolean" content=isManagedAccount) block content main.content.content-alt#settings-page-root diff --git a/services/web/frontend/js/features/subscription/components/dashboard/group-subscription-membership.tsx b/services/web/frontend/js/features/subscription/components/dashboard/group-subscription-membership.tsx index fc7b461a80..ae602236fc 100644 --- a/services/web/frontend/js/features/subscription/components/dashboard/group-subscription-membership.tsx +++ b/services/web/frontend/js/features/subscription/components/dashboard/group-subscription-membership.tsx @@ -4,6 +4,7 @@ import { MemberGroupSubscription } from '../../../../../../types/subscription/da import { useSubscriptionDashboardContext } from '../../context/subscription-dashboard-context' import { LEAVE_GROUP_MODAL_ID } from './leave-group-modal' import PremiumFeaturesLink from './premium-features-link' +import getMeta from '../../../../utils/meta.js' type GroupSubscriptionMembershipProps = { subscription: MemberGroupSubscription @@ -23,6 +24,11 @@ export default function GroupSubscriptionMembership({ setLeavingGroupId(subscription._id) } + // Hide leave group button for managed users + const hideLeaveButton = getMeta( + 'ol-cannot-leave-group-subscription' + ) as boolean + return (

@@ -43,11 +49,18 @@ export default function GroupSubscriptionMembership({

)} {isLast && } - - - + {hideLeaveButton ? ( + + {' '} + {t('need_to_leave')} {t('contact_group_admin')}{' '} + + ) : ( + + + + )}
)