formha/forms_py/functions.py

97 lines
2.9 KiB
Python

from email.message import EmailMessage
import smtplib
import os
import json
import string
import secrets
from flask_bcrypt import Bcrypt
import shortuuid
bcrypt = Bcrypt()
v = {
'home': 'home/home.html',
'about-us': 'about-us/about-us.html',
'solutions': 'solutions/solutions.html',
'methodology': 'methodology/methodology.html',
'contact': 'contact/contact.html',
'login': 'login/login.html',
'usr_home': 'usr_home/usr_home.html',
'recover_pswd': 'login/recover_pswd.html'
}
def db_conf_obj(dbEnvVarName: str) -> object:
'''
dbEnvVarName = nombre de la variable de entorno
variable que contiene los datos de la base de datos
'''
db = os.getenv(dbEnvVarName)
db = json.loads(db)
return db
def generar_contrasena():
"""
Genera una contraseña aleatoria de 25 caracteres.
La contraseña se compone de una combinación de letras mayúsculas, letras minúsculas y dígitos. La función utiliza
el módulo `secrets` para asegurar que la generación de la contraseña sea adecuada para propósitos de seguridad.
Returns:
-------
str
Una cadena de caracteres aleatorios de 25 caracteres, formada por letras (mayúsculas y minúsculas) y dígitos.
Example:
--------
>>> generar_contrasena()
'A9gTz5bNp0Wk3L6Xq2vUv8YwRz1E'
"""
caracteres = string.ascii_letters + string.digits
contrasena = ''.join(secrets.choice(caracteres) for _ in range(25))
return contrasena
def hash_password(password):
"""
Genera un hash de la contraseña utilizando bcrypt.
Esta función toma una contraseña en texto plano y la convierte en un hash seguro utilizando el algoritmo bcrypt.
El hash generado es una cadena en formato UTF-8, adecuada para almacenamiento en bases de datos.
Parámetros:
----------
password : str
La contraseña en texto plano que se desea hashear.
Returns:
-------
str or None
El hash de la contraseña en formato UTF-8 si la operación es exitosa.
Devuelve `None` en caso de que ocurra una excepción durante el proceso de hashing.
Example:
--------
>>> hash_password('mi_contrasena_segura')
'$2b$12$D4yU/jEaK4xdgK0R2J6c6Odnk8p3k/RtG2ByjF26.4gnBR4tdA/2i'
"""
try:
hashed_password = bcrypt.generate_password_hash(password).decode('utf-8')
return hashed_password
except Exception as e:
return None
def getRandomId():
# POR DEFAULT SHORUUID SACA 22 CARACTERES
# LOS PODEMOS ACORTAR DE LA SIGUIENTE MANERA: short_id_custom = shortuuid.uuid()[:10]
# Configurar el generador con una semilla específica (opcional)
# shortuuid.set_alphabet("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-!#$!%&/()=?¡¿")
shortuuid.set_alphabet("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
# Generar un UUID corto con la semilla personalizada
short_id_custom = shortuuid.uuid()
return short_id_custom