[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
This commit is contained in:
Antoine Clausse
2025-10-09 15:41:58 +02:00
committed by Copybot
parent 943af3cd6f
commit f28951e203
5 changed files with 15 additions and 4 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

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