From 5d10f99e53b4c7a989a76a755b48fc74846fcdfc Mon Sep 17 00:00:00 2001 From: Benjamin Janssens Date: Tue, 18 Feb 2025 19:25:49 +0100 Subject: [PATCH 1/4] feat(auth): enable persistency of scopes for Bitbucket Cloud Signed-off-by: Benjamin Janssens --- .changeset/chatty-days-wonder.md | 5 +++++ .changeset/serious-guests-tan.md | 5 +++++ packages/integration-react/src/api/ScmAuth.ts | 2 ++ .../src/authenticator.ts | 1 + 4 files changed, 13 insertions(+) create mode 100644 .changeset/chatty-days-wonder.md create mode 100644 .changeset/serious-guests-tan.md diff --git a/.changeset/chatty-days-wonder.md b/.changeset/chatty-days-wonder.md new file mode 100644 index 0000000000..5e5114c28e --- /dev/null +++ b/.changeset/chatty-days-wonder.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend-module-bitbucket-provider': patch +--- + +Enabled persistency of scopes for Bitbucket Cloud. diff --git a/.changeset/serious-guests-tan.md b/.changeset/serious-guests-tan.md new file mode 100644 index 0000000000..e140f8bc1d --- /dev/null +++ b/.changeset/serious-guests-tan.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration-react': patch +--- + +Added scopes `project` and `repository:admin` for Bitbucket Cloud. diff --git a/packages/integration-react/src/api/ScmAuth.ts b/packages/integration-react/src/api/ScmAuth.ts index ff3e8c098d..d943a3fac8 100644 --- a/packages/integration-react/src/api/ScmAuth.ts +++ b/packages/integration-react/src/api/ScmAuth.ts @@ -239,11 +239,13 @@ export class ScmAuth implements ScmAuthApi { 'pullrequest', 'snippet', 'issue', + 'project', ]; const repoWriteScopes = options?.scopeMapping?.repoWrite ?? [ 'pullrequest:write', 'snippet:write', 'issue:write', + 'repository:admin', ]; return new ScmAuth('bitbucket', bitbucketAuthApi, host, { default: defaultScopes, diff --git a/plugins/auth-backend-module-bitbucket-provider/src/authenticator.ts b/plugins/auth-backend-module-bitbucket-provider/src/authenticator.ts index a2d8275964..e07d9caf98 100644 --- a/plugins/auth-backend-module-bitbucket-provider/src/authenticator.ts +++ b/plugins/auth-backend-module-bitbucket-provider/src/authenticator.ts @@ -28,6 +28,7 @@ export const bitbucketAuthenticator = createOAuthAuthenticator({ PassportOAuthAuthenticatorHelper.defaultProfileTransform, scopes: { required: ['account'], + persist: true, }, initialize({ callbackUrl, config }) { const clientID = config.getString('clientId'); From 3729d19bbb6fb8dd0fb0c7ced02c3567b7e08894 Mon Sep 17 00:00:00 2001 From: Benjamin Janssens Date: Tue, 18 Feb 2025 21:00:00 +0100 Subject: [PATCH 2/4] test(auth): update tests Signed-off-by: Benjamin Janssens --- packages/integration-react/src/api/ScmAuth.test.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/integration-react/src/api/ScmAuth.test.ts b/packages/integration-react/src/api/ScmAuth.test.ts index d252b95b85..30a92a2056 100644 --- a/packages/integration-react/src/api/ScmAuth.test.ts +++ b/packages/integration-react/src/api/ScmAuth.test.ts @@ -129,7 +129,7 @@ describe('ScmAuth', () => { await expect( bitbucketAuth.getCredentials({ url: 'http://example.com' }), ).resolves.toMatchObject({ - token: 'account team pullrequest snippet issue', + token: 'account team pullrequest snippet issue project', }); await expect( bitbucketAuth.getCredentials({ @@ -138,7 +138,7 @@ describe('ScmAuth', () => { }), ).resolves.toMatchObject({ token: - 'account team pullrequest snippet issue pullrequest:write snippet:write issue:write', + 'account team pullrequest snippet issue project pullrequest:write snippet:write issue:write repository:admin', }); }); @@ -195,7 +195,8 @@ describe('ScmAuth', () => { }, }), ).resolves.toMatchObject({ - token: 'account team pullrequest snippet issue snippet:write issue:write', + token: + 'account team pullrequest snippet issue project snippet:write issue:write', }); }); From 44bb6c4ead897b5af0470cc361cdeb115334df03 Mon Sep 17 00:00:00 2001 From: Benjamin Janssens Date: Tue, 18 Feb 2025 21:14:57 +0100 Subject: [PATCH 3/4] test(auth): update tests Signed-off-by: Benjamin Janssens --- .../auth-backend-module-bitbucket-provider/src/module.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/auth-backend-module-bitbucket-provider/src/module.test.ts b/plugins/auth-backend-module-bitbucket-provider/src/module.test.ts index f1426d1b0d..6dddfb1d63 100644 --- a/plugins/auth-backend-module-bitbucket-provider/src/module.test.ts +++ b/plugins/auth-backend-module-bitbucket-provider/src/module.test.ts @@ -73,6 +73,7 @@ describe('authModuleBitbucketProvider', () => { expect(decodeOAuthState(startUrl.searchParams.get('state')!)).toEqual({ env: 'development', nonce: decodeURIComponent(nonceCookie.value), + scope: 'account', }); }); }); From 066a915751b2cb3d9cac916d0224f0272386d840 Mon Sep 17 00:00:00 2001 From: Benjamin Janssens Date: Thu, 6 Mar 2025 18:52:07 +0100 Subject: [PATCH 4/4] chore: remove repository:admin from default repo write scopes Signed-off-by: Benjamin Janssens --- .changeset/serious-guests-tan.md | 2 +- packages/integration-react/src/api/ScmAuth.test.ts | 2 +- packages/integration-react/src/api/ScmAuth.ts | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.changeset/serious-guests-tan.md b/.changeset/serious-guests-tan.md index e140f8bc1d..c051dca464 100644 --- a/.changeset/serious-guests-tan.md +++ b/.changeset/serious-guests-tan.md @@ -2,4 +2,4 @@ '@backstage/integration-react': patch --- -Added scopes `project` and `repository:admin` for Bitbucket Cloud. +Added scope `project` for Bitbucket Cloud. diff --git a/packages/integration-react/src/api/ScmAuth.test.ts b/packages/integration-react/src/api/ScmAuth.test.ts index 30a92a2056..5872354d79 100644 --- a/packages/integration-react/src/api/ScmAuth.test.ts +++ b/packages/integration-react/src/api/ScmAuth.test.ts @@ -138,7 +138,7 @@ describe('ScmAuth', () => { }), ).resolves.toMatchObject({ token: - 'account team pullrequest snippet issue project pullrequest:write snippet:write issue:write repository:admin', + 'account team pullrequest snippet issue project pullrequest:write snippet:write issue:write', }); }); diff --git a/packages/integration-react/src/api/ScmAuth.ts b/packages/integration-react/src/api/ScmAuth.ts index d943a3fac8..011422d4cf 100644 --- a/packages/integration-react/src/api/ScmAuth.ts +++ b/packages/integration-react/src/api/ScmAuth.ts @@ -245,7 +245,6 @@ export class ScmAuth implements ScmAuthApi { 'pullrequest:write', 'snippet:write', 'issue:write', - 'repository:admin', ]; return new ScmAuth('bitbucket', bitbucketAuthApi, host, { default: defaultScopes,