mirror of
https://github.com/r-ca/kidshift-be.git
synced 2024-10-26 00:24:02 +00:00
保護者かの判定ロジックを週背い
This commit is contained in:
parent
20ca116e0a
commit
83da03384c
|
@ -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: 複数回解析する必要はなさそう
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user