Skip to content

Commit 66d2915

Browse files
committed
feat: quote user IDs when they're part of the URL
1 parent 194c42e commit 66d2915

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

src/users/index.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ const users = (connection: ConnectionREST): Users => {
150150
return {
151151
getMyUser: () => connection.get<WeaviateUser>('/users/own-info').then(Map.user),
152152
getAssignedRoles: (userId: string) =>
153-
connection.get<WeaviateRole[]>(`/authz/users/${userId}/roles`).then(Map.roles),
153+
connection.get<WeaviateRole[]>(`/authz/users/${encodeURIComponent(userId)}/roles`).then(Map.roles),
154154
assignRoles: (roleNames: string | string[], userId: string) => base.assignRoles(roleNames, userId),
155155
revokeRoles: (roleNames: string | string[], userId: string) => base.revokeRoles(roleNames, userId),
156156
db: db(connection),
@@ -182,30 +182,35 @@ const db = (connection: ConnectionREST): DBUsers => {
182182
ns.revokeRoles(roleNames, userId, { userType: 'db' }),
183183

184184
create: (userId: string) =>
185-
connection.postReturn<null, APIKeyResponse>(`/users/db/${userId}`, null).then((resp) => resp.apikey),
185+
connection
186+
.postReturn<null, APIKeyResponse>(`/users/db/${encodeURIComponent(userId)}`, null)
187+
.then((resp) => resp.apikey),
186188
delete: (userId: string) =>
187189
connection
188-
.delete(`/users/db/${userId}`, null)
190+
.delete(`/users/db/${encodeURIComponent(userId)}`, null)
189191
.then(() => true)
190192
.catch(() => false),
191193
rotateKey: (userId: string) =>
192194
connection
193-
.postReturn<null, APIKeyResponse>(`/users/db/${userId}/rotate-key`, null)
195+
.postReturn<null, APIKeyResponse>(`/users/db/${encodeURIComponent(userId)}/rotate-key`, null)
194196
.then((resp) => resp.apikey),
195197
activate: (userId: string) =>
196198
connection
197-
.postEmpty<null>(`/users/db/${userId}/activate`, null)
199+
.postEmpty<null>(`/users/db/${encodeURIComponent(userId)}/activate`, null)
198200
.then(() => true)
199201
.catch(expectCode(409)),
200202
deactivate: (userId: string, opts?: DeactivateOptions) =>
201203
connection
202-
.postEmpty<DeactivateOptions | null>(`/users/db/${userId}/deactivate`, opts || null)
204+
.postEmpty<DeactivateOptions | null>(
205+
`/users/db/${encodeURIComponent(userId)}/deactivate`,
206+
opts || null
207+
)
203208
.then(() => true)
204209
.catch(expectCode(409)),
205210
byName: (userId: string, opts?: GetUserOptions) =>
206211
connection
207212
.get<WeaviateDBUser>(
208-
`/users/db/${userId}?includeLastUsedTime=${opts?.includeLastUsedTime || false}`,
213+
`/users/db/${encodeURIComponent(userId)}?includeLastUsedTime=${opts?.includeLastUsedTime || false}`,
209214
true
210215
)
211216
.then(Map.dbUser),
@@ -254,16 +259,18 @@ const namespacedUsers = (connection: ConnectionREST): NamespacedUsers => {
254259
getAssignedRoles: (userType: UserTypeInternal, userId: string, opts?: GetAssignedRolesOptions) =>
255260
connection
256261
.get<WeaviateRole[]>(
257-
`/authz/users/${userId}/roles/${userType}?includeFullRoles=${opts?.includePermissions || false}`
262+
`/authz/users/${encodeURIComponent(userId)}/roles/${userType}?includeFullRoles=${
263+
opts?.includePermissions || false
264+
}`
258265
)
259266
.then(Map.roles),
260267
assignRoles: (roleNames: string | string[], userId: string, opts?: AssignRevokeOptions) =>
261-
connection.postEmpty(`/authz/users/${userId}/assign`, {
268+
connection.postEmpty(`/authz/users/${encodeURIComponent(userId)}/assign`, {
262269
...opts,
263270
roles: Array.isArray(roleNames) ? roleNames : [roleNames],
264271
}),
265272
revokeRoles: (roleNames: string | string[], userId: string, opts?: AssignRevokeOptions) =>
266-
connection.postEmpty(`/authz/users/${userId}/revoke`, {
273+
connection.postEmpty(`/authz/users/${encodeURIComponent(userId)}/revoke`, {
267274
...opts,
268275
roles: Array.isArray(roleNames) ? roleNames : [roleNames],
269276
}),

0 commit comments

Comments
 (0)