workspace-v1/shared/modules/auth/README.md
rckrdmrd cb4c0681d3 feat(workspace): Add new projects and update architecture
New projects created:
- michangarrito (marketplace mobile)
- template-saas (SaaS template)
- clinica-dental (dental ERP)
- clinica-veterinaria (veterinary ERP)

Architecture updates:
- Move catalog from core/ to shared/
- Add MCP servers structure and templates
- Add git management scripts
- Update SUBREPOSITORIOS.md with 15 new repos
- Update .gitignore for new projects

Repository infrastructure:
- 4 main repositories
- 11 subrepositorios
- Gitea remotes configured

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:43:28 -06:00

172 lines
3.4 KiB
Markdown

# Auth - Core Module
**Modulo:** shared/modules/auth/
**Version:** 0.1.0
**Fecha:** 2026-01-03
**Owner:** Backend-Agent
**Estado:** desarrollo
---
## Descripcion
Modulo de autenticacion compartido que provee guards, decorators y utilidades JWT para proyectos NestJS. Complementa el catalogo `shared/catalog/auth/` con codigo listo para importar.
---
## Instalacion
### Prerequisitos
```bash
npm install @nestjs/jwt @nestjs/passport passport-jwt bcrypt
npm install -D @types/passport-jwt @types/bcrypt
```
### Configuracion de Paths
```json
{
"compilerOptions": {
"paths": {
"@shared/modules/*": ["../../shared/modules/*"]
}
}
}
```
---
## API Publica (Planificada)
### Guards
| Guard | Descripcion | Uso |
|-------|-------------|-----|
| `JwtAuthGuard` | Protege rutas con JWT | `@UseGuards(JwtAuthGuard)` |
| `RolesGuard` | Verifica roles de usuario | `@UseGuards(RolesGuard)` |
| `PermissionsGuard` | Verifica permisos | `@UseGuards(PermissionsGuard)` |
### Decorators
| Decorator | Descripcion | Ejemplo |
|-----------|-------------|---------|
| `@CurrentUser()` | Extrae usuario actual | `@CurrentUser() user: User` |
| `@Roles()` | Define roles requeridos | `@Roles('admin', 'editor')` |
| `@Public()` | Marca ruta como publica | `@Public()` |
### Servicios
| Servicio | Descripcion |
|----------|-------------|
| `TokenService` | Generacion/validacion JWT |
| `PasswordService` | Hashing con bcrypt |
| `SessionService` | Gestion de sesiones |
---
## Ejemplos de Uso
### Ejemplo 1: Proteger Controller
```typescript
import { JwtAuthGuard, CurrentUser, Roles } from '@shared/modules/auth';
@Controller('users')
@UseGuards(JwtAuthGuard)
export class UsersController {
@Get('profile')
getProfile(@CurrentUser() user: User) {
return user;
}
@Get('admin')
@Roles('admin')
@UseGuards(RolesGuard)
adminOnly() {
return { message: 'Admin access' };
}
}
```
### Ejemplo 2: Hash de Password
```typescript
import { PasswordService } from '@shared/modules/auth';
const passwordService = new PasswordService();
// Hash
const hash = await passwordService.hash('myPassword123');
// Verify
const isValid = await passwordService.verify('myPassword123', hash);
```
---
## Dependencias
### Internas
| Modulo | Uso |
|--------|-----|
| `@shared/modules/utils` | Validaciones |
### Externas (npm)
| Paquete | Version | Uso |
|---------|---------|-----|
| `@nestjs/jwt` | `^10.0` | Tokens JWT |
| `@nestjs/passport` | `^10.0` | Estrategias auth |
| `passport-jwt` | `^4.0` | Estrategia JWT |
| `bcrypt` | `^5.0` | Hashing passwords |
---
## Relacion con Catalogo
Este modulo (`shared/modules/auth/`) provee **codigo importable**.
El catalogo (`shared/catalog/auth/`) provee **documentacion y referencia** para implementaciones completas.
```yaml
Usar modules/auth cuando:
- Necesitas guards/decorators listos
- Proyecto ya tiene auth y solo extiende
Usar catalog/auth cuando:
- Implementas auth desde cero
- Necesitas documentacion completa
- Requieres DDL y estructura de tablas
```
---
## Estado Actual
```markdown
- [ ] JwtAuthGuard implementado
- [ ] RolesGuard implementado
- [ ] CurrentUser decorator
- [ ] Roles decorator
- [ ] Public decorator
- [ ] TokenService
- [ ] PasswordService
- [ ] SessionService
- [ ] Tests unitarios
- [ ] Documentacion completa
```
---
## Changelog
### v0.1.0 (2026-01-03)
- Estructura inicial
- README con planificacion
---
**Modulo:** shared/modules/auth/ | **Owner:** Backend-Agent | **Estado:** desarrollo