lavkach3

Форк
0
/
token_helper.py 
45 строк · 1.3 Кб
1
from datetime import datetime, timedelta, UTC
2

3
import jwt
4

5
from core.db_config import config
6
from core.exceptions import DecodeTokenException, ExpiredTokenException
7

8

9
class TokenHelper:
10
    @staticmethod
11
    def encode(payload: dict, expire_period: int = 36000) -> str:
12
        token = jwt.encode(
13
            payload={
14
                **payload,
15
                "exp": datetime.now(UTC) + timedelta(seconds=expire_period),
16
            },
17
            key=config.JWT_SECRET_KEY,
18
            algorithm=config.JWT_ALGORITHM,
19
        )#.decode("utf8")
20
        return token
21

22
    @staticmethod
23
    def decode(token: str) -> dict:
24
        try:
25
            return jwt.decode(
26
                token,
27
                config.JWT_SECRET_KEY,
28
                config.JWT_ALGORITHM,
29
            )
30
        except jwt.exceptions.DecodeError:
31
            raise DecodeTokenException
32
        except jwt.exceptions.ExpiredSignatureError:
33
            raise ExpiredTokenException
34

35
    @staticmethod
36
    def decode_expired_token(token: str) -> dict:
37
        try:
38
            return jwt.decode(
39
                token,
40
                config.JWT_SECRET_KEY,
41
                config.JWT_ALGORITHM,
42
                options={"verify_exp": False},
43
            )
44
        except jwt.exceptions.DecodeError:
45
            raise DecodeTokenException
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.