traefik-confman/api/schema/permissions.py
2022-05-29 00:31:32 +02:00

28 lines
703 B
Python

import typing
from fastapi import Request
from strawberry.permission import BasePermission
from api.token import decode_user_token
from api.token import token_from_headers
if typing.TYPE_CHECKING:
from strawberry.types import Info
class IsAuthenticated(BasePermission):
message = "User is not authenticated"
async def has_permission(self, source: typing.Any, info: "Info", **kwargs) -> bool:
req: Request = info.context["request"]
_, auth_token = token_from_headers(req.headers)
if len(auth_token) == 0:
return False
try:
decode_user_token(auth_token)
return True
except Exception:
return False