Merged PR 146: API IF実装(accounts/me復活)

## 概要
[Task1953: API IF実装(accounts/me復活)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1953)

- accounts/meのIFを追加しました
 ※別タスク「タスク 1837: API I/F実装」でレビューまでしてもらったものの、階層をアクセストークンに含める方針としたため削除としたものを復活させています。
- prettierがエラーを出力するようになっていたので、以下URLを参考にsettings.jsonを更新しています
https://qiita.com/TellMin/items/a634149730b777e2e6d0
- このPull Requestでの対象外
 ・openapi.jsonのL952とL2094については本PBI対象外になります

## レビューポイント
- 特にありません

## UIの変更
- 無し

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

## 補足
- 相談、参考資料などがあれば
This commit is contained in:
masaaki 2023-06-09 07:34:49 +00:00
parent 0907bd28af
commit f126b0976e
4 changed files with 128 additions and 4 deletions

View File

@ -17,5 +17,6 @@
"editor.formatOnType": true, "editor.formatOnType": true,
"editor.renderWhitespace": "all", "editor.renderWhitespace": "all",
"editor.insertSpaces": false, "editor.insertSpaces": false,
"editor.renderLineHighlight": "all" "editor.renderLineHighlight": "all",
"prettier.prettierPath": "./node_modules/prettier"
} }

View File

@ -216,6 +216,62 @@
] ]
} }
}, },
"/accounts/me": {
"get": {
"operationId": "getMyAccount",
"summary": "",
"description": "ログインしているユーザーのアカウント情報を取得します",
"parameters": [],
"responses": {
"200": {
"description": "成功時のレスポンス",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetMyAccountResponse"
}
}
}
},
"400": {
"description": "該当アカウントがDBに存在しない場合",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"401": {
"description": "認証エラー",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "想定外のサーバーエラー",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
},
"tags": ["accounts"],
"security": [
{
"bearer": []
}
]
}
},
"/users/confirm": { "/users/confirm": {
"post": { "post": {
"operationId": "confirmUser", "operationId": "confirmUser",
@ -893,7 +949,7 @@
"name": "paramName", "name": "paramName",
"required": false, "required": false,
"in": "query", "in": "query",
"description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE", "description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/WORK_TYPE/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE",
"schema": { "schema": {
"type": "string" "type": "string"
} }
@ -1783,6 +1839,24 @@
}, },
"required": ["licenseSummaryInfo"] "required": ["licenseSummaryInfo"]
}, },
"Account": {
"type": "object",
"properties": {
"accountId": {
"type": "number"
}
},
"required": ["accountId"]
},
"GetMyAccountResponse": {
"type": "object",
"properties": {
"account": {
"$ref": "#/components/schemas/Account"
}
},
"required": ["account"]
},
"ConfirmRequest": { "ConfirmRequest": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -1999,7 +2073,7 @@
}, },
"paramName": { "paramName": {
"type": "string", "type": "string",
"description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE" "description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/WORK_TYPE/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE"
} }
}, },
"required": ["direction", "paramName"] "required": ["direction", "paramName"]
@ -2017,7 +2091,7 @@
}, },
"paramName": { "paramName": {
"type": "string", "type": "string",
"description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE" "description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/WORK_TYPE/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE"
} }
}, },
"required": ["direction", "paramName"] "required": ["direction", "paramName"]

View File

@ -3,6 +3,7 @@ import {
Controller, Controller,
HttpStatus, HttpStatus,
Post, Post,
Get,
Req, Req,
UseGuards, UseGuards,
} from '@nestjs/common'; } from '@nestjs/common';
@ -20,6 +21,7 @@ import {
CreateAccountResponse, CreateAccountResponse,
GetLicenseSummaryRequest, GetLicenseSummaryRequest,
GetLicenseSummaryResponse, GetLicenseSummaryResponse,
GetMyAccountResponse,
} from './types/types'; } from './types/types';
import { USER_ROLES, ADMIN_ROLES } from '../../constants'; import { USER_ROLES, ADMIN_ROLES } from '../../constants';
import { AuthGuard } from '../../common/guards/auth/authguards'; import { AuthGuard } from '../../common/guards/auth/authguards';
@ -120,4 +122,41 @@ export class AccountsController {
}, },
}; };
} }
@ApiResponse({
status: HttpStatus.OK,
type: GetMyAccountResponse,
description: '成功時のレスポンス',
})
@ApiResponse({
status: HttpStatus.BAD_REQUEST,
description: '該当アカウントがDBに存在しない場合',
type: ErrorResponse,
})
@ApiResponse({
status: HttpStatus.UNAUTHORIZED,
description: '認証エラー',
type: ErrorResponse,
})
@ApiResponse({
status: HttpStatus.INTERNAL_SERVER_ERROR,
description: '想定外のサーバーエラー',
type: ErrorResponse,
})
@ApiOperation({
operationId: 'getMyAccount',
description: 'ログインしているユーザーのアカウント情報を取得します',
})
@ApiBearerAuth()
@UseGuards(AuthGuard)
@UseGuards(RoleGuard.requireds({ roles: [ADMIN_ROLES.ADMIN] }))
@Get('me')
async getMyAccount(@Req() req: Request): Promise<GetMyAccountResponse> {
console.log(req.header('Authorization'));
return {
account: {
accountId: 1,
},
};
}
} }

View File

@ -72,3 +72,13 @@ export class GetLicenseSummaryResponse {
@ApiProperty({ type: LicenseSummaryInfo }) @ApiProperty({ type: LicenseSummaryInfo })
licenseSummaryInfo: LicenseSummaryInfo; licenseSummaryInfo: LicenseSummaryInfo;
} }
export class Account {
@ApiProperty()
accountId: number;
}
export class GetMyAccountResponse {
@ApiProperty({ type: Account })
account: Account;
}