Bladeren bron

[web] Fix group audit log link displayed to managers (#28084)

* [web] Fix group audit log link displayed to managers

* Fix incorrect query in test

GitOrigin-RevId: f5a68ef60f9c19f2e2003b05424b5a88f7a1cad3
Miguel Serrano 11 maanden geleden
bovenliggende
commit
ad4f376431

+ 18 - 11
services/web/frontend/js/features/subscription/components/dashboard/managed-group-subscriptions.tsx

@@ -88,6 +88,9 @@ function ManagedGroupAdministrator({
 
 export default function ManagedGroupSubscriptions() {
   const { t } = useTranslation()
+
+  const usersEmail = getMeta('ol-usersEmail')
+
   const { managedGroupSubscriptions } = useSubscriptionDashboardContext()
 
   if (!managedGroupSubscriptions) {
@@ -101,6 +104,8 @@ export default function ManagedGroupSubscriptions() {
   return (
     <>
       {managedGroupSubscriptions.map(subscription => {
+        const isAdmin = usersEmail === subscription.admin_id.email
+
         return (
           <div key={`managed-group-${subscription._id}`}>
             <h2 className="h3 fw-bold">{t('group_management')}</h2>
@@ -126,17 +131,19 @@ export default function ManagedGroupSubscriptions() {
               {groupSettingsAdvertisedFor?.includes(subscription._id) && (
                 <GroupSettingsButtonWithAdBadge subscription={subscription} />
               )}
-              <RowLink
-                href={`/manage/groups/${subscription._id}/audit-logs`}
-                heading={t('audit_logs')}
-                subtext={t('view_audit_logs_group_subtext')}
-                icon="list"
-                onClick={() =>
-                  sendMB('group-audit-log-click', {
-                    subscriptionId: subscription._id,
-                  })
-                }
-              />
+              {isAdmin && (
+                <RowLink
+                  href={`/manage/groups/${subscription._id}/audit-logs`}
+                  heading={t('audit_logs')}
+                  subtext={t('view_audit_logs_group_subtext')}
+                  icon="list"
+                  onClick={() =>
+                    sendMB('group-audit-log-click', {
+                      subscriptionId: subscription._id,
+                    })
+                  }
+                />
+              )}
               <RowLink
                 href={`/metrics/groups/${subscription._id}`}
                 heading={t('usage_metrics')}

+ 41 - 13
services/web/test/frontend/features/subscription/components/dashboard/managed-group-subscriptions.test.tsx

@@ -124,31 +124,28 @@ describe('<ManagedGroupSubscriptions />', function () {
     expect(links[2].getAttribute('href')).to.equal(
       '/manage/groups/bcd567/managers'
     )
-    expect(links[3].getAttribute('href')).to.equal(
-      '/manage/groups/bcd567/audit-logs'
-    )
-    expect(links[4].getAttribute('href')).to.equal('/metrics/groups/bcd567')
-    expect(links[6].getAttribute('href')).to.equal(
+    expect(links[3].getAttribute('href')).to.equal('/metrics/groups/bcd567')
+    expect(links[5].getAttribute('href')).to.equal(
       '/manage/groups/def456/members'
     )
-    expect(links[7].getAttribute('href')).to.equal(
+    expect(links[6].getAttribute('href')).to.equal(
       '/manage/groups/def456/managers'
     )
-    expect(links[9].getAttribute('href')).to.equal('/metrics/groups/def456')
-    expect(links[11].getAttribute('href')).to.equal(
+    expect(links[7].getAttribute('href')).to.equal('/metrics/groups/def456')
+    expect(links[9].getAttribute('href')).to.equal(
       '/manage/groups/group2abc/members'
     )
-    expect(links[12].getAttribute('href')).to.equal(
+    expect(links[10].getAttribute('href')).to.equal(
       '/manage/groups/group2abc/managers'
     )
-    expect(links[14].getAttribute('href')).to.equal('/metrics/groups/group2abc')
-    expect(links[16].getAttribute('href')).to.equal(
+    expect(links[12].getAttribute('href')).to.equal('/metrics/groups/group2abc')
+    expect(links[14].getAttribute('href')).to.equal(
       '/manage/groups/group123abc/members'
     )
-    expect(links[17].getAttribute('href')).to.equal(
+    expect(links[15].getAttribute('href')).to.equal(
       '/manage/groups/group123abc/managers'
     )
-    expect(links[19].getAttribute('href')).to.equal(
+    expect(links[17].getAttribute('href')).to.equal(
       '/metrics/groups/group123abc'
     )
   })
@@ -180,6 +177,37 @@ describe('<ManagedGroupSubscriptions />', function () {
       .be.null
   })
 
+  it('does not render the Group Audit Log settings row when the user is not the group admin', function () {
+    renderWithSubscriptionDashContext(<ManagedGroupSubscriptions />, {
+      metaTags: [
+        {
+          name: 'ol-managedGroupSubscriptions',
+          value: managedGroupSubscriptions2,
+        },
+        {
+          name: 'ol-groupSettingsEnabledFor',
+          value: [],
+        },
+      ],
+    })
+
+    expect(screen.queryByText('Audit logs')).to.be.null
+  })
+
+  it('renders the Group Audit Log settings row when the user is the group admin', async function () {
+    renderWithSubscriptionDashContext(<ManagedGroupSubscriptions />, {
+      metaTags: [
+        {
+          name: 'ol-managedGroupSubscriptions',
+          value: managedGroupSubscriptions,
+        },
+        { name: 'ol-usersEmail', value: 'admin@example.com' },
+      ],
+    })
+
+    await screen.findAllByText('Audit logs')
+  })
+
   it('renders Managed Group / Group SSO settings row when both features are turned on', async function () {
     renderWithSubscriptionDashContext(<ManagedGroupSubscriptions />, {
       metaTags: [