mirror of
https://github.com/overleaf/overleaf.git
synced 2025-03-15 04:24:52 +00:00
Merge pull request #7210 from overleaf/jpa-switch-to-admin
[web] add a button for switching to the admin domain from www. GitOrigin-RevId: 7e14b9c1415ef6cad5f369d77530599bac3148e7
This commit is contained in:
parent
c8866bbda0
commit
4d18dcb377
6 changed files with 18 additions and 7 deletions
|
@ -8,12 +8,12 @@ const SessionManager = require('../Authentication/SessionManager')
|
|||
const TokenAccessHandler = require('../TokenAccess/TokenAccessHandler')
|
||||
const { expressify } = require('../../util/promises')
|
||||
const {
|
||||
shouldRedirectToAdminDomain,
|
||||
canRedirectToAdminDomain,
|
||||
} = require('../Helpers/AdminAuthorizationHelper')
|
||||
const { getSafeAdminDomainRedirect } = require('../Helpers/UrlHelper')
|
||||
|
||||
function handleAdminDomainRedirect(req, res) {
|
||||
if (shouldRedirectToAdminDomain(SessionManager.getSessionUser(req.session))) {
|
||||
if (canRedirectToAdminDomain(SessionManager.getSessionUser(req.session))) {
|
||||
logger.warn({ req }, 'redirecting admin user to admin domain')
|
||||
res.redirect(getSafeAdminDomainRedirect(req.originalUrl))
|
||||
return true
|
||||
|
|
|
@ -2,7 +2,7 @@ const Settings = require('@overleaf/settings')
|
|||
|
||||
module.exports = {
|
||||
hasAdminAccess,
|
||||
shouldRedirectToAdminDomain,
|
||||
canRedirectToAdminDomain,
|
||||
}
|
||||
|
||||
function hasAdminAccess(user) {
|
||||
|
@ -11,7 +11,7 @@ function hasAdminAccess(user) {
|
|||
return Boolean(user.isAdmin)
|
||||
}
|
||||
|
||||
function shouldRedirectToAdminDomain(user) {
|
||||
function canRedirectToAdminDomain(user) {
|
||||
if (Settings.adminPrivilegeAvailable) return false
|
||||
if (!Settings.adminUrl) return false
|
||||
if (!user) return false
|
||||
|
|
|
@ -13,6 +13,7 @@ const PackageVersions = require('./PackageVersions')
|
|||
const Modules = require('./Modules')
|
||||
const SafeHTMLSubstitute = require('../Features/Helpers/SafeHTMLSubstitution')
|
||||
const {
|
||||
canRedirectToAdminDomain,
|
||||
hasAdminAccess,
|
||||
} = require('../Features/Helpers/AdminAuthorizationHelper')
|
||||
|
||||
|
@ -302,6 +303,8 @@ module.exports = function (webRouter, privateApiRouter, publicApiRouter) {
|
|||
res.locals.getLoggedInUserId = () =>
|
||||
SessionManager.getLoggedInUserId(req.session)
|
||||
res.locals.getSessionUser = () => SessionManager.getSessionUser(req.session)
|
||||
res.locals.canRedirectToAdminDomain = () =>
|
||||
canRedirectToAdminDomain(SessionManager.getSessionUser(req.session))
|
||||
res.locals.hasAdminAccess = () =>
|
||||
hasAdminAccess(SessionManager.getSessionUser(req.session))
|
||||
next()
|
||||
|
|
|
@ -16,10 +16,11 @@ nav.navbar.navbar-default.navbar-main
|
|||
a(href='/', aria-label=settings.appName).navbar-brand
|
||||
|
||||
- var canDisplayAdminMenu = hasAdminAccess()
|
||||
- var canDisplayAdminRedirect = canRedirectToAdminDomain()
|
||||
- var canDisplaySplitTestMenu = hasFeature('saas') && (canDisplayAdminMenu || (getSessionUser() && getSessionUser().staffAccess && (getSessionUser().staffAccess.splitTestMetrics || getSessionUser().staffAccess.splitTestManagement)))
|
||||
.navbar-collapse.collapse(data-ol-navbar-main-collapse)
|
||||
ul.nav.navbar-nav.navbar-right
|
||||
if (canDisplayAdminMenu || canDisplaySplitTestMenu)
|
||||
if (canDisplayAdminMenu || canDisplayAdminRedirect || canDisplaySplitTestMenu)
|
||||
li.dropdown.subdued
|
||||
a.dropdown-toggle(
|
||||
href="#",
|
||||
|
@ -38,6 +39,9 @@ nav.navbar.navbar-default.navbar-main
|
|||
a(href="/admin/user") Manage Users
|
||||
li
|
||||
a(href="/admin/project") Project URL Lookup
|
||||
if canDisplayAdminRedirect
|
||||
li
|
||||
a(href=settings.adminUrl) Switch to Admin
|
||||
if canDisplaySplitTestMenu
|
||||
li
|
||||
a(href="/admin/split-test") Manage Split Tests
|
||||
|
|
|
@ -11,10 +11,11 @@ nav.navbar.navbar-default.navbar-main
|
|||
a(href='/', aria-label=settings.appName).navbar-brand
|
||||
|
||||
- var canDisplayAdminMenu = hasAdminAccess()
|
||||
- var canDisplayAdminRedirect = canRedirectToAdminDomain()
|
||||
- var canDisplaySplitTestMenu = hasFeature('saas') && (canDisplayAdminMenu || (getSessionUser() && getSessionUser().staffAccess && (getSessionUser().staffAccess.splitTestMetrics || getSessionUser().staffAccess.splitTestManagement)))
|
||||
.navbar-collapse.collapse(collapse="navCollapsed")
|
||||
ul.nav.navbar-nav.navbar-right
|
||||
if (canDisplayAdminMenu || canDisplaySplitTestMenu)
|
||||
if (canDisplayAdminMenu || canDisplayAdminRedirect || canDisplaySplitTestMenu)
|
||||
li.dropdown(class="subdued", dropdown)
|
||||
a.dropdown-toggle(href, dropdown-toggle)
|
||||
| Admin
|
||||
|
@ -27,6 +28,9 @@ nav.navbar.navbar-default.navbar-main
|
|||
a(href="/admin/user") Manage Users
|
||||
li
|
||||
a(href="/admin/project") Project URL Lookup
|
||||
if canDisplayAdminRedirect
|
||||
li
|
||||
a(href=settings.adminUrl) Switch to Admin
|
||||
if canDisplaySplitTestMenu
|
||||
li
|
||||
a(href="/admin/split-test") Manage Split Tests
|
||||
|
|
|
@ -44,7 +44,7 @@ describe('AuthorizationMiddleware', function () {
|
|||
'../Authentication/SessionManager': this.SessionManager,
|
||||
'../TokenAccess/TokenAccessHandler': this.TokenAccessHandler,
|
||||
'../Helpers/AdminAuthorizationHelper': {
|
||||
shouldRedirectToAdminDomain: sinon.stub().returns(false),
|
||||
canRedirectToAdminDomain: sinon.stub().returns(false),
|
||||
},
|
||||
},
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue