11 Commits

Author SHA1 Message Date
saito.k
b91d260015 Merged PR 93: [WIP]API実装
## 概要
[Task1630: API実装](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1630)

- アップロード先取得APIの実行権限をチェックするためにアクセストークンに権限情報とロール情報を追加する
- ログイン時に発行しているトークンにパラメータを追加
  - role
    - ユーザーのrole情報(typist/author)
  - scope
    - 管理者権限があるか (admin/空文字)

- トークン発行前にDBからユーザーの情報を取得する処理を追加
- ユーザーを取得するときにユーザーが属しているアカウントの情報も取得するようにentitiyを修正
- `findUserByExternalId`で実行されるSQL
```
SELECT
    `User`.`id` AS `User_id`,
    `User`.`external_id` AS `User_external_id`,
    `User`.`account_id` AS `User_account_id`,
    `User`.`role` AS `User_role`,
    `User`.`author_id` AS `User_author_id`,
    `User`.`accepted_terms_version` AS `User_accepted_terms_version`,
    `User`.`email_verified` AS `User_email_verified`,
    `User`.`deleted_at` AS `User_deleted_at`,
    `User`.`created_by` AS `User_created_by`,
    `User`.`created_at` AS `User_created_at`,
    `User`.`updated_by` AS `User_updated_by`,
    `User`.`updated_at` AS `User_updated_at`,
    `User__User_account`.`id` AS `User__User_account_id`,
    `User__User_account`.`parent_account_id` AS `User__User_account_parent_account_id`,
    `User__User_account`.`tier` AS `User__User_account_tier`,
    `User__User_account`.`country` AS `User__User_account_country`,
    `User__User_account`.`delegation_permission` AS `User__User_account_delegation_permission`,
    `User__User_account`.`locked` AS `User__User_account_locked`,
    `User__User_account`.`company_name` AS `User__User_account_company_name`,
    `User__User_account`.`verified` AS `User__User_account_verified`,
    `User__User_account`.`primary_admin_user_id` AS `User__User_account_primary_admin_user_id`,
    `User__User_account`.`secondary_admin_user_id` AS `User__User_account_secondary_admin_user_id`,
    `User__User_account`.`deleted_at` AS `User__User_account_deleted_at`,
    `User__User_account`.`created_by` AS `User__User_account_created_by`,
    `User__User_account`.`created_at` AS `User__User_account_created_at`,
    `User__User_account`.`updated_by` AS `User__User_account_updated_by`,
    `User__User_account`.`updated_at` AS `User__User_account_updated_at`
FROM
    `users` `User`
    LEFT JOIN `accounts` `User__User_account` ON `User__User_account`.`id` = `User`.`account_id`
WHERE
    ((`User`.`external_id` = ?))
    AND (`User`.`id` IN (?)) -- PARAMETERS: ["B2CのID","2"]

```

## レビューポイント
- 管理者権限の有無とロールは別の概念であるため、別のパラメータとして用意したが問題なさそうか
  - 他の案としてscopeの中に`typist , admin`のようにして、一つのパラメータで権限チェックする?
- DBから取得するデータとしてユーザーが属しているアカウント情報のすべてのカラムを取得するようにしているが、必要なカラムのみにしたほうが良いか?

## UIの変更
- Before/Afterのスクショなど
- スクショ置き場

## 動作確認状況
- 実行SQLを確認、JWTの内容を確認

## 補足
- 相談、参考資料などがあれば
2023-05-12 04:48:09 +00:00
x.sunamoto.k
3f7a9ed11a Merged PR 75: API実装(ユーザー一覧取得)
## 概要
[Task1592: API実装(ユーザー一覧取得)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1592)

- ユーザ一覧取得のAPIを実装
- アクセストークンにより権限を確認する
 - src/common/jwt/jwt.ts verifyAuthority([Task1593: API実装(ユーザー登録)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1593)で作成)を呼び出すため追って再修正します。(レビュー対象外です)
 - src/features/users/users.controller.ts getUsersから
  src/features/users/users.service.ts getUsersへ
- DBから同一アカウントのユーザ一覧を取得する
 - findSameAccountUsersを新規作成

