Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Back_muebles API

Backend con Express + MongoDB para autenticacion, usuarios y productos.

1) Requisitos

  • Node.js 18+
  • npm
  • MongoDB local o remoto

2) Instalacion

Desde la carpeta Back_muebles:

npm install

3) Variables de entorno

Ejemplo de .env:

PORT=3000
URL_MONGO=mongodb://localhost:27017/MUEBLES
SECRET_TOKEN=tu_secret_access_token
SECRET_REFRESH_TOKEN=tu_secret_refresh_token
BCRYPT_ROUNDS=10
BCRYPT_ROUND=10

Notas:

  • Los controladores de auth/user leen BCRYPT_ROUNDS.
  • El seed actual usa BCRYPT_ROUND.
  • Puedes dejar ambos en 10 para evitar inconsistencias.

4) Arranque del servidor

Desarrollo:

npm run dev

Produccion/local:

npm start

Base URL:

http://localhost:3000

5) Endpoints

Auth (/auth)

  • POST /auth/signup
  • POST /auth/login
  • GET /auth/refresh_token

Users (/user)

  • GET /user/search/:name (token)
  • GET /user/:idUser (token)
  • GET /user/ (token + admin)
  • PATCH /user/edit/:idUser (token + owner/admin)
  • DELETE /user/delete/:idUser (token + owner/admin)
  • PATCH /user/:idUser/favorites/add/:idProduct (token + owner/admin)
  • PATCH /user/:idUser/favorites/remove/:idProduct (token + owner/admin)

Products (/product)

  • GET /product/search/:name
  • GET /product/:idProduct
  • GET /product/
  • POST /product/ (token + admin)
  • PATCH /product/:idProduct (token + admin)
  • DELETE /product/:idProduct (token + admin)
  • POST /product/comments/:idProduct (token)
  • DELETE /product/comments/:idProduct/:idComment (token)

6) Autorizacion

Header esperado en rutas protegidas:

auth-token: <token>

Flujo:

  1. Haz login en POST /auth/login.
  2. Usa token para rutas protegidas.
  3. Si expira, llama GET /auth/refresh_token con auth-token: <refresh_token>.

Importante:

  • El middleware actual intenta validar primero con SECRET_TOKEN y luego con SECRET_REFRESH_TOKEN.
  • Eso significa que, en el estado actual del codigo, puede aceptar ambos tipos de token.

7) Seed de base de datos

El seed esta en:

src/utils/insertManyDB.js

Ejecutar:

node src/utils/insertManyDB.js

Que hace:

  • Conecta a MongoDB usando URL_MONGO.
  • Borra por email/nombre los registros del seed para evitar duplicados.
  • Inserta 2 usuarios (Ana Ortega user, Isaac Sierra admin) con password encriptada.
  • Inserta 4 productos (Silla, Mesa, Sofa, Lampara).

8) Tests

Actualmente no hay tests automatizados implementados. El script npm test devuelve el placeholder por defecto.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages