3.3 KiB
Feature 1 – Användarval
Status
Färdig och mergad till main.
Bakgrund
HemHub behövde centralt lagrade användare och ett enkelt sätt att välja vem som använder applikationen, utan att införa autentisering.
Mål
Göra det möjligt att lista och skapa användare, välja en aktiv användare, återanvända valet i samma browser och lämna den aktiva vyn.
Omfattning
- persistens, API och validering för användare;
- startflöden för tom och befintlig användarlista;
- lokalt lagrad aktiv användare;
- användarval, skapande och felhantering;
- automatiserade backend- och frontendtester.
Avgränsningar
Ingen autentisering, lösenord, roll, behörighet, e-post, avatar, hushållsrelation, redigering eller radering infördes.
Beslut
Backend är slutlig auktoritet för namnvalidering. Namn normaliseras separat för
skiftlägesokänslig unikhet. Frontend lagrar endast UUID under
hemhub.activeUserId och verifierar det mot den hämtade användarlistan.
Implementerad lösning
Vid appstart hämtar frontend alltid användarna. En tom lista leder direkt till formuläret Skapa användare. Om användare finns men inget giltigt lokalt val finns visas Vem är du?.
Val eller lyckat skapande sparar användarens id och aktiverar användaren. Ett ogiltigt lagrat id rensas utan tekniskt fel. Feature 1:s tillfälliga startsida och kontrollen Byt användare ersattes i Feature 2 av uppgiftsbrädan och kontrollen Logga ut; lagringsmekanismen är oförändrad.
API-förändringar
GET /api/usersreturnerar alla användare.POST /api/usersskapar en användare och returnerar201 Created.
API-responsen innehåller id, name och createdAt. normalizedName exponeras
inte.
Tomt namn eller namn längre än 50 Unicode-kodpunkter ger 400 med
INVALID_USER_NAME. Ett dubblettnamn utan hänsyn till stora och små bokstäver
ger 409 med USER_NAME_ALREADY_EXISTS.
Databasförändringar
Flyway-migreringen V1__create_users.sql skapade tabellen app_user:
- UUID som primärnyckel;
name VARCHAR(50);- unikt
normalized_name VARCHAR(150); created_at TIMESTAMP WITH TIME ZONE.
Lokalt används filbaserad H2 och i tester H2 in-memory. Backend genererar UUID
och createdAt med en UTC-klocka.
Frontendförändringar
Frontend fick laddnings-, fel-, användarvals- och användarskapandevyer. Skapandeformuläret trimmar namnet, gör en enkel längdkontroll, blockerar dubbelsubmit och behåller inmatningen vid fel.
Nuvarande utloggning tar bort hemhub.activeUserId, rensar aktiv användare och
visar Vem är du? även om endast en användare finns.
Tester och verifiering
Backendens integrationstester verifierar tom lista, skapande och listning, trimning, ogiltiga namn, skiftlägesokänsliga dubbletter och alfabetisk sortering.
Frontendtesterna verifierar tom lista, användarval, automatisk aktivering efter skapande, bevarad inmatning vid fel, hämtfel med återförsök, ogiltigt lagrat id och utloggning. API-anropen mockas.
Kända begränsningar
Aktiv användare är ett lokalt gränssnittsval, inte säker autentisering. Valet synkroniseras inte mellan browsers eller enheter. Användare kan inte redigeras eller raderas.
Relaterade commits
1ec7a729085d456d3185a1c74d02f99f40de0e8d–feat: add user selection flow050f248857a01db2dc236a0ca35982fd70dab3d6– merge tillmain