Skip to content

[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.

BacklogMotivo
F-00.1Base Laravel instalada
F-00.2Tabla 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 tabla users existe 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 con id=1 y name="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 middleware AuthMock hace Auth::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_id se 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@update deniega la operación y devuelve un error de autorización (HTTP 403).
  • [ ] Requisito Técnico: App\Models\User con relaciones hasMany(ArchivedLog::class, 'archived_by_id') y hasMany(Comment::class). Middleware App\Http\Middleware\AuthMock registrado condicionalmente en bootstrap/app.php solo si APP_ENV !== 'production'. UserSeeder en database/seeders/. CommentPolicy registrada en AuthServiceProvider.

MoSCoW: MUSTSprint: Sprint 0

Notas:

  • En producción, AuthMock NO debe estar activo. El middleware AuthGateway (F-05.3) toma el control y autentica desde el sistema externo.
  • La tabla users es minimalista — no incluye contraseña local ya que la auth es externa.
  • external_id permite mapear el usuario del sistema externo con el registro local si fuera necesario.

Log Management Dashboard — Documentación del Proyecto