Cuenta de externas, arreglos de seguridad, títulos arriba y despliegue
- Rol «externas» para la asamblea de externas: pide sin cupo, siempre con el colectivo de fuera y su contacto, y sus solicitudes salen en naranja hasta que la asamblea de la Enre las confirma. - /pedir/ explica en una línea que los colectivos externos piden fecha en la asamblea de externas, los lunes de 19:00 a 20:00. - Seguridad: argon2 limitado a dos cálculos a la vez y el intento se cuenta antes de calcular (60 accesos simultáneos llevaban el proceso a 3,8 GB); bloqueo por cuenta a 20 fallos para que no se pueda dejar fuera a la asamblea; avisos por sesión en vez de por URL; sig sin «..»; eventos de 31 días como mucho; parámetros de argon2 acotados. - Títulos pegados arriba en todas las páginas; la franja de la enredadera recupera ese alto para seguir llenando la pantalla. - despliegue/: instalar.sh, cuenta.sh, servicio de systemd con el proceso encerrado, fragmento de nginx que además deja de servir .git y las notas internas, y configuración de ejemplo. Ninguna contraseña en el repositorio.
This commit is contained in:
parent
ce3127baff
commit
7d5dbeec60
24 changed files with 606 additions and 96 deletions
|
|
@ -248,3 +248,29 @@ func TestModificarNoChocaConsigoMismo(t *testing.T) {
|
|||
t.Fatalf("mover «a» encima de «b» deberia fallar por solape, dio %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestExternasSinCupoPeroConColectivo(t *testing.T) {
|
||||
rg := ReglasPorDefecto()
|
||||
eventos := []Evento{
|
||||
evento("a", "externas", "2026-10-02", "2026-10-04", Solicitado),
|
||||
evento("b", "externas", "2026-10-09", "2026-10-11", Solicitado),
|
||||
}
|
||||
|
||||
s := solicitud("externas", "2026-10-16", "2026-10-16")
|
||||
s.Rol = RolExternas
|
||||
if err := rg.Validar(s, eventos, hoy); err == nil || !strings.Contains(err.Error(), "colectivo de fuera") {
|
||||
t.Fatalf("sin decir de qué colectivo es deberia fallar, dio %v", err)
|
||||
}
|
||||
|
||||
// Con seis días ya apuntados, un séptimo vale: externas no tiene cupo.
|
||||
s.Amadrinado, s.Contacto = "Colectivo Sin Techo", "sintecho@example.org"
|
||||
if err := rg.Validar(s, eventos, hoy); err != nil {
|
||||
t.Fatalf("externas no deberia tener cupo: %v", err)
|
||||
}
|
||||
|
||||
// Pero sigue sin poder pedir entre semana.
|
||||
s.Desde, s.Hasta = "2026-10-14", "2026-10-14"
|
||||
if err := rg.Validar(s, eventos, hoy); err == nil {
|
||||
t.Fatal("externas no deberia poder pedir un miércoles")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue