From b3a8d34af383778700bca1bed7e543535e9edb43 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Sun, 11 Nov 2018 22:06:50 -0800 Subject: [PATCH] Add support for SUBDOMAINS_ENABLED=false --- server/api/team.js | 2 +- server/middlewares/authentication.js | 2 +- server/models/Team.js | 2 +- server/pages/components/Layout.js | 7 ++-- server/pages/components/Navigation.js | 47 ++++++++++++++++++--------- server/utils/renderpage.js | 8 ++++- 6 files changed, 46 insertions(+), 22 deletions(-) diff --git a/server/api/team.js b/server/api/team.js index d3c7561c..ab62d705 100644 --- a/server/api/team.js +++ b/server/api/team.js @@ -19,7 +19,7 @@ router.post('team.update', auth(), async ctx => { const team = await Team.findById(user.teamId); authorize(user, 'update', team); - if (process.env.SUBDOMAINS_ENABLED) { + if (process.env.SUBDOMAINS_ENABLED === 'true') { team.subdomain = subdomain === '' ? null : subdomain; } diff --git a/server/middlewares/authentication.js b/server/middlewares/authentication.js index d1c2d346..eeea0971 100644 --- a/server/middlewares/authentication.js +++ b/server/middlewares/authentication.js @@ -110,7 +110,7 @@ export default function auth(options?: { required?: boolean } = {}) { // set a transfer cookie for the access token itself and redirect // to the teams subdomain if subdomains are enabled - if (process.env.SUBDOMAINS_ENABLED && team.subdomain) { + if (process.env.SUBDOMAINS_ENABLED === 'true' && team.subdomain) { // get any existing sessions (teams signed in) and add this team const existing = JSON.parse(ctx.cookies.get('sessions') || '{}'); const sessions = JSON.stringify({ diff --git a/server/models/Team.js b/server/models/Team.js index 777bc145..265e566b 100644 --- a/server/models/Team.js +++ b/server/models/Team.js @@ -45,7 +45,7 @@ const Team = sequelize.define( { getterMethods: { url() { - if (!this.subdomain || !process.env.SUBDOMAINS_ENABLED) { + if (!this.subdomain || process.env.SUBDOMAINS_ENABLED !== 'true') { return process.env.URL; } diff --git a/server/pages/components/Layout.js b/server/pages/components/Layout.js index 42a18567..3b913d9d 100644 --- a/server/pages/components/Layout.js +++ b/server/pages/components/Layout.js @@ -15,10 +15,11 @@ export const screenshotUrl = `${process.env.URL}/screenshot.png`; type Props = { children?: React.Node, - sessions?: Object, + sessions: Object, + loggedIn: boolean, }; -function Layout({ children, sessions }: Props) { +function Layout({ children, loggedIn, sessions }: Props) { return ( @@ -66,7 +67,7 @@ function Layout({ children, sessions }: Props) { {'{{CSS}}'} - + {children} diff --git a/server/pages/components/Navigation.js b/server/pages/components/Navigation.js index a9e1784a..8e83191f 100644 --- a/server/pages/components/Navigation.js +++ b/server/pages/components/Navigation.js @@ -25,7 +25,12 @@ type Sessions = { }, }; -function TopNavigation({ sessions }: { sessions: ?Sessions }) { +type Props = { + sessions: ?Sessions, + loggedIn: boolean, +}; + +function TopNavigation({ sessions, loggedIn }: Props) { const orderedSessions = sortBy(sessions, 'name'); return ( @@ -47,20 +52,32 @@ function TopNavigation({ sessions }: { sessions: ?Sessions }) { API - {orderedSessions.length ? ( - - Your Teams -
    - {orderedSessions.map(session => ( - - - - {session.name} - - - ))} -
-
+ {loggedIn ? ( + + {process.env.SUBDOMAINS_ENABLED === 'true' ? ( + + Your Teams +
    + {orderedSessions.map(session => ( + + + + {session.name} + + + ))} +
+
+ ) : ( + + Dashboard + + )} +
) : ( Sign In diff --git a/server/utils/renderpage.js b/server/utils/renderpage.js index 43fbd3f1..c9fe1be6 100644 --- a/server/utils/renderpage.js +++ b/server/utils/renderpage.js @@ -14,10 +14,16 @@ const sheet = new ServerStyleSheet(); export default function renderpage(ctx: Object, children: React.Node) { const sessions = JSON.parse(ctx.cookies.get('sessions') || '{}'); + const loggedIn = !!( + ctx.cookies.get('accessToken') || Object.keys(sessions).length + ); + const html = ReactDOMServer.renderToString( - {children} + + {children} + );