Add optional personal access tokens for git bridge (#15209)

GitOrigin-RevId: 50d4c0e11728e014e81172c062a3b22fefa6286c
This commit is contained in:
Alf Eaton
2023-10-20 08:03:27 +00:00
committed by Copybot
parent 6408d150d5
commit 749aef1c6f
20 changed files with 198 additions and 73 deletions
@@ -10,6 +10,7 @@ const SubscriptionLocator = require('../Subscription/SubscriptionLocator')
const _ = require('lodash')
const { expressify } = require('../../util/promises')
const Features = require('../../infrastructure/Features')
const SplitTestHandler = require('../SplitTests/SplitTestHandler')
async function settingsPage(req, res) {
const userId = SessionManager.getLoggedInUserId(req.session)
@@ -69,8 +70,27 @@ async function settingsPage(req, res) {
const showPersonalAccessToken =
!Features.hasFeature('saas') || req.query?.personal_access_token === 'true'
// if not already enabled, use a split test to determine whether to offer personal access tokens
let optionalPersonalAccessToken = false
if (!showPersonalAccessToken) {
try {
const { variant } = await SplitTestHandler.promises.getAssignment(
req,
res,
'personal-access-token'
)
optionalPersonalAccessToken = variant === 'enabled' // `?personal-access-token=enabled`
} catch (error) {
logger.error(
{ err: error },
'Failed to get personal-access-token split test assignment'
)
}
}
let personalAccessTokens
if (showPersonalAccessToken) {
if (showPersonalAccessToken || optionalPersonalAccessToken) {
try {
// require this here because module may not be included in some versions
const PersonalAccessTokenManager = require('../../../../modules/oauth2-server/app/src/OAuthPersonalAccessTokenManager')
@@ -133,6 +153,7 @@ async function settingsPage(req, res) {
thirdPartyIds: UserPagesController._restructureThirdPartyIds(user),
projectSyncSuccessMessage,
showPersonalAccessToken,
optionalPersonalAccessToken,
personalAccessTokens,
emailAddressLimit: Settings.emailAddressLimit,
isManagedAccount: !!req.managedBy,