Implement async db access in admin
This commit is contained in:
@ -2,6 +2,7 @@
|
||||
|
||||
from .authentication import (
|
||||
authenticate_user,
|
||||
authenticate_user_async,
|
||||
create_access_token,
|
||||
create_refresh_token,
|
||||
check_password,
|
||||
@ -16,6 +17,7 @@ __all__ = [
|
||||
"Token",
|
||||
"User",
|
||||
"authenticate_user",
|
||||
"authenticate_user_async",
|
||||
"check_password",
|
||||
"create_access_token",
|
||||
"create_refresh_token",
|
||||
|
||||
@ -8,6 +8,7 @@ import bcrypt
|
||||
import jwt
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.orm import Session
|
||||
from sshecret_admin.core.settings import AdminServerSettings
|
||||
|
||||
@ -72,6 +73,16 @@ def check_password(plain_password: str, hashed_password: str) -> None:
|
||||
raise AuthenticationFailedError()
|
||||
|
||||
|
||||
async def authenticate_user_async(session: AsyncSession, username: str, password: str) -> User | None:
|
||||
"""Authenticate user async."""
|
||||
user = (await session.scalars(select(User).where(User.username == username))).first()
|
||||
if not user:
|
||||
return None
|
||||
if not verify_password(password, user.hashed_password):
|
||||
return None
|
||||
return user
|
||||
|
||||
|
||||
def authenticate_user(session: Session, username: str, password: str) -> User | None:
|
||||
"""Authenticate user."""
|
||||
user = session.scalars(select(User).where(User.username == username)).first()
|
||||
|
||||
Reference in New Issue
Block a user