diff --git a/dictation_server/src/features/users/test/users.service.mock.ts b/dictation_server/src/features/users/test/users.service.mock.ts index a59284a..803014e 100644 --- a/dictation_server/src/features/users/test/users.service.mock.ts +++ b/dictation_server/src/features/users/test/users.service.mock.ts @@ -20,6 +20,7 @@ export type UsersRepositoryMockValue = { findUserById: User | Error; createNormalUser: User | Error; findSameAccountUsers: User[] | Error; + findUserByExternalId: User | Error; }; export type AdB2cMockValue = { @@ -186,6 +187,7 @@ export const makeUsersRepositoryMock = (value: UsersRepositoryMockValue) => { findUserById, createNormalUser, findSameAccountUsers, + findUserByExternalId, } = value; const aIdError = new authorIdError('ER_DUP_ENTRY'); @@ -213,6 +215,10 @@ export const makeUsersRepositoryMock = (value: UsersRepositoryMockValue) => { : jest .fn, []>() .mockResolvedValue(findSameAccountUsers), + findUserByExternalId: + findUserByExternalId instanceof Error + ? jest.fn, []>().mockRejectedValue(findUserByExternalId) + : jest.fn, []>().mockResolvedValue(findUserByExternalId), }; }; @@ -325,5 +331,6 @@ export const makeDefaultUsersRepositoryMockValue = findUserById: newUser, createNormalUser: newUser, findSameAccountUsers: [user1, user2], + findUserByExternalId: newUser, }; }; diff --git a/dictation_server/src/features/users/users.service.ts b/dictation_server/src/features/users/users.service.ts index 317a006..4c96728 100644 --- a/dictation_server/src/features/users/users.service.ts +++ b/dictation_server/src/features/users/users.service.ts @@ -98,12 +98,13 @@ export class UsersService { //アクセストークンからユーザーIDを取得する // TODO アクセストークンの中身が具体的に確定したら、型変換を取り払う必要があるかも this.logger.log(`[IN] ${this.createUser.name}`); - const userId = Number(accessToken.userId); //DBよりアクセス者の所属するアカウントIDを取得する let adminUser: EntityUser; try { - adminUser = await this.usersRepository.findUserById(userId); + adminUser = await this.usersRepository.findUserByExternalId( + accessToken.userId, + ); } catch (e) { throw new HttpException( makeErrorResponse('E009999'), @@ -281,7 +282,7 @@ export class UsersService { // DBから同一アカウントのユーザ一覧を取得する const dbUsers = await this.usersRepository.findSameAccountUsers( - Number(payload.userId), + payload.userId, ); // 値をマージして定義されたレスポンス通りに返す diff --git a/dictation_server/src/repositories/users/users.repository.service.ts b/dictation_server/src/repositories/users/users.repository.service.ts index 8617df0..6e7bdb5 100644 --- a/dictation_server/src/repositories/users/users.repository.service.ts +++ b/dictation_server/src/repositories/users/users.repository.service.ts @@ -165,17 +165,19 @@ export class UsersRepositoryService { /** * 同じアカウントIDを持つユーザーを探す - * @param userId + * @param criteria * @returns User[] */ - async findSameAccountUsers(userId: number): Promise { - const dbUser = await this.dataSource - .getRepository(User) - .findOne({ where: [{ id: userId }] }); + async findSameAccountUsers(criteria: string): Promise { + const dbUser = await this.dataSource.getRepository(User).findOne({ + where: { + external_id: criteria, + }, + }); const dbUsers = await this.dataSource .getRepository(User) - .find({ where: [{ account_id: dbUser.account_id }] }); + .find({ where: { account_id: dbUser.account_id } }); return dbUsers; }