Merged PR 103: DBのユーザIDではなくAzureのIDを条件に取得できるよう修正
## 概要 [Task1744: DBのユーザIDではなくAzureのIDを条件に取得できるよう修正](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1744) タスク 1744: DBのユーザIDではなくAzureのIDを条件に取得できるよう修正 ・アクセストークンのIDからアカウントIDを取得する際に使用する関数を「findUserById」から「findUserByExternalId」に変更。 ・ユーザ一覧取得時のDB処理を修正。 ## レビューポイント ・アクセストークンのIDからアカウントIDを取得する際に、斎藤さんがPR93で作成している「findUserByExternalId」を使用しているが問題ないか? ・ユーザ一覧取得時の処理に問題がないか? ## UIの変更 なし ## 動作確認状況 ローカルでのユニットテスト実施済み。 ユーザ作成APIを実行し、ユーザ作成ができることを確認。 ユーザ一覧取得APIを実行し、ユーザ一覧が取得できることを確認。 ## 補足 なし
This commit is contained in:
parent
c5ebd6ec50
commit
3ebfe4a585
@ -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<Promise<User[] | undefined>, []>()
|
||||
.mockResolvedValue(findSameAccountUsers),
|
||||
findUserByExternalId:
|
||||
findUserByExternalId instanceof Error
|
||||
? jest.fn<Promise<void>, []>().mockRejectedValue(findUserByExternalId)
|
||||
: jest.fn<Promise<User>, []>().mockResolvedValue(findUserByExternalId),
|
||||
};
|
||||
};
|
||||
|
||||
@ -325,5 +331,6 @@ export const makeDefaultUsersRepositoryMockValue =
|
||||
findUserById: newUser,
|
||||
createNormalUser: newUser,
|
||||
findSameAccountUsers: [user1, user2],
|
||||
findUserByExternalId: newUser,
|
||||
};
|
||||
};
|
||||
|
||||
@ -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,
|
||||
);
|
||||
|
||||
// 値をマージして定義されたレスポンス通りに返す
|
||||
|
||||
@ -165,17 +165,19 @@ export class UsersRepositoryService {
|
||||
|
||||
/**
|
||||
* 同じアカウントIDを持つユーザーを探す
|
||||
* @param userId
|
||||
* @param criteria
|
||||
* @returns User[]
|
||||
*/
|
||||
async findSameAccountUsers(userId: number): Promise<User[]> {
|
||||
const dbUser = await this.dataSource
|
||||
.getRepository(User)
|
||||
.findOne({ where: [{ id: userId }] });
|
||||
async findSameAccountUsers(criteria: string): Promise<User[]> {
|
||||
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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user