@@ -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.*/
7478export 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
8488const 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 => {
136140const 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. */
147151interface 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
157158const 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+
165169const 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