Distinguish between separate percentage rollouts

This commit is contained in:
Shane Kilkelly 2017-11-10 15:50:17 +00:00
parent 23814d25ac
commit df31748148

View file

@ -24,13 +24,16 @@ AnalyticsManager = require "../Analytics/AnalyticsManager"
Sources = require "../Authorization/Sources"
TokenAccessHandler = require '../TokenAccess/TokenAccessHandler'
CollaboratorsHandler = require '../Collaborators/CollaboratorsHandler'
crypto = require 'crypto'
module.exports = ProjectController =
_isInPercentageRollout: (objectId, percentage) ->
_isInPercentageRollout: (rolloutName, objectId, percentage) ->
if Settings.bypassPercentageRollouts = true
return true
counter = parseInt(objectId.toString().substring(18, 24), 16)
data = "#{rolloutName}:#{objectId.toString()}"
md5hash = crypto.createHash('md5').update(data).digest('hex')
counter = parseInt(md5hash.slice(26, 32), 16)
return (counter % 100) < percentage
updateProjectSettings: (req, res, next) ->
@ -274,7 +277,7 @@ module.exports = ProjectController =
timestamp = parseInt(user_id.toString().substring(0, 8), 16)
rolloutPercentage = 60 # Percentage of users to roll out to
if !ProjectController._isInPercentageRollout(user_id, rolloutPercentage)
if !ProjectController._isInPercentageRollout('autocompile', user_id, rolloutPercentage)
# Don't show if user is not part of roll out
return cb(null, { enabled: false, showOnboarding: false })
userSignupDate = new Date(timestamp * 1000)
@ -305,7 +308,11 @@ module.exports = ProjectController =
token = TokenAccessHandler.getRequestToken(req, project_id)
isTokenMember = results.isTokenMember
enableTokenAccessUI = ProjectController._isInPercentageRollout(project.owner_ref, 0)
enableTokenAccessUI = ProjectController._isInPercentageRollout(
'linksharing',
project.owner_ref,
0
)
AuthorizationManager.getPrivilegeLevelForProject user_id, project_id, token, (error, privilegeLevel)->
return next(error) if error?
if !privilegeLevel? or privilegeLevel == PrivilegeLevels.NONE