@@ -8,6 +8,7 @@ export class DBHelper {
88 public static async FindByUsername ( username : string , jwt : string , parent : Span ) : Promise < User > {
99 const span : Span = Logger . otel . startSubSpan ( "dbhelper.FindByUsername" , parent ) ;
1010 try {
11+ if ( NoderedUtil . IsNullEmpty ( username ) ) throw new Error ( "Username is mandatory" )
1112 const byuser = { username : new RegExp ( [ "^" , username , "$" ] . join ( "" ) , "i" ) } ;
1213 const byid = { federationids : new RegExp ( [ "^" , username , "$" ] . join ( "" ) , "i" ) }
1314 const q = { $or : [ byuser , byid ] } ;
@@ -42,6 +43,7 @@ export class DBHelper {
4243 try {
4344 var _id = id ;
4445 if ( NoderedUtil . IsNullEmpty ( _id ) ) _id = null ;
46+ if ( NoderedUtil . IsNullEmpty ( username ) && NoderedUtil . IsNullEmpty ( _id ) ) throw new Error ( "Either username or id is mandatory" ) ;
4547 const items : User [ ] = await Config . db . query < User > ( { $or : [ { username : new RegExp ( [ "^" , username , "$" ] . join ( "" ) , "i" ) } , { _id } ] } ,
4648 null , 1 , 0 , null , "users" , Crypt . rootToken ( ) , undefined , undefined , span ) ;
4749 if ( items === null || items === undefined || items . length === 0 ) { return null ; }
@@ -56,6 +58,7 @@ export class DBHelper {
5658 public static async FindByUsernameOrFederationid ( username : string , parent : Span ) : Promise < User > {
5759 const span : Span = Logger . otel . startSubSpan ( "dbhelper.FindByUsernameOrFederationid" , parent ) ;
5860 try {
61+ if ( NoderedUtil . IsNullEmpty ( username ) ) throw new Error ( "username cannot be null" ) ;
5962 const byuser = { username : new RegExp ( [ "^" , username , "$" ] . join ( "" ) , "i" ) } ;
6063 const byid = { federationids : new RegExp ( [ "^" , username , "$" ] . join ( "" ) , "i" ) }
6164 const q = { $or : [ byuser , byid ] } ;
@@ -74,6 +77,7 @@ export class DBHelper {
7477 public static async DecorateWithRoles < T extends TokenUser | User > ( user : T , parent : Span ) : Promise < T > {
7578 const span : Span = Logger . otel . startSubSpan ( "dbhelper.DecorateWithRoles" , parent ) ;
7679 try {
80+ if ( NoderedUtil . IsNullUndefinded ( user ) ) throw new Error ( "User is mandatory" ) ;
7781 if ( ! Config . decorate_roles_fetching_all_roles ) {
7882 if ( ! user . roles ) user . roles = [ ] ;
7983 const pipe : any = [ { "$match" : { "_id" : user . _id } } ,
@@ -164,22 +168,18 @@ export class DBHelper {
164168 return user as any ;
165169 }
166170 public static async FindRoleByName ( name : string , parent : Span ) : Promise < Role > {
167- const items : Role [ ] = await Config . db . query < Role > ( { name : name } , null , 1 , 0 , null , "users" , Crypt . rootToken ( ) , undefined , undefined , parent ) ;
171+ const items : Role [ ] = await Config . db . query < Role > ( { name : name , "_type" : "role" } , null , 1 , 0 , null , "users" , Crypt . rootToken ( ) , undefined , undefined , parent ) ;
168172 if ( items === null || items === undefined || items . length === 0 ) { return null ; }
169173 return Role . assign ( items [ 0 ] ) ;
170174 }
171175 public static async FindRoleByNameOrId ( name : string , id : string , parent : Span ) : Promise < Role > {
172- try {
173- var _id = id ;
174- if ( NoderedUtil . IsNullEmpty ( _id ) ) _id = null ; // undefined is bad here
175- const jwt = Crypt . rootToken ( ) ;
176- const items : Role [ ] = await Config . db . query < Role > ( { $or : [ { name } , { _id } ] , "_type" : "role" } , null , 5 , 0 , null , "users" , jwt , undefined , undefined , parent ) ;
177- if ( items === null || items === undefined || items . length === 0 ) { return null ; }
178- return Role . assign ( items [ 0 ] ) ;
179- } catch ( error ) {
180- console . error ( error ) ;
181- return null ;
182- }
176+ var _id = id ;
177+ if ( NoderedUtil . IsNullEmpty ( _id ) ) _id = null ; // undefined is bad here
178+ if ( NoderedUtil . IsNullEmpty ( name ) && NoderedUtil . IsNullEmpty ( _id ) ) throw new Error ( "Either username or id is mandatory" ) ;
179+ const jwt = Crypt . rootToken ( ) ;
180+ const items : Role [ ] = await Config . db . query < Role > ( { $or : [ { name } , { _id } ] , "_type" : "role" } , null , 5 , 0 , null , "users" , jwt , undefined , undefined , parent ) ;
181+ if ( items === null || items === undefined || items . length === 0 ) { return null ; }
182+ return Role . assign ( items [ 0 ] ) ;
183183 }
184184 public static async Save ( item : User | Role , jwt : string , parent : Span ) : Promise < void > {
185185 await Config . db . _UpdateOne ( null , item , "users" , 2 , false , jwt , parent ) ;
@@ -205,7 +205,7 @@ export class DBHelper {
205205 Logger . otel . endSpan ( span ) ;
206206 }
207207 }
208- public static async ensureUser ( jwt : string , name : string , username : string , id : string , password : string , parent : Span ) : Promise < User > {
208+ public static async EnsureUser ( jwt : string , name : string , username : string , id : string , password : string , parent : Span ) : Promise < User > {
209209 const span : Span = Logger . otel . startSubSpan ( "dbhelper.ensureUser" , parent ) ;
210210 try {
211211 let user : User = await this . FindByUsernameOrId ( username , id , span ) ;
0 commit comments