https://github.com/acsbitmen/login-backend
Este proyecto es un backend para un sistema de autenticación y gestión de usuarios (CRUD) desarrollado con Node.js, Express, y PostgreSQL. Proporciona una API segura que permite a los usuarios iniciar sesión, y ofrece funcionalidades de administración de usuarios para aquellos con el rol de administrador.
https://github.com/acsbitmen/login-backend
body-parser cors dotenv express-js express-rate-limit javascript jsonwebtoken nodejs pg sql
Last synced: 4 months ago
JSON representation
Este proyecto es un backend para un sistema de autenticación y gestión de usuarios (CRUD) desarrollado con Node.js, Express, y PostgreSQL. Proporciona una API segura que permite a los usuarios iniciar sesión, y ofrece funcionalidades de administración de usuarios para aquellos con el rol de administrador.
- Host: GitHub
- URL: https://github.com/acsbitmen/login-backend
- Owner: ACSBITMEN
- Created: 2024-09-14T18:04:33.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-14T20:35:46.000Z (almost 2 years ago)
- Last Synced: 2025-01-22T18:51:30.387Z (over 1 year ago)
- Topics: body-parser, cors, dotenv, express-js, express-rate-limit, javascript, jsonwebtoken, nodejs, pg, sql
- Language: JavaScript
- Homepage:
- Size: 1.95 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Login / Backend
Este es un proyecto de backend para un sistema de autenticación y gestión de usuarios (CRUD) utilizando Node.js, Express, y PostgreSQL. Proporciona endpoints para la autenticación de usuarios (login) y para operaciones CRUD sobre los usuarios.
Este backend proporciona varios endpoints para autenticación y operaciones CRUD de usuarios:
### API "/auth" Rutas de authenticación
- **POST /auth/login**: Iniciar sesión y obtener un token:
```bash
{
"username": "exampleuser",
"password": "password123"
}
```
### API "/user" Rutas de Usuarios
Nota: Solo los usuarios autenticados con el rol de administrador (rol_id = 1) pueden acceder a estas rutas.
- **GET /user**: Obtener todos los usuarios.
- **POST /user**: Crear un nuevo usuario.
Ejemplo JSON
```bash
{
"username": "UserPrueba",
"first_name": "User",
"last_name": "Prueba",
"password": "prueba01",
"email": "testuser@example.com",
"role_id": 2
}
```
- **PUT /user/#ID**: Actualizar un usuario por ID.
- **DELETE /user/#ID**: Eliminar un usuario por ID.
## Estructura del Proyecto
El proyecto está organizado de la siguiente manera:

La estructura de carpetas y archivos está diseñada para seguir las mejores prácticas en el desarrollo de aplicaciones backend con Node.js y Express, promoviendo la separación de responsabilidades y la organización modular del código.
Cada carpeta tiene una función específica:
- **config/**: contiene la configuración general de la aplicación, como la configuración de la base de datos.
- **controllers/**: maneja la lógica de negocio y las operaciones específicas para diferentes rutas, separando las funciones de autenticación (authController.js) y de gestión de usuarios (userController.js).
- **middlewares/**: se encarga de la lógica intermedia, como la autenticación
(auth.js), que se ejecuta antes de acceder a las rutas protegidas.
- **models/**: Define la estructura de la base de datos y los modelos utilizados para interactuar con ella.
- **routes/**: Define las rutas de la API y asigna los controladores correspondientes.
- **utils/**: Contiene funciones de utilidad reutilizables, como la generación de claves y el hash de contraseñas, ayudando a evitar la duplicación de código.
Esta estructura hace que el código sea más mantenible y escalable, ya que permite agregar nuevas funcionalidades sin afectar la organización general del proyecto.
## Dependencias
Estas son las principales dependencias utilizadas en el proyecto:
- **bcrypt**: Para el hash y la verificación de contraseñas.
- **body-parser**: Middleware para analizar cuerpos de solicitudes HTTP.
- **cors**: Middleware para habilitar CORS (Cross-Origin Resource Sharing).
- **dotenv**: Para cargar variables de entorno desde un archivo `.env`.
- **express**: Framework web para Node.js.
- **express-rate-limit**: Middleware para limitar el número de solicitudes al servidor.
- **jsonwebtoken**: Para crear y verificar tokens JWT.
- **pg**: Cliente para interactuar con una base de datos PostgreSQL.
- **mysql2**: Cliente para interactuar con una base de datos MySQL (opcional).
## Instalación y Ejecución
### Requisitos previos
- Node.js y npm (Node Package Manager) deben estar instalados en tu sistema.
- Una base de datos PostgreSQL (o MySQL si se ajusta la configuración).
### Instrucciones de instalación
1. Clona este repositorio en tu máquina local:
```bash
git clone https://github.com/ACSBITMEN/Login-Backend.git
```
2. Navega al directorio del proyecto:
```bash
cd backend
```
3. Instala las dependencias:
```bash
npm install
```
4. Crea un archivo `.env` en el directorio raíz y configura tus variables de entorno (ver sección de [Variables de Entorno](#variables-de-entorno) para más detalles).
5. Inicia el servidor:
```bash
npm start
```
## Variables de Entorno
Crea un archivo `.env` en la raíz del proyecto con las siguientes variables:
```env
# Configuración de la base de datos
DB_HOST=localhost
DB_USER=tu_usuario
DB_PASSWORD=tu_contraseña
DB_NAME=nombre_base_datos
# Puerto del servidor
PORT= 3000 (si se ajusta la configuración).
# Clave secreta para JWT
JWT_SECRET=tuPass_secreta