- Azure AD B2Cからユーザーを取得してマージ
 - src/gateways/adb2c/adb2c.service.ts getUserを新規作成
 - マージはfor文でまわしています(力技)
- マージした結果を返却

- 影響範囲
 - usersテーブルの変更が入るときにマージ部分の手直しが要ります。(TODOを添えています)

## レビューポイント
- 新規に作成したfindSameAccountUsersの妥当性
- 新規に作成したgetUserの妥当性
→Azureからの返り値はsrc/common/token/types.tsに定義済。
 (Azure AD B2Cから取得できた項目で再定義)

## UIの変更
- 特になし

## 動作確認状況
- ローカルでビルド、テストを実行した後に動作を確認済。

## 補足
- ご不便をおかけしました。よろしくお願いします。
2023-05-12 01:27:19 +00:00
oura.a
e9af39bd47 Merged PR 71: API実装(ユーザー登録)
## 概要
[Task1593: API実装(ユーザー登録)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1593)

https://dev.azure.com/ODMSCloud/ODMS%20Cloud/_git/ODMS%20Cloud
users.controllerにアクセストークン取得処理を追加
users.serviceにユーザ追加処理を追加
user.entityにauto_renew、license_alert、notificationを追加
users.repository.serviceにユーザ追加・AuthorId検索処理を追加

## レビューポイント
処理の記載場所が適切かどうか
期待通りの処理になっているかどうか
テストコードの記載方法が正しいかどうか

## UIの変更
なし

## 動作確認状況
ローカルでのビルド・実行を確認

## 補足
テスト実装について不安要素があります。
・テストの粒度はこれでよいのでしょうか?
・テスト実行に40分かかってしまうのですが実装方法を間違えている箇所がありそうでしょうか?
2023-05-11 09:05:54 +00:00
maruyama.t
d297301212 Merged PR 82: API実装(メール認証)
## 概要
[Task1594: API実装(メール認証)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1594)

- メール認証APIを作成
- src/api/common/にpasswordを追加(ランダムパスワード発行ロジック)
- src/fuatures/gateway/adb2c.service.tsにユーザのパスワードを変更するメソッドchangePasswordを追加
- user.service.spec.tsにメール認証と仮パスワード発行のテストケースを追加
- 影響範囲
(user.service.spec.tsで行っていた既存のテストケース)

## レビューポイント
- commonにpasswordを追加したが、配置として適切かどうか
- user.service.tsのエラー発生時のロジックが十分であるか

## 動作確認状況
- ローカルで確認
2023-05-11 07:45:30 +00:00
makabe.t
bd4aaa8ae1 Merged PR 63: API実装(メール認証)
## 概要
[Task1497: API実装(メール認証)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1497)

- メール認証APIとテストを実装しました。

- IDトークンの型を現状と合わせて修正しました
  - `family_name`と`given_name`を削除しました。
- auth.serviceのテストも併せて修正しました。
  - テストケースのIDトークンを環境変数の鍵で生成するように修正しました。

## レビューポイント
- DBのユーザを検証済みにする処理について、トランザクション内で取得と更新をしていますがトランザクションの使い方として問題ないでしょうか?
- 本APIで使用するカスタムエラーを`common/error/types`に暫定的においていますがどこに配置するのが適切でしょうか?
  - `common/error/types`に配置する、もしくは`common`配下にカスタムエラー用のフォルダを作成してその下に配置するのが良いかと考えています。
- テストのモックでエラーを発生させる際に、テストケース内でエラーを設定していますがモックファイル内でエラー用のモックを設定するべきでしょうか?

## UIの変更
- なし

## 動作確認状況
- ローカルで確認
  - テストが通ることを確認
2023-04-10 04:44:16 +00:00
makabe.t
0099614a5f Merged PR 58: API実装(アカウント登録/Azure AD B2C)
## 概要
[Task1550: API実装(アカウント登録/Azure AD B2C)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1550)

- アカウント登録APIでAzure ADB2Cにユーザを登録する処理を追加しました。
  - GraphAPIで登録処理をしています。

