Servidor backend para gestion de usaurios con prisma y Express
MIT License
Este proyecto es un servidor backend diseñado para gestionar los usuarios de una aplicación web. El servidor ofrece funcionalidades CRUD (Crear, Leer, Actualizar, Eliminar) y maneja dos tipos de usuarios: user
y admin
. Además, cuenta con un sistema de autenticación y autorización que utiliza jsonwebtoken
para validar las sesiones de los usuarios y restringir las acciones disponibles según el rol asignado.
El servidor está construido utilizando la Clean Architecture, lo que facilita la integración y acoplamiento con otros módulos o servicios en aplicaciones web más amplias.
user
y admin
con diferentes permisos.jsonwebtoken
para la validación segura de usuarios.16
o superiorAquí tienes el contenido en formato Markdown:
### Requisitos Previos
- **Node.js**: Se requiere tener Node.js instalado, preferiblemente versión `14.x` o superior.
- **npm** o **yarn**: Gestor de paquetes para instalar las dependencias del proyecto.
- **Prisma CLI**: Para gestionar las migraciones y el esquema de la base de datos.
- **SQLite**: La base de datos por defecto es SQLite, no se requiere configuración adicional para la instalación, pero si decides usar otra base de datos, deberás configurarla adecuadamente.
### Configuración del Entorno de Desarrollo
1. **Clona el repositorio:**
```bash
git clone https://github.com/Aborja-dev/userCRUD.git
cd userCRUD
Instala las dependencias:
npm install
# o
yarn install
Configura el archivo .env
:
.env.example
a .env
:
cp .env.example .env
.env
para personalizarlo con tus propias variables de entorno. Ejemplo:
DATABASE_URL="file:./dev.db"
JWT_SECRET="tu_secreto_jwt"
PORT=3000
Realiza las migraciones de la base de datos:
npx prisma migrate dev --name init
Esto configurará la base de datos con las tablas necesarias.
Inicia el servidor en modo desarrollo:
npm run dev
# o
yarn dev
Accede al servidor:
http://localhost:3000
(o en el puerto que hayas configurado en el archivo .env
)..env: Este archivo contiene las configuraciones sensibles como el secreto JWT, la URL de la base de datos, y otros parámetros de configuración. Debe ser personalizado con tus propios valores antes de ejecutar el proyecto.
config.json: (si aplica) Si utilizas un archivo config.json
, también deberás asegurarte de que contiene las configuraciones correctas para tu entorno (desarrollo, producción, etc.).
Este formato está listo para ser incluido en tu README y proporciona instrucciones claras sobre cómo configurar el entorno de desarrollo y ejecutar el servidor localmente. Si tienes más ajustes que hacer, estaré encantado de ayudarte.
Este proyecto está desarrollado en TypeScript y utiliza Express como framework para manejar las solicitudes HTTP. Para la gestión de la base de datos, emplea Prisma ORM con una base de datos SQLite.
common
que gestiona la autenticación. Contiene el archivo stub.ts
, un archivo de ejemplo con funciones que imitan el comportamientostub.ts
que imita el comportamiento.El proyecto utiliza varias dependencias externas clave:
Aquí tienes un ejemplo de cómo podrías estructurar la sección de "Uso" en el README en formato Markdown, basándote en el router y los tipos proporcionados:
## Uso
### Endpoints Disponibles
Aquí se detallan los endpoints disponibles para interactuar con el servidor y su respectiva funcionalidad:
- **POST `/register`**: Registra un nuevo usuario.
- **POST `/login`**: Inicia sesión con un usuario registrado.
- **POST `/recover`**: Recupera la cuenta de un usuario mediante un proceso de recuperación.
- **GET `/search`**: Busca usuarios según ciertos criterios.
- **GET `/detail/:id`**: Obtiene los detalles de un usuario específico por su ID.
- **PATCH `/edit`**: Edita la información de un usuario.
- **DELETE `/:id`**: Elimina un usuario específico por su ID.
- **GET `/`**: Obtiene todos los usuarios registrados. *Requiere autenticación y permisos de administrador.*
### Gestión de Rutas de Autenticación y Autorización
- **Autenticación**: Se utiliza un middleware de autenticación (`authMiddleware`) que verifica la validez del token JWT antes de permitir el acceso a rutas protegidas.
- **Autorización**: Algunas rutas, como `GET /`, también están protegidas por un middleware de autorización (`AdminMiddleware`) que verifica si el usuario tiene permisos de administrador antes de permitir el acceso.
### Ejemplo de Petición a los Endpoints
Aquí tienes algunos ejemplos de cómo interactuar con los endpoints mediante `curl`:
- **Registrar un nuevo usuario:**
```bash
curl -X POST https://tu-dominio.com/register -d '{
"email": "[email protected]",
"name": "Nombre de Usuario",
"password": "password123",
"phone": "123456789",
"avatarURL": "https://example.com/avatar.jpg"
}'
Iniciar sesión:
curl -X POST https://tu-dominio.com/login -d '{
"email": "[email protected]",
"password": "password123"
}'
Buscar usuarios:
curl -X GET https://tu-dominio.com/search?search=Nombre
Editar un usuario:
curl -X PATCH https://tu-dominio.com/edit -H "Authorization: Bearer <token>" -d '{
"id": 1,
"role": "SELLER",
"active": "ACTIVE"
}'
Eliminar un usuario:
curl -X DELETE https://tu-dominio.com/1 -H "Authorization: Bearer <token>"
INACTIVE
, ACTIVE
, SUSPENDED
), los cuales afectan su capacidad para interactuar con el sistema.Aquí te proporciono cómo podrías integrar las secciones de "Contribución" y "Licencia y Créditos" en tu README en formato Markdown:
¡Gracias por considerar contribuir a este proyecto! A continuación, se describen los pasos para colaborar:
git checkout -b nombre-de-la-rama
git commit -m "Descripción de los cambios"
git push origin nombre-de-la-rama
Este proyecto está licenciado bajo la MIT License. Puedes consultar el archivo LICENSE para más detalles.
Este proyecto fue desarrollado como parte de un esfuerzo para proporcionar una solución modular y escalable para la gestión de usuarios en aplicaciones web. Siéntete libre de usar, modificar y mejorar este código, pero por favor da el debido crédito a los autores originales.
¡Gracias por tu interés en este proyecto! Cualquier contribución es bienvenida y muy apreciada.