/ gellary / backend / auth / dependency.py
swadhinbiswas bugfix · 3/11/2024
ae81d56
22 lines · 683 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from typing import List
from auth.auth_hader import get_bearer_token
from auth.json_web_token import JsontoWebToken
from auth.expreance import PermissionDeniedException
from fastapi import Depends

def valid_token(token: str = Depends(get_bearer_token)):
  return JsontoWebToken(token).validate()

class PermissionValidation:
  def __init__(self,permission:List[str]):
    self.permission = permission 
  
  def __call__(self,token: str = Depends(valid_token)):
    token_permission = token.get("permissions")
    token_permission = set(token_permission)
    permission = set(self.permission)
    if not permission.issubset(token_permission):
      raise PermissionDeniedException