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;
|
findUserById: User | Error;
|
||||||
createNormalUser: User | Error;
|
createNormalUser: User | Error;
|
||||||
findSameAccountUsers: User[] | Error;
|
findSameAccountUsers: User[] | Error;
|
||||||
|
findUserByExternalId: User | Error;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AdB2cMockValue = {
|
export type AdB2cMockValue = {
|
||||||
@ -186,6 +187,7 @@ export const makeUsersRepositoryMock = (value: UsersRepositoryMockValue) => {
|
|||||||
findUserById,
|
findUserById,
|
||||||
createNormalUser,
|
createNormalUser,
|
||||||
findSameAccountUsers,
|
findSameAccountUsers,
|
||||||
|
findUserByExternalId,
|
||||||
} = value;
|
} = value;
|
||||||
|
|
||||||
const aIdError = new authorIdError('ER_DUP_ENTRY');
|
const aIdError = new authorIdError('ER_DUP_ENTRY');
|
||||||
@ -213,6 +215,10 @@ export const makeUsersRepositoryMock = (value: UsersRepositoryMockValue) => {
|
|||||||
: jest
|
: jest
|
||||||
.fn<Promise<User[] | undefined>, []>()
|
.fn<Promise<User[] | undefined>, []>()
|
||||||
.mockResolvedValue(findSameAccountUsers),
|
.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,
|
findUserById: newUser,
|
||||||
createNormalUser: newUser,
|
createNormalUser: newUser,
|
||||||
findSameAccountUsers: [user1, user2],
|
findSameAccountUsers: [user1, user2],
|
||||||
|
findUserByExternalId: newUser,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -98,12 +98,13 @@ export class UsersService {
|
|||||||
//アクセストークンからユーザーIDを取得する
|
//アクセストークンからユーザーIDを取得する
|
||||||
// TODO アクセストークンの中身が具体的に確定したら、型変換を取り払う必要があるかも
|
// TODO アクセストークンの中身が具体的に確定したら、型変換を取り払う必要があるかも
|
||||||
this.logger.log(`[IN] ${this.createUser.name}`);
|
this.logger.log(`[IN] ${this.createUser.name}`);
|
||||||
const userId = Number(accessToken.userId);
|
|
||||||
|
|
||||||
//DBよりアクセス者の所属するアカウントIDを取得する
|
//DBよりアクセス者の所属するアカウントIDを取得する
|
||||||
let adminUser: EntityUser;
|
let adminUser: EntityUser;
|
||||||
try {
|
try {
|
||||||
adminUser = await this.usersRepository.findUserById(userId);
|
adminUser = await this.usersRepository.findUserByExternalId(
|
||||||
|
accessToken.userId,
|
||||||
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new HttpException(
|
throw new HttpException(
|
||||||
makeErrorResponse('E009999'),
|
makeErrorResponse('E009999'),
|
||||||
@ -281,7 +282,7 @@ export class UsersService {
|
|||||||
|
|
||||||
// DBから同一アカウントのユーザ一覧を取得する
|
// DBから同一アカウントのユーザ一覧を取得する
|
||||||
const dbUsers = await this.usersRepository.findSameAccountUsers(
|
const dbUsers = await this.usersRepository.findSameAccountUsers(
|
||||||
Number(payload.userId),
|
payload.userId,
|
||||||
);
|
);
|
||||||
|
|
||||||
// 値をマージして定義されたレスポンス通りに返す
|
// 値をマージして定義されたレスポンス通りに返す
|
||||||
|
|||||||
@ -165,17 +165,19 @@ export class UsersRepositoryService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 同じアカウントIDを持つユーザーを探す
|
* 同じアカウントIDを持つユーザーを探す
|
||||||
* @param userId
|
* @param criteria
|
||||||
* @returns User[]
|
* @returns User[]
|
||||||
*/
|
*/
|
||||||
async findSameAccountUsers(userId: number): Promise<User[]> {
|
async findSameAccountUsers(criteria: string): Promise<User[]> {
|
||||||
const dbUser = await this.dataSource
|
const dbUser = await this.dataSource.getRepository(User).findOne({
|
||||||
.getRepository(User)
|
where: {
|
||||||
.findOne({ where: [{ id: userId }] });
|
external_id: criteria,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const dbUsers = await this.dataSource
|
const dbUsers = await this.dataSource
|
||||||
.getRepository(User)
|
.getRepository(User)
|
||||||
.find({ where: [{ account_id: dbUser.account_id }] });
|
.find({ where: { account_id: dbUser.account_id } });
|
||||||
|
|
||||||
return dbUsers;
|
return dbUsers;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user