Este proyecto es una API RESTful para gestionar usuarios, construida utilizando Node.js, Express y TypeScript. Permite crear, leer, actualizar y eliminar usuarios con un enfoque en autenticación JWT, roles de usuario, y manejo de contraseñas mediante bcryptjs.
- Autenticación JWT: Utiliza
JSON Web Tokens (JWT)para la autenticación de usuarios. - Roles de usuario: Soporta roles de usuario, permitiendo la gestión de accesos con permisos específicos.
- Soft delete: Implementa un sistema de eliminación lógica (soft delete) para los usuarios.
- Restauración de usuarios: Permite restaurar usuarios eliminados lógicamente.
- Manejo de contraseñas: Las contraseñas se cifran con
bcryptjspara asegurar la seguridad de los datos. - Swagger UI: Documentación de la API accesible a través de
Swagger.
- Node.js: Entorno de ejecución de JavaScript.
- Express: Framework para aplicaciones web.
- TypeScript: Superset de JavaScript que agrega tipado estático.
- Prisma: ORM para interactuar con la base de datos (opcional).
- JWT (JSON Web Token): Autenticación basada en tokens.
- bcryptjs: Cifrado y comparación de contraseñas.
- Swagger UI: Documentación interactiva de la API.
- Node.js (v16 o superior)
- npm (o yarn como alternativa)
- MySQL (para la base de datos)
-
Clona este repositorio:
git clone https://github.com/(usuario)/CRUD-Users-Nodejs-Express-Prisma-TS.git
-
Accede al directorio del proyecto:
cd CRUD-Users-Nodejs-Express-Prisma-TS -
Instala las dependencias:
npm install
-
Crea el archivo
.envcon las siguientes variables de entorno (puedes usar el.env.examplecomo guia):# Puerto del servidor PORT=3000 # Configuración de la base de datos MySQL DATABASE_URL="mysql://user:password@host:port/database" # Configuración de JWT JWT_SECRET=yoursecretkey # Configuracion de Swagger Server BASE_PATH=api VERSIONS_API=v1 BASE_URL=http://localhost
-
Si es necesario, ejecuta las migraciones de la base de datos (si usas Prisma):
npx prisma migrate devEjecuta el siguiente comando para compilar el código TypeScript a JavaScript en la carpeta dist (según la configuración en tsconfig.json):
npm run buildPara iniciar el servidor, ejecuta el siguiente comando:
npm run startAccede a la documentación interactiva de Swagger UI después de iniciar el servidor:
✅ La base de datos está online.
==================================================
🚀 Servidor corriendo en: http://localhost:3000
📃 Swagger Docs: http://localhost:3000/api-docs
==================================================| Método | Endpoint | Descripción |
|---|---|---|
| POST | /auth/register |
Registrar un nuevo usuario |
| POST | /auth/login |
Iniciar sesión |
| POST | /auth/logout |
Cerrar sesión |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /admin/allusers |
Obtener todos los usuarios |
| GET | /admin/users/{id} |
Obtener usuario por ID |
| GET | /admin/search |
Buscar usuarios con filtros |
| PUT | /admin/users/update/{id} |
Actualizar usuario |
| DELETE | /admin/users/delete/{id} |
Eliminar usuario (borrado lógico) |
| PUT | /admin/users/restore/{id} |
Restaurar usuario (borrado lógico) |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /users |
Obtener datos del usuario |
| PUT | /users/update |
Actualizar usuario |
| DELETE | /users/delete |
Eliminar usuario (borrado lógico) |
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /auth/refresh-token |
Generar nuevo token de acceso |
| POST | /auth/change-password |
Cambiar contraseña autenticado |
| POST | /auth/reset-password |
Solicitar recuperación de contraseña |
| POST | /auth/verify-email |
Verificar email del usuario |
| Método | Endpoint | Descripción |
|---|---|---|
| PATCH | /users/update-role/{id} |
Cambiar rol de usuario (admin) |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /health |
Verificar estado de la API |
Este proyecto está bajo la licencia MIT.
¡Las contribuciones son bienvenidas! Si tienes sugerencias o encuentras errores, no dudes en crear un issue o enviar un pull request.