add login endpoint
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import os
|
||||
import secrets
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
import bcrypt
|
||||
import jwt
|
||||
from passlib.context import CryptContext
|
||||
|
||||
@@ -38,9 +37,10 @@ class AuthManager:
|
||||
|
||||
@classmethod
|
||||
def create_refresh_token(cls) -> str:
|
||||
random_bytes = os.urandom(32)
|
||||
data = b'settings.refresh_token.secret_key' + random_bytes
|
||||
token_hash = bcrypt.hashpw(data, bcrypt.gensalt(rounds=12)).decode()
|
||||
# random_bytes = os.urandom(32)
|
||||
# data = settings.refresh_token.secret_key.encode() + random_bytes
|
||||
# token_hash = bcrypt.hashpw(data, bcrypt.gensalt(rounds=12)).decode()
|
||||
token_hash = secrets.token_urlsafe(32)
|
||||
return token_hash
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -2,6 +2,7 @@ from typing import Any
|
||||
|
||||
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker
|
||||
|
||||
from src.repository.auth import AuthRepo
|
||||
from src.repository.tasks import TasksRepo
|
||||
from src.repository.users import UsersRepo
|
||||
|
||||
@@ -14,6 +15,7 @@ class DBManager:
|
||||
self.session: AsyncSession = self.session_factory()
|
||||
self.user = UsersRepo(self.session)
|
||||
self.task = TasksRepo(self.session)
|
||||
self.auth = AuthRepo(self.session)
|
||||
return self
|
||||
|
||||
async def __aexit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
|
||||
|
||||
@@ -3,6 +3,7 @@ from typing import TYPE_CHECKING, Any, Protocol
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from src.repository.auth import AuthRepo
|
||||
from src.repository.tasks import TasksRepo
|
||||
from src.repository.users import UsersRepo
|
||||
|
||||
@@ -15,6 +16,7 @@ class IUOWDB(Protocol):
|
||||
session: AsyncSession
|
||||
user: 'UsersRepo'
|
||||
task: 'TasksRepo'
|
||||
auth: 'AuthRepo'
|
||||
|
||||
async def __aenter__(self) -> "IUOWDB": ...
|
||||
|
||||
|
||||
@@ -40,18 +40,10 @@ class AccessToken(BaseSettings):
|
||||
token_type: str = "bearer" # noqa: S105
|
||||
|
||||
|
||||
class RefreshToken(BaseSettings):
|
||||
model_config = SettingsConfigDict(
|
||||
env_file=".env", env_file_encoding="utf-8", env_prefix="REFRESH_TOKEN_"
|
||||
)
|
||||
secret_key: str
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
api: ApiPrefix = ApiPrefix()
|
||||
db: DbSettings = DbSettings()
|
||||
access_token: AccessToken = AccessToken() # type: ignore
|
||||
refresh_token: RefreshToken = RefreshToken() # type: ignore
|
||||
|
||||
|
||||
settings = Settings()
|
||||
|
||||
Reference in New Issue
Block a user