JWT, hashing y utilidades para APIs Flask
Project description
🛠️ tkla_utils_flask_api
tkla_utils_flask_api es una librería modular que provee utilidades esenciales para el desarrollo de APIs Flask. Incluye herramientas para autenticación con JWT, hashing seguro de contraseñas, generación de tokens, decoradores de seguridad, manejo de fechas y respuestas JSON uniformes.
🚀 Características principales
- 🔐 Generación y verificación de JWT.
- 🔑 Hashing seguro de contraseñas con bcrypt.
- 🧬 Generación de tokens aleatorios y UUIDs.
- 🕒 Manejo de fechas UTC y formato ISO 8601.
- 📦 Decoradores para proteger rutas con roles.
- 📡 Respuestas JSON uniformes y coherentes.
📦 Instalación
pip install tkla_utils_flask_api
⚠️ Asegúrate de tener
pipactualizado y Python ≥ 3.7
🧪 Ejemplo de uso con Flask
from flask import Flask, request
from tkla_utils_flask_api.jwt_utils import generate_jwt
from tkla_utils_flask_api.hashing import hash_password, verify_password
from tkla_utils_flask_api.responses import success_response, error_response
from tkla_utils_flask_api.decorators import require_jwt
app = Flask(__name__)
SECRET_KEY = "mi_clave_secreta"
usuarios = {
"admin": hash_password("1234")
}
@app.route("/login", methods=["POST"])
def login():
data = request.json
username = data.get("username")
password = data.get("password")
if username not in usuarios or not verify_password(password, usuarios[username]):
return error_response("Credenciales inválidas", 401)
token = generate_jwt({"user": username, "role": "admin"}, SECRET_KEY)
return success_response({"token": token}, "Inicio de sesión exitoso")
@app.route("/perfil", methods=["GET"])
@require_jwt(SECRET_KEY, roles=["admin"])
def perfil(user):
return success_response({"usuario": user}, "Perfil accedido correctamente")
if __name__ == "__main__":
app.run(debug=True)
📚 Documentación por módulo
🔐 jwt_utils.py
generate_jwt(payload, secret, exp_minutes)decode_jwt(token, secret)
🔑 hashing.py
hash_password(password)verify_password(password, hashed)
🧬 tokens.py
generate_random_token(length=32)generate_uuid_token()
🕒 time_utils.py
get_current_utc_timestamp()format_datetime_iso(datetime_obj)
🛡️ decorators.py
@require_jwt(secret, roles=['admin'])
📡 responses.py
success_response(data, message, status_code)error_response(message, status_code)
📁 Estructura del proyecto
tkla_utils_flask_api/
│
├── jwt_utils.py
├── hashing.py
├── tokens.py
├── time_utils.py
├── decorators.py
├── responses.py
├── version.py
├── __init__.py
🧪 Requisitos
- Python ≥ 3.7
- Flask
- PyJWT
- bcrypt
Instalación automática desde setup.py:
install_requires=[
'Flask',
'PyJWT',
'bcrypt'
]
🛠️ Desarrollo y pruebas
Puedes probar el ejemplo completo en ejemplo_app/app.py. Ejecuta:
python ejemplo_app/app.py
📝 Licencia
MIT License © 2025 Lovenson Pierre
🌐 Publicación en PyPI
Para publicar:
python setup.py sdist bdist_wheel
twine upload dist/*
📬 Contacto
Creado y mantenido por Lovenson Pierre — lovesonpierre25@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tkla_utils_flask_api-0.1.0.tar.gz.
File metadata
- Download URL: tkla_utils_flask_api-0.1.0.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6807ebbc1f16519726832aa6d32d1c5656cee052588587bc4e12b59d922c8fa
|
|
| MD5 |
d3bb9a5bb338ad27e2a93708895a66c7
|
|
| BLAKE2b-256 |
8c03348790957ca9d4072209fe19884c10302437a3879b001c2d975034e75599
|
File details
Details for the file tkla_utils_flask_api-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tkla_utils_flask_api-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
882540e3726680828d8f85c52368a42f74ad67df2048131ddad2aab6c0a5a9b1
|
|
| MD5 |
b79b2fb459d7d87d983b8b6ba8d777aa
|
|
| BLAKE2b-256 |
ef2df4a25c64c304b503ad82b208f58e0c6034c38f12da14155bee85ee699531
|