Skip to content

Commit 4f9d81a

Browse files
fix(organization): retrict user field select query (#502)
1 parent 7b80019 commit 4f9d81a

File tree

2 files changed

+72
-8
lines changed

2 files changed

+72
-8
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
//
2+
3+
import {
4+
create_pink_diamond_user,
5+
create_red_diamond_user,
6+
create_unicorn_organization,
7+
} from "@~/moncomptepro.database/seed/unicorn";
8+
import {
9+
add_user_to_organization,
10+
empty_database,
11+
migrate,
12+
pg,
13+
} from "@~/moncomptepro.database/testing";
14+
import { beforeAll, beforeEach, expect, test } from "bun:test";
15+
import { get_users_by_organization_id } from "./get_users_by_organization_id";
16+
17+
//
18+
19+
beforeAll(migrate);
20+
beforeEach(empty_database);
21+
22+
test("returns pink diamond", async () => {
23+
const unicorn_organization_id = await create_unicorn_organization(pg);
24+
const pink_diamond_user_id = await create_pink_diamond_user(pg);
25+
await add_user_to_organization({
26+
organization_id: unicorn_organization_id,
27+
user_id: pink_diamond_user_id,
28+
});
29+
const red_diamond_user_id = await create_red_diamond_user(pg);
30+
await add_user_to_organization({
31+
organization_id: unicorn_organization_id,
32+
user_id: red_diamond_user_id,
33+
});
34+
35+
const emails = await get_users_by_organization_id(pg, {
36+
organization_id: unicorn_organization_id,
37+
});
38+
39+
expect(emails).toEqual({
40+
count: 2,
41+
users: [
42+
{
43+
email: "red.diamond@unicorn.xyz",
44+
family_name: "Diamond",
45+
given_name: "Red",
46+
id: red_diamond_user_id,
47+
job: null,
48+
verification_type: null,
49+
is_external: false,
50+
},
51+
{
52+
email: "pink.diamond@unicorn.xyz",
53+
family_name: "Diamond",
54+
given_name: "Pink",
55+
id: pink_diamond_user_id,
56+
job: null,
57+
verification_type: null,
58+
is_external: false,
59+
},
60+
],
61+
});
62+
});

packages/~/users/repository/src/get_users_by_organization_id.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,15 @@ export async function get_users_by_organization_id(
2121

2222
const { users, count } = await pg.transaction(async (pg_t) => {
2323
const users = await pg_t
24-
.select()
24+
.select({
25+
email: schema.users.email,
26+
family_name: schema.users.family_name,
27+
given_name: schema.users.given_name,
28+
id: schema.users.id,
29+
is_external: schema.users_organizations.is_external,
30+
job: schema.users.job,
31+
verification_type: schema.users_organizations.verification_type,
32+
})
2533
.from(schema.users)
2634
.innerJoin(
2735
schema.users_organizations,
@@ -43,13 +51,7 @@ export async function get_users_by_organization_id(
4351
return { users, count };
4452
});
4553

46-
const users_with_external = users.map((user) => ({
47-
...user.users,
48-
is_external: user.users_organizations.is_external,
49-
verification_type: user.users_organizations.verification_type,
50-
}));
51-
52-
return { users: users_with_external, count };
54+
return { users, count };
5355
}
5456

5557
export type get_users_by_organization_id_dto = ReturnType<

0 commit comments

Comments
 (0)