Skip to content

Commit 3dbd7c0

Browse files
feat(rbac): make feature working after backstage update to 1.29.2
Signed-off-by: Oleksandr Andriienko <[email protected]>
1 parent 18a59ce commit 3dbd7c0

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

plugins/rbac-backend/src/plugin.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export const rbacPlugin = createBackendPlugin({
4242
permissions: coreServices.permissions,
4343
auth: coreServices.auth,
4444
httpAuth: coreServices.httpAuth,
45+
userInfo: coreServices.userInfo,
4546
},
4647
async init({
4748
http,
@@ -52,6 +53,7 @@ export const rbacPlugin = createBackendPlugin({
5253
permissions,
5354
auth,
5455
httpAuth,
56+
userInfo,
5557
}) {
5658
http.use(
5759
await PolicyBuilder.build(
@@ -63,6 +65,7 @@ export const rbacPlugin = createBackendPlugin({
6365
permissions,
6466
auth,
6567
httpAuth,
68+
userInfo,
6669
},
6770
{
6871
getPluginIds: () =>

plugins/rbac-backend/src/service/permission-policy.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
import {
1717
PermissionPolicy,
1818
PolicyQuery,
19+
PolicyQueryUser,
1920
} from '@backstage/plugin-permission-node';
2021

2122
import { Knex } from 'knex';
@@ -291,10 +292,9 @@ export class RBACPermissionPolicy implements PermissionPolicy {
291292

292293
async handle(
293294
request: PolicyQuery,
294-
identityResp?: BackstageIdentityResponse | undefined,
295+
user?: PolicyQueryUser,
295296
): Promise<PolicyDecision> {
296-
const userEntityRef =
297-
identityResp?.identity.userEntityRef ?? `user without entity`;
297+
const userEntityRef = user?.info.userEntityRef ?? `user without entity`;
298298

299299
let auditOptions = createPermissionEvaluationOptions(
300300
`Policy check for ${userEntityRef}`,
@@ -307,7 +307,7 @@ export class RBACPermissionPolicy implements PermissionPolicy {
307307
let status = false;
308308

309309
const action = toPermissionAction(request.permission.attributes);
310-
if (!identityResp) {
310+
if (!user) {
311311
const msg = evaluatePermMsg(
312312
userEntityRef,
313313
AuthorizeResult.DENY,
@@ -330,10 +330,10 @@ export class RBACPermissionPolicy implements PermissionPolicy {
330330
const resourceType = request.permission.resourceType;
331331

332332
// handle conditions if they are present
333-
if (identityResp) {
333+
if (user) {
334334
const conditionResult = await this.handleConditions(
335335
userEntityRef,
336-
identityResp.identity.ownershipEntityRefs,
336+
user.info.ownershipEntityRefs,
337337
request,
338338
roles,
339339
);

plugins/rbac-backend/src/service/policy-builder.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
AuthService,
88
HttpAuthService,
99
LoggerService,
10+
UserInfoService,
1011
} from '@backstage/backend-plugin-api';
1112
import { CatalogClient } from '@backstage/catalog-client';
1213
import { Config } from '@backstage/config';
@@ -40,6 +41,7 @@ export class PolicyBuilder {
4041
permissions: PermissionEvaluator;
4142
auth?: AuthService;
4243
httpAuth?: HttpAuthService;
44+
userInfo: UserInfoService;
4345
},
4446
pluginIdProvider: PluginIdProvider = { getPluginIds: () => [] },
4547
): Promise<Router> {
@@ -108,6 +110,7 @@ export class PolicyBuilder {
108110
logger: env.logger,
109111
discovery: env.discovery,
110112
identity: env.identity,
113+
userInfo: env.userInfo,
111114
policy: await RBACPermissionPolicy.build(
112115
env.logger,
113116
defAuditLog,

0 commit comments

Comments
 (0)