## 概要 [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の内容を確認 ## 補足 - 相談、参考資料などがあれば
61 lines
962 B
TypeScript
61 lines
962 B
TypeScript
import { User } from '../../../repositories/users/entity/user.entity';
|
|
import {
|
|
Entity,
|
|
Column,
|
|
PrimaryGeneratedColumn,
|
|
CreateDateColumn,
|
|
UpdateDateColumn,
|
|
OneToMany,
|
|
} from 'typeorm';
|
|
|
|
@Entity({ name: 'accounts' })
|
|
export class Account {
|
|
@PrimaryGeneratedColumn()
|
|
id: number;
|
|
|
|
@Column({ nullable: true })
|
|
parent_account_id?: number;
|
|
|
|
@Column()
|
|
tier: number;
|
|
|
|
@Column()
|
|
country: string;
|
|
|
|
@Column()
|
|
delegation_permission: boolean;
|
|
|
|
@Column()
|
|
locked: boolean;
|
|
|
|
@Column()
|
|
company_name: string;
|
|
|
|
@Column()
|
|
verified: boolean;
|
|
|
|
@Column({ nullable: true })
|
|
primary_admin_user_id?: number;
|
|
|
|
@Column({ nullable: true })
|
|
secondary_admin_user_id?: number;
|
|
|
|
@Column('timestamp')
|
|
deleted_at?: Date;
|
|
|
|
@Column()
|
|
created_by: string;
|
|
|
|
@CreateDateColumn()
|
|
created_at: Date;
|
|
|
|
@Column()
|
|
updated_by: string;
|
|
|
|
@UpdateDateColumn()
|
|
updated_at: Date;
|
|
|
|
@OneToMany(() => User, (user) => user.id)
|
|
user?: User[];
|
|
}
|