Просмотр исходного кода

[web] Hide the "Project URL lookup" menu item for admins without view-project-setting (#28952)

the destination of that link (https://admin.stag-overleaf.com/admin/project) is blocked correctly already

GitOrigin-RevId: e94978d9fe77b3da3a5dab1dd2998beca6e26102
Antoine Clausse 10 месяцев назад
Родитель
Сommit
0abab86dc1

+ 2 - 0
services/web/app/views/layout-react.pug

@@ -12,6 +12,7 @@ block append meta
 	- const canDisplayAdminRedirect = canRedirectToAdminDomain()
 	- const sessionUser = getSessionUser()
 	- const staffAccess = sessionUser?.staffAccess
+	- const canDisplayProjectUrlLookup = hasFeature('saas') && canDisplayAdminMenu && hasAdminCapability('view-project-setting', false)
 	- const canDisplaySplitTestMenu = hasFeature('saas') && ((canDisplayAdminMenu && hasAdminCapability('view-split-test')) || staffAccess?.splitTestMetrics || staffAccess?.splitTestManagement)
 	- const canDisplaySurveyMenu = hasFeature('saas') && canDisplayAdminMenu && hasAdminCapability('manage-survey', false)
 	- const canDisplayScriptLogMenu = hasFeature('saas') && hasAdminCapability('view-script-log', false) && canDisplayAdminMenu
@@ -26,6 +27,7 @@ block append meta
 			title: nav.title,
 			canDisplayAdminMenu,
 			canDisplayAdminRedirect,
+			canDisplayProjectUrlLookup,
 			canDisplaySplitTestMenu,
 			canDisplaySurveyMenu,
 			canDisplayScriptLogMenu,

+ 3 - 1
services/web/app/views/layout/navbar-marketing.pug

@@ -30,6 +30,7 @@ nav.navbar.navbar-default.navbar-main.navbar-expand-lg(
 
 		- var canDisplayAdminMenu = hasAdminAccess()
 		- var canDisplayAdminRedirect = canRedirectToAdminDomain()
+		- var canDisplayProjectUrlLookup = hasFeature('saas') && canDisplayAdminMenu && hasAdminCapability('view-project-setting', false)
 		- var canDisplaySplitTestMenu = hasFeature('saas') && ((canDisplayAdminMenu && hasAdminCapability('view-split-test')) || (getSessionUser() && getSessionUser().staffAccess && (getSessionUser().staffAccess.splitTestMetrics || getSessionUser().staffAccess.splitTestManagement)))
 		- var canDisplaySurveyMenu = hasFeature('saas') && canDisplayAdminMenu && hasAdminCapability('manage-survey', false)
 		- var canDisplayScriptLogMenu = hasFeature('saas') && hasAdminCapability('view-script-log', false) && canDisplayAdminMenu
@@ -47,7 +48,7 @@ nav.navbar.navbar-default.navbar-main.navbar-expand-lg(
 
 			#navbar-main-collapse.navbar-collapse.collapse
 				ul.nav.navbar-nav.navbar-right.ms-auto(role='menubar')
-					if canDisplayAdminMenu || canDisplayAdminRedirect || canDisplaySplitTestMenu
+					if canDisplayAdminMenu || canDisplayAdminRedirect || canDisplayProjectUrlLookup || canDisplaySplitTestMenu
 						+nav-item.dropdown.subdued
 							button.dropdown-toggle(
 								aria-haspopup='true'
@@ -64,6 +65,7 @@ nav.navbar.navbar-default.navbar-main.navbar-expand-lg(
 								if canDisplayAdminMenu
 									+dropdown-menu-link-item(href='/admin') Manage Site
 									+dropdown-menu-link-item(href='/admin/user') Manage Users
+								if canDisplayProjectUrlLookup
 									+dropdown-menu-link-item(href='/admin/project') Project URL Lookup
 								if canDisplayAdminRedirect
 									+dropdown-menu-link-item(href=settings.adminUrl) Switch to Admin

+ 7 - 3
services/web/frontend/js/shared/components/navbar/admin-menu.tsx

@@ -6,6 +6,7 @@ import { useSendProjectListMB } from '@/features/project-list/components/project
 export default function AdminMenu({
   canDisplayAdminMenu,
   canDisplayAdminRedirect,
+  canDisplayProjectUrlLookup,
   canDisplaySplitTestMenu,
   canDisplaySurveyMenu,
   canDisplayScriptLogMenu,
@@ -14,6 +15,7 @@ export default function AdminMenu({
   DefaultNavbarMetadata,
   | 'canDisplayAdminMenu'
   | 'canDisplayAdminRedirect'
+  | 'canDisplayProjectUrlLookup'
   | 'canDisplaySplitTestMenu'
   | 'canDisplaySurveyMenu'
   | 'canDisplayScriptLogMenu'
@@ -39,11 +41,13 @@ export default function AdminMenu({
           <NavDropdownLinkItem href="/admin/user">
             Manage Users
           </NavDropdownLinkItem>
-          <NavDropdownLinkItem href="/admin/project">
-            Project URL lookup
-          </NavDropdownLinkItem>
         </>
       ) : null}
+      {canDisplayProjectUrlLookup ? (
+        <NavDropdownLinkItem href="/admin/project">
+          Project URL lookup
+        </NavDropdownLinkItem>
+      ) : null}
       {canDisplayAdminRedirect && adminUrl ? (
         <NavDropdownLinkItem href={adminUrl}>
           Switch to Admin

+ 2 - 0
services/web/frontend/js/shared/components/navbar/default-navbar.tsx

@@ -26,6 +26,7 @@ function DefaultNavbar(
     title,
     canDisplayAdminMenu,
     canDisplayAdminRedirect,
+    canDisplayProjectUrlLookup,
     canDisplaySplitTestMenu,
     canDisplaySurveyMenu,
     canDisplayScriptLogMenu,
@@ -112,6 +113,7 @@ function DefaultNavbar(
                     <AdminMenu
                       canDisplayAdminMenu={canDisplayAdminMenu}
                       canDisplayAdminRedirect={canDisplayAdminRedirect}
+                      canDisplayProjectUrlLookup={canDisplayProjectUrlLookup}
                       canDisplaySplitTestMenu={canDisplaySplitTestMenu}
                       canDisplaySurveyMenu={canDisplaySurveyMenu}
                       canDisplayScriptLogMenu={canDisplayScriptLogMenu}

+ 1 - 0
services/web/frontend/js/shared/components/types/default-navbar-metadata.ts

@@ -8,6 +8,7 @@ export type DefaultNavbarMetadata = {
   title?: string
   canDisplayAdminMenu: boolean
   canDisplayAdminRedirect: boolean
+  canDisplayProjectUrlLookup: boolean
   canDisplaySplitTestMenu: boolean
   canDisplaySurveyMenu: boolean
   canDisplayScriptLogMenu: boolean