File tree Expand file tree Collapse file tree
apps/backend/src/datasources Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -75,6 +75,7 @@ export interface UserDataSource {
7575 ) : Promise < number > ;
7676 update ( user : UpdateUserByIdArgs ) : Promise < User > ;
7777 setUserRoles ( id : number , roles : number [ ] ) : Promise < void > ;
78+ removeUserRoles ( id : number , roles : number [ ] ) : Promise < void > ;
7879 setUserNotPlaceholder ( id : number ) : Promise < User | null > ;
7980 checkScientistToProposal (
8081 userId : number ,
Original file line number Diff line number Diff line change @@ -475,6 +475,9 @@ export class UserDataSourceMock implements UserDataSource {
475475 async setUserRoles ( id : number , roles : number [ ] ) : Promise < void > {
476476 // Do something here or remove the function.
477477 }
478+ async removeUserRoles ( id : number ) : Promise < void > {
479+ return ;
480+ }
478481 async getUserRoles ( id : number ) : Promise < Role [ ] > {
479482 if ( id == dummyUserOfficer . id ) {
480483 return [
Original file line number Diff line number Diff line change @@ -151,6 +151,12 @@ export default class PostgresUserDataSource implements UserDataSource {
151151 } ) ;
152152 }
153153
154+ async removeUserRoles ( id : number ) : Promise < void > {
155+ return database . transaction ( async ( trx ) => {
156+ await trx < RoleUserRecord > ( 'role_user' ) . where ( 'user_id' , id ) . del ( ) ;
157+ } ) ;
158+ }
159+
154160 async me ( id : number ) : Promise < User | null > {
155161 return database
156162 . select ( )
Original file line number Diff line number Diff line change @@ -415,7 +415,11 @@ export class StfcUserDataSource implements UserDataSource {
415415 ( roleId ) => ! assignedRoleIds . has ( roleId ) && roleId !== userRole ?. id
416416 ) ;
417417
418- if ( newRolesToAssign . length > 0 ) {
418+ if ( newRolesToAssign . length == 0 ) {
419+ this . removeUserRoles ( id ) ;
420+ this . stfcRolesCache . remove ( String ( id ) ) ;
421+ this . uopRolesCache . remove ( String ( id ) ) ;
422+ } else if ( newRolesToAssign . length > 0 ) {
419423 await postgresUserDataSource . setUserRoles ( id , newRolesToAssign ) ;
420424 this . stfcRolesCache . remove ( String ( id ) ) ;
421425 this . uopRolesCache . remove ( String ( id ) ) ;
@@ -522,6 +526,12 @@ export class StfcUserDataSource implements UserDataSource {
522526 throw new Error ( 'Method not implemented.' ) ;
523527 }
524528
529+ async removeUserRoles ( id : number ) : Promise < void > {
530+ await postgresUserDataSource . removeUserRoles ( id ) ;
531+
532+ return ;
533+ }
534+
525535 async me ( id : number ) {
526536 return this . getUser ( id ) ;
527537 }
You can’t perform that action at this time.
0 commit comments