From 745ae8d081b96de8812028e880d7952a4855f1ee Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 20 Nov 2017 10:47:32 +0000 Subject: [PATCH] Add in Features module to handle feature flags, and use it to cleanly turn off registration --- .../web/app/coffee/infrastructure/ExpressLocals.coffee | 6 ++++-- services/web/app/coffee/router.coffee | 8 ++++---- services/web/app/views/layout/navbar.pug | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index 0b30d11cc5..fa9a223ad7 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -14,6 +14,7 @@ PackageVersions = require "./PackageVersions" htmlEncoder = new require("node-html-encoder").Encoder("numerical") fingerprints = {} Path = require 'path' +Features = require "./Features" jsPath = if Settings.useMinifiedJs @@ -88,8 +89,9 @@ module.exports = (app, webRouter, privateApiRouter, publicApiRouter)-> publicApiRouter.use addSetContentDisposition webRouter.use (req, res, next)-> - req.externalAuthenticationSystemUsed = res.locals.externalAuthenticationSystemUsed = -> - Settings.ldap? or Settings.saml? + req.externalAuthenticationSystemUsed = Features.externalAuthenticationSystemUsed + res.locals.externalAuthenticationSystemUsed = Features.externalAuthenticationSystemUsed + req.hasFeature = res.locals.hasFeature = Features.hasFeature next() webRouter.use (req, res, next)-> diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index e749ed44ff..3d9de0e3c6 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -45,6 +45,7 @@ AnalyticsRouter = require('./Features/Analytics/AnalyticsRouter') AnnouncementsController = require("./Features/Announcements/AnnouncementsController") LabelsController = require('./Features/Labels/LabelsController') TokenAccessController = require('./Features/TokenAccess/TokenAccessController') +Features = require('./infrastructure/Features') logger = require("logger-sharelatex") _ = require("underscore") @@ -63,10 +64,9 @@ module.exports = class Router webRouter.get '/logout', UserController.logout webRouter.get '/restricted', AuthorizationMiddlewear.restricted - # Left as a placeholder for implementing a public register page - webRouter.get '/register', UserPagesController.registerPage - AuthenticationController.addEndpointToLoginWhitelist '/register' - + if Features.hasFeature('registration') + webRouter.get '/register', UserPagesController.registerPage + AuthenticationController.addEndpointToLoginWhitelist '/register' EditorRouter.apply(webRouter, privateApiRouter) CollaboratorsRouter.apply(webRouter, privateApiRouter) diff --git a/services/web/app/views/layout/navbar.pug b/services/web/app/views/layout/navbar.pug index 9e242e1f25..3d2d6600cc 100644 --- a/services/web/app/views/layout/navbar.pug +++ b/services/web/app/views/layout/navbar.pug @@ -54,7 +54,7 @@ nav.navbar.navbar-default // logged out if !getSessionUser() // register link - if !externalAuthenticationSystemUsed() + if hasFeature('registration') li a(href="/register") #{translate('register')}