Skip to content

Commit dd06230

Browse files
authored
Release 2026 07 01 (#1614)
2 parents 2f95aac + 6466f75 commit dd06230

5 files changed

Lines changed: 24 additions & 4 deletions

File tree

apps/backend/src/datasources/UserDataSource.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff 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,

apps/backend/src/datasources/mockups/UserDataSource.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff 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 [

apps/backend/src/datasources/postgres/UserDataSource.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff 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()

apps/backend/src/datasources/stfc/StfcUserDataSource.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff 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
}

validation/package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)