保護者かの判定ロジックを週背い

This commit is contained in:
rca 2024-06-18 01:54:06 +09:00
parent 20ca116e0a
commit 83da03384c

View File

@ -3,25 +3,17 @@ import { Request, Response, NextFunction } from "express";
import { Role } from "@src/enums"; import { Role } from "@src/enums";
export default function verifyParent(req: Request, res: Response, next: NextFunction) { export default function verifyParent(req: Request, res: Response, next: NextFunction) {
const authorizationHeader = req.headers["authorization"]; if (req.user) {
let token; if (req.user.claims.role === Role.PARENT) {
if (authorizationHeader) { next();
const token_ = authorizationHeader.split(" ")[1];
if (token_) {
token = token_;
} else { } else {
return res.status(401).send("アクセス拒否: アクセストークンが必要なエンドポイントです"); res.status(401).json({
message: '権限がありません(保護者のみ利用可能なAPIです)'
});
} }
} else return; } else {
try { res.status(500).json({
// クレームに含まれるroleがPARENTであることを確認する message: 'エラーが発生しました(JWT解析結果が不正/未設定です)'
const decoded = jsonwebtoken.verify(token, "secret") as { role: string }; });
if (decoded.role !== Role.PARENT) {
return res.status(401).send("アクセス拒否: 親ユーザーのみアクセス可能なエンドポイントです");
}
next();
} catch (error) {
// トークンの検証に失敗した場合(この前にトークン検証が実行されているので流れることはないはず)
// TODO: 複数回解析する必要はなさそう
} }
} }