Created
February 7, 2022 13:37
-
-
Save alimuradov/85aa75fdd5d8765b7cc7977c1bc5f235 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from datetime import datetime, timedelta | |
from typing import Any, Union | |
from jose import jwt | |
from passlib.context import CryptContext | |
from sqlalchemy.orm import Session | |
from app.core.config import settings | |
from app.models.user import User as UserModel | |
from app.database.session import engine | |
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") | |
session = Session(engine, future=True) | |
ALGORITHM = "HS256" | |
def create_access_token( | |
subject: Union[str, Any], expires_delta: timedelta = None | |
) -> str: | |
if expires_delta: | |
expire = datetime.utcnow() + expires_delta | |
else: | |
expire = datetime.utcnow() + timedelta( | |
minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES | |
) | |
to_encode = {"exp": expire, "sub": str(subject)} | |
encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=ALGORITHM) | |
return encoded_jwt | |
def verify_password(plain_password: str, hashed_password: str) -> bool: | |
return pwd_context.verify(plain_password, hashed_password) | |
def get_password_hash(password: str) -> str: | |
return pwd_context.hash(password) | |
def authenticate_user(client_id: str, client_secret: str): | |
user = session.query(UserModel).filter_by(client_id=client_id).first() | |
if not user: | |
return False | |
if not client_secret == user.client_secret: | |
return False | |
return user |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment