Merge pull request #26839 from RedlineTriad/bitbucket-server-scopes

Fix Bitbucket Cloud OAuth scopes being used for BitbucketServer in ScmAuth
This commit is contained in:
Johan Haals
2024-09-27 13:28:20 +02:00
committed by GitHub
4 changed files with 83 additions and 6 deletions
+53 -2
View File
@@ -226,12 +226,63 @@ export class ScmAuth implements ScmAuthApi {
bitbucketAuthApi: OAuthApi,
options?: {
host?: string;
scopeMapping?: {
default?: string[];
repoWrite?: string[];
};
},
): ScmAuth {
const host = options?.host ?? 'bitbucket.org';
const defaultScopes = options?.scopeMapping?.default ?? [
'account',
'team',
'pullrequest',
'snippet',
'issue',
];
const repoWriteScopes = options?.scopeMapping?.repoWrite ?? [
'pullrequest:write',
'snippet:write',
'issue:write',
];
return new ScmAuth('bitbucket', bitbucketAuthApi, host, {
default: ['account', 'team', 'pullrequest', 'snippet', 'issue'],
repoWrite: ['pullrequest:write', 'snippet:write', 'issue:write'],
default: defaultScopes,
repoWrite: repoWriteScopes,
});
}
/**
* Creates a new ScmAuth instance that handles authentication towards Bitbucket Server.
*
* The host option determines which URLs that are handled by this instance.
*
* The default scopes are:
*
* `PUBLIC_REPOS REPOS_READ`
*
* If the additional `repoWrite` permission is requested, these scopes are added:
*
* `REPO_WRITE`
*/
static forBitbucketServer(
bitbucketAuthApi: OAuthApi,
options: {
host: string;
scopeMapping?: {
default?: string[];
repoWrite?: string[];
};
},
): ScmAuth {
return this.forBitbucket(bitbucketAuthApi, {
host: options.host,
scopeMapping: {
default: options.scopeMapping?.default ?? [
'PUBLIC_REPOS',
'REPOS_READ',
],
repoWrite: options.scopeMapping?.repoWrite ?? ['REPO_WRITE'],
},
});
}