Skip to content

Commit edf43d4

Browse files
committed
add backend auth and schemas
1 parent 1cdb7c9 commit edf43d4

4 files changed

Lines changed: 47 additions & 5 deletions

File tree

api_v1/auth/backends.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,13 @@
1111

1212

1313
def get_jwt_strategy() -> JWTStrategy:
14-
return JWTStrategy(secret=settings.SECRET)
14+
return JWTStrategy(secret=settings.JWT.SECRET,
15+
lifetime_seconds=settings.JWT.RESET_LIFESPAN_TOKEN_SECONDS,
16+
)
17+
18+
19+
auth_backend = AuthenticationBackend(
20+
name=settings.JWT.NAME,
21+
transport=bearer_transport,
22+
get_strategy=get_jwt_strategy,
23+
)

api_v1/auth/schemas.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from fastapi_users import schemas
2+
3+
4+
class UserRead(schemas.BaseUser[int]):
5+
"""
6+
Схема пользователя
7+
"""
8+
9+
pass
10+
11+
12+
class UserCreate(schemas.BaseUserCreate):
13+
"""
14+
Схема создания пользователя
15+
"""
16+
17+
pass
18+
19+
20+
class UserUpdate(schemas.BaseUserUpdate):
21+
"""
22+
Схема обновления пользователя
23+
"""
24+
25+
pass

api_v1/users/user_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ class UserManager(AuthenticationUserManagerMixin,
1313
UserManager для работы с пользователем
1414
"""
1515

16-
verification_token_secret = settings.SECRET
17-
reset_password_token_lifetime_seconds = settings.RESET_LIFESPAN_TOKEN_SECONDS
16+
verification_token_secret = settings.JWT.SECRET
17+
reset_password_token_lifetime_seconds = settings.JWT.RESET_LIFESPAN_TOKEN_SECONDS

config/config.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@
1212
config = Config('.env')
1313

1414

15+
class JWTSettings(BaseModel):
16+
"""
17+
Настройки JWT токена
18+
"""
19+
NAME: str = 'jwt'
20+
SECRET: str = config('SECRET')
21+
RESET_LIFESPAN_TOKEN_SECONDS: int = 3600
22+
23+
1524
class AlembicSettings(BaseModel):
1625
"""
1726
Настройки Alembic
@@ -91,13 +100,12 @@ class Settings(BaseSettings):
91100
celery: CelerySettings = CelerySettings()
92101
rabbit: RabbitSettings = RabbitSettings()
93102
alembic: AlembicSettings = AlembicSettings()
103+
JWT: JWTSettings = JWTSettings()
94104
debug: bool = bool(int(config('DEBUG')))
95105
API_PREFIX: str = '/api/v1'
96106
BASE_DIR: Path = base_dir
97107
LOG_DIR: Path = log_dir
98108
CURRENT_ORIGIN: str = config('CURRENT_ORIGIN')
99-
SECRET: str = config('SECRET')
100-
RESET_LIFESPAN_TOKEN_SECONDS: int = 3600
101109

102110

103111
settings = Settings()

0 commit comments

Comments
 (0)