barbershop / core /seguridad.py
winderoman's picture
Add application file
35c6a2c
from passlib.context import CryptContext
from datetime import datetime,timedelta
from jose import JWTError,jwt
from core.config import settings
# Configurar hashing de contraselas
pwd_context = CryptContext(schemes=["bcrypt"],deprecated="auto")
# Funcion para generar un hash_passw
def get_hashed_password(password :str):
return pwd_context.hash(password)
# Funcion para verificar una contraseña hashada
def verify_password(plain_password:str,hashed_password:str):
return pwd_context.verify(plain_password,hashed_password)
# Crear un token JWT
def create_access_token(data:dict):
to_encode = data.copy()
expire = datetime.utcnow() + timedelta(minutes=settings.TOKEN_EXPIRE_MIN)
to_encode.update({"exp":expire})
encode_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
return encode_jwt
# Funcion para verificar si un token valido
async def verify_token(token:str):
try:
payload = jwt.decode(token,settings.SECRET_KEY,algorithms=[settings.ALGORITHM])
user:str = payload.get("sub") # obtener identificador de usuario
return user
except jwt.ExpiredSignatureError: # token expirado
return None
except JWTError:
return None