Skip to content

Ramiro-9/auth-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auth API

API de autenticación completa construida en Go con Gin. Implementa registro, login, manejo de tokens JWT, roles, recuperación de contraseña y autenticación de dos factores (2FA).

Stack

  • Go + Gin — servidor HTTP
  • PostgreSQL + GORM — base de datos
  • JWT — access token y refresh token
  • bcrypt — hash de contraseñas
  • TOTP — autenticación de dos factores
  • Swagger — documentación interactiva

Características

  • Registro y login con validación
  • Access token (24hs) y refresh token (7 días) con rotación
  • Logout con invalidación real del token
  • Roles de usuario (user, admin) con middleware de permisos
  • Bloqueo de cuenta tras 5 intentos fallidos
  • Recuperación de contraseña con token temporal
  • Cambio de contraseña estando autenticado
  • 2FA con TOTP compatible con Google Authenticator
  • Rate limiting por IP

Endpoints

Método Ruta Autenticación
POST /auth/register No
POST /auth/login No
POST /auth/refresh No
POST /auth/forgot-password No
POST /auth/reset-password No
GET /auth/me Bearer token
POST /auth/logout Bearer token
PUT /auth/change-password Bearer token
GET /auth/totp/setup Bearer token
POST /auth/totp/enable Bearer token
POST /auth/totp/disable Bearer token
GET /admin/dashboard Bearer token + rol admin

Instalación

Requisitos

  • Go 1.21+
  • PostgreSQL

Pasos

  1. Cloná el repositorio
git clone https://github.com/Ramiro-9/auth-api.git
cd auth-api
  1. Instalá las dependencias
go mod tidy
  1. Creá el archivo .env en la raíz del proyecto
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=tu_password
DB_NAME=auth_api

JWT_SECRET=un_secreto_largo_y_random
JWT_EXPIRY_HOURS=24
REFRESH_TOKEN_EXPIRY_DAYS=7

SERVER_PORT=8080
  1. Creá la base de datos auth_api en PostgreSQL

  2. Corré el servidor

go run ./cmd/

Las tablas se crean automáticamente al iniciar.

Documentación

Con el servidor corriendo, abrí en el navegador:

http://localhost:8080/swagger/index.html

Desde ahí podés explorar y probar todos los endpoints de forma interactiva.

About

API de autenticación en Go/Gin con JWT, roles, 2FA y Swagger.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages