Merged PR 250: [Sp13-1完了]Todoを一斉駆逐する

## 概要
[Task1774: [Sp13-1完了]Todoを一斉駆逐する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1774)

- TODOコメントに修正予定Taskを追加
- cors関連の不要な実装を削除

## レビューポイント
- 作業方針は問題ないか
- client側は軽微なTODOのみだったので今回対処しなかったが問題ないか

## 動作確認状況
- テストとビルドが通ることを確認
This commit is contained in:
湯本 開 2023-07-21 03:06:12 +00:00
parent 28a88a1b3d
commit cfb7bdb4dc
11 changed files with 29 additions and 34 deletions

View File

@ -10,7 +10,11 @@ import {
} from '../../gateways/adb2c/adb2c.service';
import { Account } from '../../repositories/accounts/entity/account.entity';
import { User } from '../../repositories/users/entity/user.entity';
import { LICENSE_EXPIRATION_THRESHOLD_DAYS, TIERS, USER_ROLES } from '../../constants';
import {
LICENSE_EXPIRATION_THRESHOLD_DAYS,
TIERS,
USER_ROLES,
} from '../../constants';
import { makeErrorResponse } from '../../common/error/makeErrorResponse';
import { TypistGroup } from './types/types';
import { GetLicenseSummaryResponse, Typist } from './types/types';
@ -313,7 +317,8 @@ export class AccountsService {
try {
// アクセストークンからユーザーIDを取得する
myAccountId = (await this.usersRepository.findUserByExternalId(userId)).account_id;
myAccountId = (await this.usersRepository.findUserByExternalId(userId))
.account_id;
} catch (e) {
this.logger.error(`error=${e}`);
if (e instanceof UserNotFoundError) {
@ -328,7 +333,7 @@ export class AccountsService {
);
}
}
const ramdomPassword = makePassword();
let externalUser: { sub: string } | ConflictError;
@ -367,7 +372,7 @@ export class AccountsService {
USER_ROLES.NONE,
null,
);
const from = this.configService.get<string>('MAIL_FROM') || '';
const { subject, text, html } =
await this.sendgridService.createMailContentFromEmailConfirmForNormalUser(
@ -375,13 +380,7 @@ export class AccountsService {
adminUser.id,
email,
);
await this.sendgridService.sendMail(
email,
from,
subject,
text,
html,
);
await this.sendgridService.sendMail(email, from, subject, text, html);
} catch (e) {
this.logger.error(`error=${e}`);
this.logger.error('create partner account failed');

View File

@ -195,7 +195,7 @@ export class FilesService {
accountId,
country,
);
//TODO コンテナが無ければ作成しているが、アカウント登録時に作成するので本処理は削除予定。
//TODO [Task2241] コンテナが無ければ作成しているが、アカウント登録時に作成するので本処理は削除予定。
if (!isContainerExist) {
await this.blobStorageService.createContainer(accountId, country);
}

View File

@ -480,7 +480,7 @@ export class TasksController {
)
async changeCheckoutPermission(
@Req() req: Request,
//TODOcheckoutやcheckinと同じパスパラメータなので記述方法を統一したい
//TODO [Task2243] checkoutやcheckinと同じパスパラメータなので記述方法を統一したい
@Param(`audioFileId`, ParseIntPipe)
audioFileId: number,
@Body() body: PostCheckoutPermissionRequest,

View File

@ -39,7 +39,7 @@ export class TasksService {
private readonly adB2cService: AdB2cService,
) {}
// TODO: 引数にAccessTokenがあるのは不適切なのでController側で分解したい
// TODO [Task2244] 引数にAccessTokenがあるのは不適切なのでController側で分解したい
async getTasks(
accessToken: AccessToken,
offset: number,
@ -49,7 +49,8 @@ export class TasksService {
direction?: SortDirection,
): Promise<{ tasks: Task[]; total: number }> {
const { role, userId } = accessToken;
const roles = role.split(' '); // TODO: Roleを型で定義されているものに修正する
// TODO [Task2244] Roleに型で定義されている値が入っているかをチェックして異常値を弾く実装に修正する
const roles = role.split(' ');
// パラメータが省略された場合のデフォルト値: 保存するソート条件の値の初期値と揃える
const defaultParamName: TaskListSortableAttribute = 'JOB_NUMBER';

View File

@ -168,7 +168,7 @@ export class UsersService {
//Azure AD B2Cに登録したユーザー情報のID(sub)と受け取った情報を使ってDBにユーザーを登録する
let newUser: EntityUser;
// TODO 本来はNULLだが、テーブル定義に誤ってNOTNULLが付いているため、一時的に適当な値を設定
// TODO [Task2246] 本来はNULLだが、テーブル定義に誤ってNOTNULLが付いているため、一時的に適当な値を設定
const accepted_terms_version = 'xxx';
try {
// ユーザ作成
@ -260,7 +260,7 @@ export class UsersService {
await this.usersRepository.updateUserVerified(userId);
// メールの送信元を取得
const from = this.configService.get<string>('MAIL_FROM') ?? '';
// XXX ODMS側が正式にメッセージを決めるまで仮のメール内容とする
// TODO [Task2163] ODMS側が正式にメッセージを決めるまで仮のメール内容とする
const subject = 'A temporary password has been issued.';
const text = 'temporary password: ' + ramdomPassword;
const domains = this.configService.get<string>('APP_DOMAIN');
@ -303,7 +303,7 @@ export class UsersService {
// 値をマージして定義されたレスポンス通りに返す
const users: User[] = [];
// TODO 膨大なループが発生することが見込まれ商用には耐えないので、本実装時に修正予定
// TODO [Task2002] 膨大なループが発生することが見込まれ商用には耐えないので、本実装時に修正予定
for (let i = 0; i < dbUsers.length; i++) {
// Azure AD B2Cからユーザーを取得する
const aadb2cUser = await this.adB2cService.getUser(
@ -314,7 +314,7 @@ export class UsersService {
user.name = aadb2cUser.displayName;
user.role = dbUsers[i].role;
user.authorId = dbUsers[i].author_id;
// TODO DBから取得できるようになるため暫定
// TODO [Task2247] 将来的にはDBから取得できるようになる想定のため暫定的にtypistGroupNameに仮の値を設
user.typistGroupName = '';
user.email = aadb2cUser.mail;
user.emailVerified = dbUsers[i].email_verified;

View File

@ -194,7 +194,7 @@ export class AdB2cService {
);
/*
TODO 15
TODO [Task2002] 15
2002: B2Cからの名前取得をより低コストで行えるように修正する
*/
@ -226,7 +226,8 @@ export class AdB2cService {
}
}
}
// TODO 文字列の配列を15要素ずつ区切る(この処理も別タスクで削除予定)
// TODO [Task2002] 文字列の配列を15要素ずつ区切る(この処理も別タスクで削除予定)
const splitArrayInChunksOfFifteen = (arr: string[]): string[][] => {
const result: string[][] = [];
const chunkSize = 15; // SDKの制限数

View File

@ -25,7 +25,6 @@ export class BlobstorageService {
private readonly sharedKeyCredentialAU: StorageSharedKeyCredential;
private readonly sharedKeyCredentialEU: StorageSharedKeyCredential;
constructor(private readonly configService: ConfigService) {
// TODO リソース作成後に接続情報をKeyVaultに格納し、そこから取得するように修正する
this.sharedKeyCredentialUS = new StorageSharedKeyCredential(
this.configService.get('STORAGE_ACCOUNT_NAME_US'),
this.configService.get('STORAGE_ACCOUNT_KEY_US'),

View File

@ -32,7 +32,7 @@ export class NotificationhubService {
reg = createWindowsRegistrationDescription({
channelUri: pnsHandler,
tags: [],
// XXX 登録の有効期限を設定したい場合
// XXX [Task2218] 登録の有効期限を設定したい場合等、本実装を別途Taskで行う
//expirationTime: '',
});
} else if (pns === 'apns') {

View File

@ -53,7 +53,7 @@ export class SendGridService {
* @param email
* @returns
*/
//TODO 中身が管理ユーザ向けのままなので、修正の必要あり
//TODO [Task2163] 中身が管理ユーザ向けのままなので、修正の必要あり
async createMailContentFromEmailConfirmForNormalUser(
accountId: number,
userId: number,

View File

@ -15,12 +15,7 @@ helmetDirectives['style-src'] = ["'self'", 'https:'];
helmetDirectives['report-uri'] = ["'self'"];
async function bootstrap() {
const app = await NestFactory.create(AppModule);
//XXX 特定のオリジンからのリクエストは許可する
app.enableCors({
origin: 'http://localhost:8180',
methods: 'GET,PUT,POST,DELETE,OPTION',
allowedHeaders: 'Origin,Content-Type,Accept,Authorization',
});
app.use(
helmet({
contentSecurityPolicy: {

View File

@ -449,8 +449,8 @@ export class TasksRepositoryService {
skip: offset,
});
// TODO: Task内にCheckoutPermissionを含める方法が上手くいかなかった複雑になりすぎた 原因未調査)ため、
// 確実に上手くいく方法としてQueryの分割を行ったが、本来はオブジェクトの構築はTypeORMに一任したい
// TODO [Task2249] Task内にCheckoutPermissionを含める方法が上手くいかなかった複雑になりすぎた 原因未調査)ため、
// 確実に上手くいく方法としてQueryの分割を行ったが、本来はオブジェクトの構築はTypeORMに一任したい
const checkoutRepo = entityManager.getRepository(CheckoutPermission);
const taskIds = tasks.map((x) => x.id);
@ -638,8 +638,8 @@ export class TasksRepositoryService {
skip: offset,
});
// TODO: Task内にCheckoutPermissionを含める方法が上手くいかなかった複雑になりすぎた 原因未調査)ため、
// 確実に上手くいく方法としてQueryの分割を行ったが、本来はオブジェクトの構築はTypeORMに一任したい
// TODO [Task2249] Task内にCheckoutPermissionを含める方法が上手くいかなかった複雑になりすぎた 原因未調査)ため、
// 確実に上手くいく方法としてQueryの分割を行ったが、本来はオブジェクトの構築はTypeORMに一任したい
const taskIds = tasks.map((x) => x.id);
const permissions = await checkoutRepo.find({
relations: {