Преглед изворни кода

Merge pull request #137 from sharelatex/ja-turn-off-registration

Add in Features module to handle feature flags and disable registration
James Allen пре 9 година
родитељ
комит
5248b3cb90

+ 4 - 2
services/web/app/coffee/infrastructure/ExpressLocals.coffee

@@ -14,6 +14,7 @@ PackageVersions = require "./PackageVersions"
 htmlEncoder = new require("node-html-encoder").Encoder("numerical")
 htmlEncoder = new require("node-html-encoder").Encoder("numerical")
 fingerprints = {}
 fingerprints = {}
 Path = require 'path'
 Path = require 'path'
+Features = require "./Features"
 
 
 jsPath =
 jsPath =
 	if Settings.useMinifiedJs
 	if Settings.useMinifiedJs
@@ -88,8 +89,9 @@ module.exports = (app, webRouter, privateApiRouter, publicApiRouter)->
 	publicApiRouter.use addSetContentDisposition
 	publicApiRouter.use addSetContentDisposition
 
 
 	webRouter.use (req, res, next)->
 	webRouter.use (req, res, next)->
-		req.externalAuthenticationSystemUsed = res.locals.externalAuthenticationSystemUsed = ->
-			Settings.ldap? or Settings.saml? or Settings.overleaf?.oauth?
+		req.externalAuthenticationSystemUsed = Features.externalAuthenticationSystemUsed
+		res.locals.externalAuthenticationSystemUsed = Features.externalAuthenticationSystemUsed
+		req.hasFeature = res.locals.hasFeature = Features.hasFeature
 		next()
 		next()
 
 
 	webRouter.use (req, res, next)->
 	webRouter.use (req, res, next)->

+ 12 - 0
services/web/app/coffee/infrastructure/Features.coffee

@@ -0,0 +1,12 @@
+Settings = require 'settings-sharelatex'
+
+module.exports = Features =
+	externalAuthenticationSystemUsed: ->
+		Settings.ldap? or Settings.saml? or Settings.overleaf?.oauth?
+
+	hasFeature: (feature) ->
+		switch feature
+			when 'registration'
+				return not Features.externalAuthenticationSystemUsed()
+			else
+				throw new Error("unknown feature: #{feature}")

+ 4 - 4
services/web/app/coffee/router.coffee

@@ -45,6 +45,7 @@ AnalyticsRouter = require('./Features/Analytics/AnalyticsRouter')
 AnnouncementsController = require("./Features/Announcements/AnnouncementsController")
 AnnouncementsController = require("./Features/Announcements/AnnouncementsController")
 LabelsController = require('./Features/Labels/LabelsController')
 LabelsController = require('./Features/Labels/LabelsController')
 TokenAccessController = require('./Features/TokenAccess/TokenAccessController')
 TokenAccessController = require('./Features/TokenAccess/TokenAccessController')
+Features = require('./infrastructure/Features')
 
 
 logger = require("logger-sharelatex")
 logger = require("logger-sharelatex")
 _ = require("underscore")
 _ = require("underscore")
@@ -63,10 +64,9 @@ module.exports = class Router
 		webRouter.get  '/logout', UserController.logout
 		webRouter.get  '/logout', UserController.logout
 		webRouter.get  '/restricted', AuthorizationMiddlewear.restricted
 		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)
 		EditorRouter.apply(webRouter, privateApiRouter)
 		CollaboratorsRouter.apply(webRouter, privateApiRouter)
 		CollaboratorsRouter.apply(webRouter, privateApiRouter)

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

@@ -54,7 +54,7 @@ nav.navbar.navbar-default
 				// logged out
 				// logged out
 				if !getSessionUser()
 				if !getSessionUser()
 					// register link
 					// register link
-					if !externalAuthenticationSystemUsed()
+					if hasFeature('registration')
 						li
 						li
 							a(href="/register") #{translate('register')}
 							a(href="/register") #{translate('register')}