Merge pull request #3820 from overleaf/as-block-ie
Add middleware to block unsupported browsers GitOrigin-RevId: b1f1e4ae1572c3c323dc72442c8d5169b4879d5d
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
const Bowser = require('bowser')
|
||||
const Settings = require('settings-sharelatex')
|
||||
|
||||
function unsupportedBrowserMiddleware(req, res, next) {
|
||||
if (!Settings.unsupportedBrowsers) return next()
|
||||
|
||||
const userAgent = req.headers['user-agent']
|
||||
|
||||
const parser = Bowser.getParser(userAgent)
|
||||
|
||||
// Allow bots through by only ignoring bots or unrecognised UA strings
|
||||
const isBot = parser.isPlatform('bot') || !parser.getBrowserName()
|
||||
if (isBot) return next()
|
||||
|
||||
const isUnsupported = parser.satisfies(Settings.unsupportedBrowsers)
|
||||
if (isUnsupported) {
|
||||
return res.redirect('/unsupported-browser')
|
||||
}
|
||||
|
||||
next()
|
||||
}
|
||||
|
||||
module.exports = { unsupportedBrowserMiddleware }
|
||||
@@ -49,6 +49,9 @@ const InstitutionsController = require('./Features/Institutions/InstitutionsCont
|
||||
const UserMembershipRouter = require('./Features/UserMembership/UserMembershipRouter')
|
||||
const SystemMessageController = require('./Features/SystemMessages/SystemMessageController')
|
||||
const { Joi, validate } = require('./infrastructure/Validation')
|
||||
const {
|
||||
unsupportedBrowserMiddleware
|
||||
} = require('./infrastructure/UnsupportedBrowserMiddleware')
|
||||
|
||||
const logger = require('logger-sharelatex')
|
||||
const _ = require('underscore')
|
||||
@@ -263,6 +266,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
||||
maxRequests: 30,
|
||||
timeInterval: 60
|
||||
}),
|
||||
unsupportedBrowserMiddleware,
|
||||
ProjectController.projectListPage
|
||||
)
|
||||
webRouter.post(
|
||||
@@ -284,6 +288,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
||||
maxRequests: 15,
|
||||
timeInterval: 60
|
||||
}),
|
||||
unsupportedBrowserMiddleware,
|
||||
AuthenticationController.validateUserSession(),
|
||||
AuthorizationMiddleware.ensureUserCanReadProject,
|
||||
ProjectController.loadEditor
|
||||
@@ -1138,5 +1143,9 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
||||
TokenAccessController.grantTokenAccessReadOnly
|
||||
)
|
||||
|
||||
webRouter.get('/unsupported-browser', (req, res) => {
|
||||
res.render('general/unsupported-browser')
|
||||
})
|
||||
|
||||
webRouter.get('*', ErrorController.notFound)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
extends ../layout/layout-no-js
|
||||
|
||||
block vars
|
||||
- metadata = { title: 'Unsupported browser', viewport: true }
|
||||
|
||||
block body
|
||||
body.full-height
|
||||
main.content.content-alt.full-height
|
||||
.container.full-height
|
||||
.error-container.full-height
|
||||
.error-details
|
||||
h1.error-status Unsupported Browser
|
||||
p.error-description
|
||||
| Sorry, we don't support your browser anymore. Find out more about #[a(href="https://www.overleaf.com/learn/how-to/What_browsers_do_you_support") what browsers we support].
|
||||
br
|
||||
| If you think you're seeing this message in error, please #[a(href="/contact") let us know].
|
||||
Reference in New Issue
Block a user