mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-09 08:16:11 +00:00
Merge pull request #4149 from overleaf/ab-user-registration-properties
Track registration sources as user properties GitOrigin-RevId: 1c1346d092808aff49c89c1659f42674506a919d
This commit is contained in:
parent
607fb01b0b
commit
e2d116e8be
5 changed files with 48 additions and 16 deletions
|
@ -0,0 +1,27 @@
|
|||
function setSource(source) {
|
||||
return function (req, res, next) {
|
||||
if (req.session) {
|
||||
req.session.required_login_for = source
|
||||
}
|
||||
next()
|
||||
}
|
||||
}
|
||||
|
||||
function clearSource() {
|
||||
return function (req, res, next) {
|
||||
doClearSource(req.session)
|
||||
next()
|
||||
}
|
||||
}
|
||||
|
||||
function doClearSource(session) {
|
||||
if (session) {
|
||||
delete session.required_login_for
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
setSource,
|
||||
clearSource,
|
||||
doClearSource,
|
||||
}
|
|
@ -18,6 +18,7 @@ const UrlHelper = require('../Helpers/UrlHelper')
|
|||
const AsyncFormHelper = require('../Helpers/AsyncFormHelper')
|
||||
const _ = require('lodash')
|
||||
const UserAuditLogHandler = require('../User/UserAuditLogHandler')
|
||||
const AnalyticsRegistrationSourceMiddleware = require('../Analytics/AnalyticsRegistrationSourceMiddleware')
|
||||
const {
|
||||
acceptsJson,
|
||||
} = require('../../infrastructure/RequestContentTypeDetection')
|
||||
|
@ -115,6 +116,7 @@ const AuthenticationController = {
|
|||
return next(err)
|
||||
}
|
||||
AuthenticationController._clearRedirectFromSession(req)
|
||||
AnalyticsRegistrationSourceMiddleware.doClearSource(req.session)
|
||||
AsyncFormHelper.redirect(req, res, redir)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -5,6 +5,7 @@ const PrivilegeLevels = require('../Authorization/PrivilegeLevels')
|
|||
const CollaboratorsInviteController = require('./CollaboratorsInviteController')
|
||||
const RateLimiterMiddleware = require('../Security/RateLimiterMiddleware')
|
||||
const CaptchaMiddleware = require('../Captcha/CaptchaMiddleware')
|
||||
const AnalyticsRegistrationSourceMiddleware = require('../Analytics/AnalyticsRegistrationSourceMiddleware')
|
||||
const { Joi, validate } = require('../../infrastructure/Validation')
|
||||
|
||||
module.exports = {
|
||||
|
@ -112,14 +113,18 @@ module.exports = {
|
|||
|
||||
webRouter.get(
|
||||
'/project/:Project_id/invite/token/:token',
|
||||
AnalyticsRegistrationSourceMiddleware.setSource('project-invite'),
|
||||
AuthenticationController.requireLogin(),
|
||||
CollaboratorsInviteController.viewInvite
|
||||
CollaboratorsInviteController.viewInvite,
|
||||
AnalyticsRegistrationSourceMiddleware.clearSource()
|
||||
)
|
||||
|
||||
webRouter.post(
|
||||
'/project/:Project_id/invite/token/:token/accept',
|
||||
AnalyticsRegistrationSourceMiddleware.setSource('project-invite'),
|
||||
AuthenticationController.requireLogin(),
|
||||
CollaboratorsInviteController.acceptInvite
|
||||
CollaboratorsInviteController.acceptInvite,
|
||||
AnalyticsRegistrationSourceMiddleware.clearSource()
|
||||
)
|
||||
},
|
||||
}
|
||||
|
|
|
@ -1,17 +1,8 @@
|
|||
/* eslint-disable
|
||||
max-len,
|
||||
*/
|
||||
// TODO: This file was created by bulk-decaffeinate.
|
||||
// Fix any style issues and re-enable lint.
|
||||
/*
|
||||
* decaffeinate suggestions:
|
||||
* DS102: Remove unnecessary code created because of implicit returns
|
||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
||||
*/
|
||||
const AuthenticationController = require('../Authentication/AuthenticationController')
|
||||
const TemplatesController = require('./TemplatesController')
|
||||
const TemplatesMiddleware = require('./TemplatesMiddleware')
|
||||
const RateLimiterMiddleware = require('../Security/RateLimiterMiddleware')
|
||||
const AnalyticsRegistrationSourceMiddleware = require('../Analytics/AnalyticsRegistrationSourceMiddleware')
|
||||
|
||||
module.exports = {
|
||||
apply(app) {
|
||||
|
@ -22,15 +13,17 @@ module.exports = {
|
|||
TemplatesController.getV1Template
|
||||
)
|
||||
|
||||
return app.post(
|
||||
app.post(
|
||||
'/project/new/template',
|
||||
AnalyticsRegistrationSourceMiddleware.setSource('template'),
|
||||
AuthenticationController.requireLogin(),
|
||||
RateLimiterMiddleware.rateLimit({
|
||||
endpointName: 'create-project-from-template',
|
||||
maxRequests: 20,
|
||||
timeInterval: 60,
|
||||
}),
|
||||
TemplatesController.createProjectFromV1Template
|
||||
TemplatesController.createProjectFromV1Template,
|
||||
AnalyticsRegistrationSourceMiddleware.clearSource()
|
||||
)
|
||||
},
|
||||
}
|
||||
|
|
|
@ -48,6 +48,7 @@ const TemplatesRouter = require('./Features/Templates/TemplatesRouter')
|
|||
const InstitutionsController = require('./Features/Institutions/InstitutionsController')
|
||||
const UserMembershipRouter = require('./Features/UserMembership/UserMembershipRouter')
|
||||
const SystemMessageController = require('./Features/SystemMessages/SystemMessageController')
|
||||
const AnalyticsRegistrationSourceMiddleware = require('./Features/Analytics/AnalyticsRegistrationSourceMiddleware')
|
||||
const { Joi, validate } = require('./infrastructure/Validation')
|
||||
const {
|
||||
renderUnsupportedBrowserPage,
|
||||
|
@ -1121,7 +1122,9 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|||
maxRequests: 15,
|
||||
timeInterval: 60,
|
||||
}),
|
||||
TokenAccessController.tokenAccessPage
|
||||
AnalyticsRegistrationSourceMiddleware.setSource('link-sharing'),
|
||||
TokenAccessController.tokenAccessPage,
|
||||
AnalyticsRegistrationSourceMiddleware.clearSource()
|
||||
)
|
||||
|
||||
webRouter.get(
|
||||
|
@ -1131,7 +1134,9 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|||
maxRequests: 15,
|
||||
timeInterval: 60,
|
||||
}),
|
||||
TokenAccessController.tokenAccessPage
|
||||
AnalyticsRegistrationSourceMiddleware.setSource('link-sharing'),
|
||||
TokenAccessController.tokenAccessPage,
|
||||
AnalyticsRegistrationSourceMiddleware.clearSource()
|
||||
)
|
||||
|
||||
webRouter.post(
|
||||
|
|
Loading…
Add table
Reference in a new issue