Skip to content

Commit 6661fb0

Browse files
committed
refactor: collect optional parameters in an object
1 parent 901adb4 commit 6661fb0

File tree

1 file changed

+26
-22
lines changed

1 file changed

+26
-22
lines changed

src/users/index.ts

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export interface DBUsers extends UsersBase {
5959
* @param {string} userId The ID of the user to retrieve the assigned roles for.
6060
* @returns {Promise<Record<string, Role>>} A map of role names to their respective roles.
6161
*/
62-
getAssignedRoles: (userId: string, includePermissions?: boolean) => Promise<Record<string, Role>>;
62+
getAssignedRoles: (userId: string, opts?: GetAssingedRolesOptions) => Promise<Record<string, Role>>;
6363

6464
create: (userId: string) => Promise<string>;
6565
delete: (userId: string) => Promise<boolean>;
@@ -70,6 +70,10 @@ export interface DBUsers extends UsersBase {
7070
listAll: () => Promise<UserDB[]>;
7171
}
7272

73+
type GetAssingedRolesOptions = {
74+
includePermissions?: boolean;
75+
}
76+
7377
/** Operations supported for namespaced 'oidc' users.*/
7478
export interface OIDCUsers extends UsersBase {
7579
/**
@@ -78,7 +82,7 @@ export interface OIDCUsers extends UsersBase {
7882
* @param {string} userId The ID of the user to retrieve the assigned roles for.
7983
* @returns {Promise<Record<string, Role>>} A map of role names to their respective roles.
8084
*/
81-
getAssignedRoles: (userId: string, includePermissions?: boolean) => Promise<Record<string, Role>>;
85+
getAssignedRoles: (userId: string, opts?: GetAssingedRolesOptions) => Promise<Record<string, Role>>;
8286
}
8387

8488
const users = (connection: ConnectionREST): Users => {
@@ -104,10 +108,10 @@ const db = (connection: ConnectionREST): DBUsers => {
104108

105109
type APIKeyResponse = { apikey: string };
106110
return {
107-
getAssignedRoles: (userId: string, includePermissions?: boolean) =>
108-
ns.getAssignedRoles('db', userId, includePermissions),
109-
assignRoles: (roleNames: string | string[], userId: string) => ns.assignRoles(roleNames, userId, 'db'),
110-
revokeRoles: (roleNames: string | string[], userId: string) => ns.revokeRoles(roleNames, userId, 'db'),
111+
getAssignedRoles: (userId: string, opts?: GetAssingedRolesOptions) =>
112+
ns.getAssignedRoles('db', userId, opts),
113+
assignRoles: (roleNames: string | string[], userId: string) => ns.assignRoles(roleNames, userId, { userType: 'db' }),
114+
revokeRoles: (roleNames: string | string[], userId: string) => ns.revokeRoles(roleNames, userId, { userType: 'db' }),
111115

112116
create: (userId: string) =>
113117
connection.postNoBody<APIKeyResponse>(`/users/db/${userId}`).then((resp) => resp.apikey),
@@ -136,22 +140,19 @@ const db = (connection: ConnectionREST): DBUsers => {
136140
const oidc = (connection: ConnectionREST): OIDCUsers => {
137141
const ns = namespacedUsers(connection);
138142
return {
139-
getAssignedRoles: (userId: string, includePermissions?: boolean) =>
140-
ns.getAssignedRoles('oidc', userId, includePermissions),
141-
assignRoles: (roleNames: string | string[], userId: string) => ns.assignRoles(roleNames, userId, 'oidc'),
142-
revokeRoles: (roleNames: string | string[], userId: string) => ns.revokeRoles(roleNames, userId, 'oidc'),
143+
getAssignedRoles: (userId: string, opts?: GetAssingedRolesOptions) =>
144+
ns.getAssignedRoles('oidc', userId, opts),
145+
assignRoles: (roleNames: string | string[], userId: string) => ns.assignRoles(roleNames, userId, { userType: 'oidc' }),
146+
revokeRoles: (roleNames: string | string[], userId: string) => ns.revokeRoles(roleNames, userId, { userType: 'oidc' }),
143147
};
144148
};
145149

146150
/** Internal interface for operations that MAY accept a 'db'/'oidc' namespace. */
147151
interface NamespacedUsers {
148-
getAssignedRoles: (
149-
userType: UserTypeInternal,
150-
userId: string,
151-
includePermissions?: boolean
152+
getAssignedRoles: (userType: UserTypeInternal, userId: string, opts?: GetAssingedRolesOptions
152153
) => Promise<Record<string, Role>>;
153-
assignRoles: (roleNames: string | string[], userId: string, userType?: UserTypeInternal) => Promise<void>;
154-
revokeRoles: (roleNames: string | string[], userId: string, userType?: UserTypeInternal) => Promise<void>;
154+
assignRoles: (roleNames: string | string[], userId: string, opts?: AssignRevokeOptions) => Promise<void>;
155+
revokeRoles: (roleNames: string | string[], userId: string, opts?: AssignRevokeOptions) => Promise<void>;
155156
}
156157

157158
const baseUsers = (connection: ConnectionREST): UsersBase => {
@@ -162,23 +163,26 @@ const baseUsers = (connection: ConnectionREST): UsersBase => {
162163
};
163164
};
164165

166+
/** Optional arguments to /assign and /revoke endpoints. */
167+
type AssignRevokeOptions = { userType?: UserTypeInternal }
168+
165169
const namespacedUsers = (connection: ConnectionREST): NamespacedUsers => {
166170
return {
167-
getAssignedRoles: (userType: UserTypeInternal, userId: string, includePermissions?: boolean) =>
171+
getAssignedRoles: (userType: UserTypeInternal, userId: string, opts?: GetAssingedRolesOptions) =>
168172
connection
169173
.get<WeaviateRole[]>(
170-
`/authz/users/${userId}/roles/${userType}${includePermissions ? '?&includeFullRoles=true' : ''}`
174+
`/authz/users/${userId}/roles/${userType}${opts?.includePermissions ? '?&includeFullRoles=true' : ''}`
171175
)
172176
.then(Map.roles),
173-
assignRoles: (roleNames: string | string[], userId: string, userType?: UserTypeInternal) =>
177+
assignRoles: (roleNames: string | string[], userId: string, opts?: AssignRevokeOptions) =>
174178
connection.postEmpty(`/authz/users/${userId}/assign`, {
179+
...opts,
175180
roles: Array.isArray(roleNames) ? roleNames : [roleNames],
176-
userType: userType,
177181
}),
178-
revokeRoles: (roleNames: string | string[], userId: string, userType?: UserTypeInternal) =>
182+
revokeRoles: (roleNames: string | string[], userId: string, opts?: AssignRevokeOptions) =>
179183
connection.postEmpty(`/authz/users/${userId}/revoke`, {
184+
...opts,
180185
roles: Array.isArray(roleNames) ? roleNames : [roleNames],
181-
userType: userType,
182186
}),
183187
};
184188
};

0 commit comments

Comments
 (0)