fix(user-management): Expose nested user on OrganizationMembership (#… · workos/workos-node@b30f7ba · GitHub
Skip to content

Commit b30f7ba

Browse files
authored
fix(user-management): Expose nested user on OrganizationMembership (#1732)
1 parent a6b9c3d commit b30f7ba

6 files changed

Lines changed: 89 additions & 3 deletions

‎src/user-management/fixtures/deactivate-organization-membership.json‎

Lines changed: 18 additions & 1 deletion

‎src/user-management/fixtures/list-organization-memberships.json‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,24 @@
1414
"directory_managed": false,
1515
"custom_attributes": {},
1616
"created_at": "2023-07-18T02:07:19.911Z",
17-
"updated_at": "2023-07-18T02:07:19.911Z"
17+
"updated_at": "2023-07-18T02:07:19.911Z",
18+
"user": {
19+
"object": "user",
20+
"id": "user_01H5JQDV7R7ATEYZDEG0W5PRYS",
21+
"email": "test01@example.com",
22+
"name": "Test 01 User",
23+
"first_name": "Test 01",
24+
"last_name": "User",
25+
"created_at": "2023-07-18T02:07:19.911Z",
26+
"updated_at": "2023-07-18T02:07:19.911Z",
27+
"email_verified": true,
28+
"profile_picture_url": "https://example.com/profile_picture.jpg",
29+
"last_sign_in_at": "2023-07-18T02:07:19.911Z",
30+
"locale": "en-US",
31+
"metadata": {
32+
"key": "value"
33+
}
34+
}
1835
}
1936
],
2037
"list_metadata": {

‎src/user-management/fixtures/organization-membership.json‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,22 @@
1010
"directory_managed": false,
1111
"custom_attributes": {},
1212
"created_at": "2023-07-18T02:07:19.911Z",
13-
"updated_at": "2023-07-18T02:07:19.911Z"
13+
"updated_at": "2023-07-18T02:07:19.911Z",
14+
"user": {
15+
"object": "user",
16+
"id": "user_01H5JQDV7R7ATEYZDEG0W5PRYS",
17+
"email": "test01@example.com",
18+
"name": "Test 01 User",
19+
"first_name": "Test 01",
20+
"last_name": "User",
21+
"created_at": "2023-07-18T02:07:19.911Z",
22+
"updated_at": "2023-07-18T02:07:19.911Z",
23+
"email_verified": true,
24+
"profile_picture_url": "https://example.com/profile_picture.jpg",
25+
"last_sign_in_at": "2023-07-18T02:07:19.911Z",
26+
"locale": "en-US",
27+
"metadata": {
28+
"key": "value"
29+
}
30+
}
1431
}

‎src/user-management/interfaces/organization-membership.interface.ts‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { RoleResponse } from '../../roles/interfaces/';
2+
import { User, UserResponse } from './user.interface';
23

34
export type OrganizationMembershipStatus = 'active' | 'inactive' | 'pending';
45

@@ -20,6 +21,11 @@ export interface OrganizationMembership extends BaseOrganizationMembership {
2021
/** The primary role assigned to the user within the organization. */
2122
role: RoleResponse;
2223
roles?: RoleResponse[];
24+
/**
25+
* The user who holds this membership. Returned by the Organization
26+
* Membership API endpoints; absent from event and action payloads.
27+
*/
28+
user?: User;
2329
}
2430

2531
export type AuthorizationOrganizationMembership = BaseOrganizationMembership;
@@ -40,6 +46,7 @@ export interface BaseOrganizationMembershipResponse {
4046
export interface OrganizationMembershipResponse extends BaseOrganizationMembershipResponse {
4147
role: RoleResponse;
4248
roles?: RoleResponse[];
49+
user?: UserResponse;
4350
}
4451

4552
export type AuthorizationOrganizationMembershipResponse =

‎src/user-management/serializers/organization-membership.serializer.ts‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
OrganizationMembership,
55
OrganizationMembershipResponse,
66
} from '../interfaces/organization-membership.interface';
7+
import { deserializeUser } from './user.serializer';
78

89
export const deserializeOrganizationMembership = (
910
organizationMembership: OrganizationMembershipResponse,
@@ -20,6 +21,9 @@ export const deserializeOrganizationMembership = (
2021
role: organizationMembership.role,
2122
...(organizationMembership.roles && { roles: organizationMembership.roles }),
2223
customAttributes: organizationMembership.custom_attributes ?? {},
24+
...(organizationMembership.user && {
25+
user: deserializeUser(organizationMembership.user),
26+
}),
2327
});
2428

2529
export const deserializeAuthorizationOrganizationMembership = (

‎src/user-management/user-management.spec.ts‎

Lines changed: 24 additions & 0 deletions

0 commit comments

Comments
 (0)