{"id":15068194,"url":"https://github.com/acsbitmen/login-backend","last_synced_at":"2026-02-18T20:01:46.741Z","repository":{"id":257152438,"uuid":"857459778","full_name":"ACSBITMEN/Login-Backend","owner":"ACSBITMEN","description":"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.","archived":false,"fork":false,"pushed_at":"2024-09-14T20:35:46.000Z","size":2042,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T18:51:30.387Z","etag":null,"topics":["body-parser","cors","dotenv","express-js","express-rate-limit","javascript","jsonwebtoken","nodejs","pg","sql"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ACSBITMEN.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-14T18:04:33.000Z","updated_at":"2024-09-14T20:35:49.000Z","dependencies_parsed_at":"2024-09-15T03:53:34.759Z","dependency_job_id":null,"html_url":"https://github.com/ACSBITMEN/Login-Backend","commit_stats":null,"previous_names":["acsbitmen/login-backend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ACSBITMEN%2FLogin-Backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ACSBITMEN%2FLogin-Backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ACSBITMEN%2FLogin-Backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ACSBITMEN%2FLogin-Backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ACSBITMEN","download_url":"https://codeload.github.com/ACSBITMEN/Login-Backend/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243833460,"owners_count":20355278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["body-parser","cors","dotenv","express-js","express-rate-limit","javascript","jsonwebtoken","nodejs","pg","sql"],"created_at":"2024-09-25T01:32:18.878Z","updated_at":"2025-10-16T22:05:51.590Z","avatar_url":"https://github.com/ACSBITMEN.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Login / Backend\n\nEste 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.\n\nEste backend proporciona varios endpoints para autenticación y operaciones CRUD de usuarios:\n\n### API \"/auth\" Rutas de authenticación \n\n- **POST /auth/login**: Iniciar sesión y obtener un token:\n    ```bash\n    {\n    \"username\": \"exampleuser\",\n    \"password\": \"password123\"\n    }\n    ```\n\n### API \"/user\" Rutas de Usuarios\n\nNota: Solo los usuarios autenticados con el rol de administrador (rol_id = 1) pueden acceder a estas rutas.\n\n- **GET /user**: Obtener todos los usuarios.\n- **POST /user**: Crear un nuevo usuario. \nEjemplo JSON\n    ```bash\n    {\n      \"username\": \"UserPrueba\",\n      \"first_name\": \"User\",\n      \"last_name\": \"Prueba\",\n      \"password\": \"prueba01\",\n      \"email\": \"testuser@example.com\",\n      \"role_id\": 2\n    }\n    ```\n\n- **PUT /user/#ID**: Actualizar un usuario por ID.\n- **DELETE /user/#ID**: Eliminar un usuario por ID.\n\n\n## Estructura del Proyecto\nEl proyecto está organizado de la siguiente manera:\n\n![](https://raw.githubusercontent.com/ACSBITMEN/Login-Backend/main/assets/Backend-Estructure.jpg)\n\n\nLa 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. \n\nCada carpeta tiene una función específica: \n\n- **config/**: contiene la configuración general de la aplicación, como la configuración de la base de datos.\n- **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). \n- **middlewares/**: se encarga de la lógica intermedia, como la autenticación \n(auth.js), que se ejecuta antes de acceder a las rutas protegidas. \n- **models/**: Define la estructura de la base de datos y los modelos utilizados para interactuar con ella.\n- **routes/**: Define las rutas de la API y asigna los controladores correspondientes.\n- **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.\n\nEsta 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.\n\n## Dependencias\n\nEstas son las principales dependencias utilizadas en el proyecto:\n\n- **bcrypt**: Para el hash y la verificación de contraseñas.\n- **body-parser**: Middleware para analizar cuerpos de solicitudes HTTP.\n- **cors**: Middleware para habilitar CORS (Cross-Origin Resource Sharing).\n- **dotenv**: Para cargar variables de entorno desde un archivo `.env`.\n- **express**: Framework web para Node.js.\n- **express-rate-limit**: Middleware para limitar el número de solicitudes al servidor.\n- **jsonwebtoken**: Para crear y verificar tokens JWT.\n- **pg**: Cliente para interactuar con una base de datos PostgreSQL.\n- **mysql2**: Cliente para interactuar con una base de datos MySQL (opcional).\n\n\n## Instalación y Ejecución\n\n### Requisitos previos\n\n- Node.js y npm (Node Package Manager) deben estar instalados en tu sistema.\n- Una base de datos PostgreSQL (o MySQL si se ajusta la configuración).\n\n### Instrucciones de instalación\n\n1. Clona este repositorio en tu máquina local:\n    ```bash\n    git clone https://github.com/ACSBITMEN/Login-Backend.git\n    ```\n2. Navega al directorio del proyecto:\n    ```bash\n    cd backend\n    ```\n3. Instala las dependencias:\n    ```bash\n    npm install\n    ```\n4. 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).\n\n5. Inicia el servidor:\n    ```bash\n    npm start\n    ```\n\n## Variables de Entorno\n\nCrea un archivo `.env` en la raíz del proyecto con las siguientes variables:\n\n```env\n# Configuración de la base de datos\nDB_HOST=localhost\nDB_USER=tu_usuario\nDB_PASSWORD=tu_contraseña\nDB_NAME=nombre_base_datos\n\n# Puerto del servidor\nPORT= 3000 (si se ajusta la configuración).\n\n# Clave secreta para JWT\nJWT_SECRET=tuPass_secreta\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facsbitmen%2Flogin-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facsbitmen%2Flogin-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facsbitmen%2Flogin-backend/lists"}