## レビューポイント
- ADB2Cへ登録する情報は認識通りか
- ADB2CへのGraphAPI接続のためにADB2Cテナントにアプリを追加しているが認証として問題ないか。
  - 環境変数にアプリの情報を設定しています
    - ADB2C_TENANT_ID=xxxxxxxx
    - ADB2C_CLIENT_ID=xxxxxxxx
    - ADB2C_CLIENT_SECRET=xxxxxxxx

## UIの変更
無し

## 動作確認状況
- ローカルで確認
  - ADB2C、DBに設定項目が追加されていることを確認
2023-04-05 09:22:50 +00:00
makabe.t
731c633189 Merged PR 57: ログインAPIを修正する
## 概要
[Task1504: ログインAPIを修正する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1504)

- ログイン時にIDトークンをもとにメールアドレスで認証済みのユーザかをDBから取得して判定する処理を追加しました

## レビューポイント
- IDトークンのSubをもとにUserテーブルの`external_id`でユーザを特定しているが利用法として適切か
- DBからのクエリに問題はないか
- ※アカウント登録の処理が含まれていますが、以下の変更についてご確認をお願いします。
  - feature/auth/*
  - repositories/users/*
  - common/error

## UIの変更
- なし

## 動作確認状況
- ローカルで確認
2023-03-31 07:46:56 +00:00
湯本 開
c1ed541d87 Merged PR 4: タスク 1385: API実装(認証/トークン発行)
## 概要
[Task 1385](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_workitems/edit/1385)
- IDトークンを受け取り、リフレッシュトークンとアクセストークンを発行するAPIを実装
- リフレッシュトークンを受け取り、アクセストークンを発行するAPIを実装
  - アクセストークン、リフレッシュトークンの中身は中身を使用するPBIが存在しないので仮のもの

## レビューポイント
- 本PBIで必要な範囲の機能を十分持っているか
- コードに不足部分、問題点などはなさそうか
- テスト項目は妥当か
- アクセストークン、リフレッシュトークンの中身はまだ仮で問題ないか

## 動作確認状況
- ローカルで動作確認
2023-03-07 23:35:53 +00:00
makabe.t
41f0213fe9 Merged PR 1: タスク 1359: API実装(認証/IDトークン検証)
## 概要
[タスク 1359: API実装(認証/IDトークン検証)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_workitems/edit/1359)

- IDトークンを受け取って内容を検証し、デコードしたペイロードを返すサービスを実装しました。

## レビューポイント
- サービスの処理の流れが認識とあっているか。
- ADB2CのAPI呼び出しを別サービスにしているが問題ないか
- 公開鍵の変換処理を別サービスに切り出しているが構成に問題はないか。
- トークンの検証をエラーごとに処理しているがエラー内容は認識通りか

## UIの変更
- なし

## 動作確認状況
- テストが通ることを確認

# 備考
- IDトークンを検証して中身を返すまでの実装です。
2023-03-07 01:30:13 +00:00
斎藤 快斗
c82d0363ac Merged PR 6: タスク 1362: API実装(I/F)
## 概要
[Task: 1362](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_sprints/taskboard/OMDSDictation%20%E3%83%81%E3%83%BC%E3%83%A0/OMDSDictation/%E3%82%B9%E3%83%97%E3%83%AA%E3%83%B3%E3%83%88%202_2?workitem=1362)

- 以下のIFを実装
  - AzureADのidトークンを受け取り、アクセストークン・リフレッシュトークンを返却するAPI
  - リフレッシュトークンを受け取り、アクセストークンを返却するAPI
- エラー時のレスポンスを作成

## レビューポイント
- 各APIのリクエスト・レスポンスの型

## UIの変更
- なし

## 動作確認状況
- SwaggerUIでAPIを確認

## 補足
2023-02-24 06:01:33 +00:00
拓海 真壁
e686db674f Merged PR 1: タスク 1176: 開発環境コンテナの構築(Client/Server)
[タスク 1176: 開発環境コンテナの構築(Client/Server)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_workitems/edit/1176)
開発用コンテナを構築しました。以下のコンテナを追加しています。
- ライセンス管理
  - server
  - client
- ディクテーション管理
  - server
  - client
- DB(MySQL)
- Cache(Redis)
2023-01-12 08:56:38 +00:00