[SECURITY] F-05.5 — Tabla Users y Mock de Sesión
Épica: EPIC-05 — Infraestructura y Conectividad
🏷️ Categoría
Categoría: SecuritySecundaria: DataImpacta en: Equipo Fullstack (Livewire + Laravel + Base de Datos)
📦 Dependencias
Backlogs que deben estar completados antes de implementar esta feature.
| Backlog | Motivo |
|---|---|
| F-00.1 | Base Laravel instalada |
| F-00.2 | Tabla users definida en las migraciones |
Prioridad: Must
Descripción: Como desarrollador Quiero una tabla users en PostgreSQL y un mecanismo de mock de sesión Para que durante el desarrollo se pueda trabajar con un usuario autenticado sin depender del sistema externo de autenticación, y para que los comentarios puedan atribuirse a un autor
Criterios de Aceptación (Checklist):
- [ ] Escenario 1 (Migración): Dado que se ejecuta
php artisan migrate, cuando la migración corre, entonces la tablausersexiste en PostgreSQL con los campos:id,name,email,external_id,created_at,updated_at. - [ ] Escenario 2 (Seeder de usuario mock): Dado que se ejecuta
php artisan db:seed --seeder=UserSeeder, cuando el seeder corre, entonces existe al menos un usuario conid=1yname="Admin"para usar como mock en desarrollo. - [ ] Escenario 3 (Middleware AuthMock): Dado que
APP_ENV=local, cuando cualquier petición llega al panel, entonces el middlewareAuthMockhaceAuth::loginUsingId(1)automáticamente — sin formulario de login. - [ ] Escenario 4 (Atribución de comentarios): Dado que el usuario autenticado añade un comentario, cuando se persiste, entonces
comments.user_idse asigna al ID del usuario en sesión (Auth::id()). - [ ] Escenario 5 (Policy de comentarios): Dado que un usuario intenta editar un comentario de otro usuario, cuando se ejecuta la Livewire Action, entonces
CommentPolicy@updatedeniega la operación y devuelve un error de autorización (HTTP 403). - [ ] Requisito Técnico:
App\Models\Usercon relacioneshasMany(ArchivedLog::class, 'archived_by_id')yhasMany(Comment::class). MiddlewareApp\Http\Middleware\AuthMockregistrado condicionalmente enbootstrap/app.phpsolo siAPP_ENV !== 'production'.UserSeederendatabase/seeders/.CommentPolicyregistrada enAuthServiceProvider.
MoSCoW: MUSTSprint: Sprint 0
Notas:
- En producción,
AuthMockNO debe estar activo. El middlewareAuthGateway(F-05.3) toma el control y autentica desde el sistema externo. - La tabla
userses minimalista — no incluye contraseña local ya que la auth es externa. external_idpermite mapear el usuario del sistema externo con el registro local si fuera necesario.