@@ -290,6 +290,13 @@ export class DatabaseConnection {
290290 }
291291 }
292292 let doadd : boolean = true ;
293+ if ( ( item as any ) . hidemembers == true ) {
294+ doadd = false ;
295+ for ( let i = item . members . length - 1 ; i >= 0 ; i -- ) {
296+ const ace = original . members [ i ] ;
297+ removed . push ( ace ) ;
298+ }
299+ }
293300 const multi_tenant_skip : string [ ] = [ WellknownIds . users , WellknownIds . filestore_users ,
294301 WellknownIds . nodered_api_users , WellknownIds . nodered_users , WellknownIds . personal_nodered_users ,
295302 WellknownIds . robot_users , WellknownIds . robots , WellknownIds . customer_admins , WellknownIds . resellers ] ;
@@ -364,7 +371,8 @@ export class DatabaseConnection {
364371
365372 // was read the only right ? then remove it
366373 const right = Base . getRight ( u , item . _id , false ) ;
367- if ( NoderedUtil . IsNullUndefinded ( right ) ) {
374+ if ( NoderedUtil . IsNullUndefinded ( right ) || ( ! Ace . isBitSet ( right , 3 ) && ! Ace . isBitSet ( right , 4 ) && ! Ace . isBitSet ( right , 5 ) ) ) {
375+ Base . removeRight ( u , item . _id , [ Rights . full_control ] ) ;
368376 u = this . ensureResource ( u ) ;
369377 Logger . instanse . debug ( "Removing " + item . name + " read permissions from " + u . name ) ;
370378 const _ot_end1 = Logger . otel . startTimer ( ) ;
@@ -382,7 +390,8 @@ export class DatabaseConnection {
382390
383391 // was read the only right ? then remove it
384392 const right = Base . getRight ( r , item . _id , false ) ;
385- if ( NoderedUtil . IsNullUndefinded ( right ) ) {
393+ if ( NoderedUtil . IsNullUndefinded ( right ) || ( ! Ace . isBitSet ( right , 3 ) && ! Ace . isBitSet ( right , 4 ) && ! Ace . isBitSet ( right , 5 ) ) ) {
394+ Base . removeRight ( r , item . _id , [ Rights . full_control ] ) ;
386395 r = this . ensureResource ( r ) ;
387396 Logger . instanse . debug ( "Removing " + item . name + " read permissions from " + r . name ) ;
388397 const _ot_end2 = Logger . otel . startTimer ( ) ;
0 commit comments