# US-MGN-001-008-002: Field-Level Security (Ocultar Campos Sensibles)

**RF Asociado:** [RF-MGN-001-008](../../02-modelado/requerimientos-funcionales/mgn-001/RF-MGN-001-008-record-rules-rls.md)
**Módulo:** MGN-001 - Fundamentos
**Epic:** Seguridad y Control de Acceso
**Prioridad:** P1 (Post-MVP)
**Story Points:** 5
**Sprint:** Sprint 5
**Fecha:** 2025-11-24

---

## User Story

**Como** sistema de seguridad,
**Quiero** ocultar campos sensibles según permisos del usuario,
**Para** proteger información confidencial (salarios, precios de costo, etc.).

---

## Criterios de Aceptación

### Escenario 1: Ocultar campos en API response
**Cuando** usuario sin permiso 'employee.salary.read' consulta empleados,
**Entonces** campo 'salary' NO aparece en response JSON.

### Escenario 2: Ocultar campos en Frontend
**Cuando** frontend renderiza formulario,
**Entonces** campos sin permiso no se muestran (condicional rendering).

---

## Reglas de Negocio

- **RN-1:** Permisos a nivel de campo: model.field.read, model.field.write
- **RN-2:** Campos sensibles: salary, cost_price, bank_account, etc.
- **RN-3:** Serialización automática excluye campos sin permiso

---

## Tareas Técnicas

- [ ] Decorador: @SensitiveField('employee.salary.read')
- [ ] Serializer automático que filtra campos según permisos
- [ ] Frontend: condicional rendering de campos
- [ ] Tests

---

## Estimación: 5 SP

---

## Referencias

- [RF-MGN-001-008](../../02-modelado/requerimientos-funcionales/mgn-001/RF-MGN-001-008-record-rules-rls.md)
