Skip to content

Commit

Permalink
Release (patch) - ExtForeignKey in Controls Dialogue, Credentials Gen…
Browse files Browse the repository at this point in the history
…eration Issue Fix (#191)

* Use extForeignKey for value in controls dialog

* removed assertion that fails when user is not found in portal but holds permissions or scopes to the portal

* Created a new query to fetch list of users with usernames and retained assert check in lookupUserByUsername

Co-authored-by: Joshua Jones <[email protected]>
Co-authored-by: ikethecoder <[email protected]>
  • Loading branch information
3 people authored Sep 1, 2021
1 parent feb77c4 commit 34bc2de
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 21 deletions.
25 changes: 6 additions & 19 deletions src/lists/extensions/Namespace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@ import {
} from '../../services/uma2';
import {
lookupProductEnvironmentServicesBySlug,
lookupUserByUsername,
lookupUsersByUsernames,
} from '../../services/keystone';
import {
getSuitableOwnerToken,
getEnvironmentContext,
getResourceSets,
getNamespaceResourceSets,
Expand All @@ -28,7 +27,6 @@ import { Logger } from '../../logger';
const logger = Logger('ext.Namespace');

import { strict as assert } from 'assert';
import { User } from '@/services/keystone/types';

const typeUserContact = `
type UserContact {
Expand Down Expand Up @@ -219,22 +217,11 @@ module.exports = {
});
permissions = updatedPermissions;
}
const listOfUsers: Array<any> = [];
for (const perm of permissions) {
if (perm.granted) {
const user = await lookupUserByUsername(
noauthContext,
perm.requesterName
);
listOfUsers.push({
id: user[0].id,
name: user[0].name,
username: user[0].username,
email: user[0].email,
});
}
}
return listOfUsers;
const usernameList = permissions
.filter((p) => p.granted)
.map((p) => p.requesterName);

return await lookupUsersByUsernames(noauthContext, usernameList);
},
access: EnforcementPoint,
},
Expand Down
4 changes: 2 additions & 2 deletions src/nextapp/components/controls/rate-limiting.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ const RateLimiting: React.FC<RateLimitingProps> = ({
title="Rate Limiting"
>
<ControlTypeSelect
serviceId={data?.service?.id}
routeId={data?.route?.id}
serviceId={data?.service?.extForeignKey}
routeId={data?.route?.extForeignKey}
/>
<HStack spacing={4} mb={4}>
<FormControl id="second">
Expand Down
2 changes: 2 additions & 0 deletions src/nextapp/pages/manager/consumers/[id].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -171,10 +171,12 @@ const query = gql`
service {
id
name
extForeignKey
}
route {
id
name
extForeignKey
}
}
tags
Expand Down
1 change: 1 addition & 0 deletions src/services/keystone/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export {
updateUserLegalAccept,
LegalAgreed,
lookupUserByUsername,
lookupUsersByUsernames,
lookupUser,
lookupUsersByNamespace,
} from './user';
19 changes: 19 additions & 0 deletions src/services/keystone/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,25 @@ export async function lookupUserByUsername(
return result.data.allUsers;
}

export async function lookupUsersByUsernames(
context: any,
usernameList: string[]
): Promise<[User]> {
const result = await context.executeGraphQL({
query: `query GetUsersWithUsernames($usernames: [String!]!) {
allUsers(where: {username_in: $usernames}) {
id
name
username
email
}
}`,
variables: { usernames: usernameList },
});
logger.debug('Query [lookupUsersByUsernames] result %j', result);
return result.data.allUsers;
}

export async function lookupUser(context: any, id: string): Promise<[User]> {
const result = await context.executeGraphQL({
query: `query FetchUser($id: ID!) {
Expand Down
1 change: 1 addition & 0 deletions src/test/mock-server/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,7 @@ const server = mockServer(schemaWithMocks, {
name: casual.route,
namespace: casual.namespace,
kongRouteId: casual.uuid,
extForeignKey: casual.uuid,
methods: JSON.stringify([
casual.random_element(['GET', 'POST', 'PUT', 'DELETE']),
]),
Expand Down

0 comments on commit 34bc2de

Please sign in to comment.