8 Commits

Author SHA1 Message Date
maruyama.t
c4aaee07b1 Merged PR 137: アクセストークン内に階層情報を含める
## 概要
[Task1925: アクセストークン内に階層情報を含める](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1925)

- アクセストークンとリフレッシュトークンにtierを追加

## レビューポイント
- tierのチェックは必要か
- DBの値をそのまま入れているが問題ないか

**以下は別タスクとして切り出す**
- RoleGuardsを拡張してtierもチェックできるようにする処理を追加し、階層ごとに許可される操作をI/Fの属性として宣言的にチェックできるように修正した箇所について、使いやすそうか。
例)
@UseGuards(RoleGuard.requireds({ roles: ['admin', 'author'] }))
の場合(階層の宣言はしていない場合)許可@UseGuards(RoleGuard.requireds({ roles: ['admin', 'author'], tier [2] }))の場合(階層の宣言をしている場合)ユーザのアカウントの階層を見て、2以上なら許可、2未満なら拒否
 

## UIの変更
- なし

## 動作確認状況
- ローカルで確認

## 補足
- https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_wiki/wikis/OMDSDictation_wiki/202/%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3
wikiにアクセストークンとリフレッシュトークンについてのページを記載しました。
2023-06-08 08:28:10 +00:00
makabe.t
e4f84f78ba Merged PR 121: リフレッシュトークンの発行方法・発行内容が不適切な問題の修正
## 概要
[Task1904: リフレッシュトークンの発行方法・発行内容が不適切な問題の修正](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1904)

セキュリティ・権限管理の要であるリフレッシュトークンのロール設定に関する修正ですので、開発メンバー全員にご確認いただき、変更内容について認識を合わせていただきたいです。
- リフレッシュトークンの発行で使用するロールがクライアントから送られた値をそのまま利用する実装になっていましたので、APIのロールの取り扱いを修正しました
  - ユーザー追加APIで想定している(author/typist/none)のみを受け付けるようにする
    - 想定外のロールの場合は400エラー
    - クライアントからも想定通りのロールを送信するようロールの定数値を修正
  - リフレッシュトークンを発行する際にDBの値をそのまま使わず、想定値のどれかを判断して定数を設定する
    - DBに登録されているロールが想定外の文字列の場合は500エラーとなる

## レビューポイント
- トークンのロール設定が安全にできるようになっていることをメンバー全員で合意
- APIのパラメータを受け付ける際にIsInで想定ロール文字列のみを受け付けるようにしているが問題はないか
- リフレッシュトークンの生成時に直接DBのロールを設定しないようにしたが、トークンのロール設定として問題はないか
  - 意図しないトークンへの権限の付与などは起こりえないか。
    - クライアントからadminなどのユーザー追加時に想定していない権限を付与しようとしてもAPIではじかれるか

## UIの変更
- なし

## 動作確認状況
- ローカルで確認

## 補足
- ユーザー追加時に登録されるロールが変更となったのでマージ後に利用する場合は再度の登録をお願いします。
2023-06-02 04:55:28 +00:00
saito.k
4cf444ab42 Merged PR 98: API実装(SASトークン発行)
## 概要
[Task1737: API実装(SASトークン発行)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1737)

- SASトークンを発行する処理を実装
- コンテナ作成処理を実装
  - 本来はアカウント登録時に作成されるが、動作検証のためSAS発行時に作成するように実装している
- コンテナ存在確認の処理を実装

## レビューポイント
- 実装した処理に漏れはないか
- エラーの処理に考慮漏れはないか
- テストケースは十分か

## 動作確認状況
- ローカルでコンテナ作成とURL発行を確認

## 補足
- 相談、参考資料などがあれば
2023-05-17 00:38:39 +00:00
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
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
斎藤 快斗
3b4b3c59e7 Merged PR 4: API実装のためのディレクトリを構成
## 概要
[Task: 1358](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=1358)

- API実装を行うためのベースとなる実装を行いました。
  - ディレクトリ構成
  - ビルドの設定
  - openapi.jsonの配置場所
  - openapi.jsonの生成コマンド作成

## レビューポイント
- ベース実装として足りているか
- openapi.jsonを生成するコードの配置場所は`src/api/generate.ts`で良いか

## UIの変更
- なし

## 動作確認状況
- ローカルで`/health`が200 OKを返却することを確認

## 補足
2023-02-20 08:12:36 +00:00