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