Skip to main content

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 pip actualizado 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 Pierrelovesonpierre25@gmail.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tkla_utils_flask_api-0.1.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tkla_utils_flask_api-0.1.0-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

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

Hashes for tkla_utils_flask_api-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e6807ebbc1f16519726832aa6d32d1c5656cee052588587bc4e12b59d922c8fa
MD5 d3bb9a5bb338ad27e2a93708895a66c7
BLAKE2b-256 8c03348790957ca9d4072209fe19884c10302437a3879b001c2d975034e75599

See more details on using hashes here.

File details

Details for the file tkla_utils_flask_api-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tkla_utils_flask_api-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 882540e3726680828d8f85c52368a42f74ad67df2048131ddad2aab6c0a5a9b1
MD5 b79b2fb459d7d87d983b8b6ba8d777aa
BLAKE2b-256 ef2df4a25c64c304b503ad82b208f58e0c6034c38f12da14155bee85ee699531

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page