Servertjenester - idatt2106-v25-02/krisefikser GitHub Wiki
Oversikt
Dette dokumentet beskriver servertjenestene som utgjør backend-løsningen i Krisefikser.no, utviklet som del av IDATT2106 – Systemutvikling med smidig prosjekt, vår 2025. Backend er bygget med Java og Spring Boot, og tilbyr et REST-API som muliggjør funksjonaliteten beskrevet i brukerhistoriene i prosjektets visjonsdokument.
Teknologi og arkitektur
- Språk og rammeverk: Java 21 + Spring Boot 3.x
- Byggesystem: Maven
- Databaseløsning: MySQL
- Arkitektur: Lagdelt arkitektur (Controller → Service → Repository)
- API-stil: REST
- Persistens: JPA/Hibernate
- Sikkerhet: Spring Security m/ JWT
- Merk: Per nå returneres JWT i response-body, ikke i HttpOnly-cookie. Dette bør vurderes endret for å følge beste praksis.
- CI/CD: GitLab CI med testkjøring og Jacoco-dekning
- Logging: Slf4j/Logback
Database
Løsningen benytter MySQL og er strukturert med følgende kjerne-tabeller (JPA-entiteter):
user
– Brukerinformasjonhousehold
– Husstandstilknytningitem
– Beredskapsvarer (FoodItem, ChecklistItem)inventory_item
– Brukers lager (modellert via relasjoner)group
– Beredskapsgrupper (modellert som household)group_item
– Varer delt i gruppe (modellert via relasjoner)scenario
– Aktive krisermap_point
– Kartmarkører (tilfluktsrom, møteplasser, osv.)reflection
– Refleksjon etter krise
Alle entiteter er mappet med JPA og koblet med @ManyToOne
/@OneToMany
der relevant.
Sikkerhet
- Alle passord er kryptert med BCrypt
- JWT tokens benyttes for autentisering
- Merk: Per nå returneres JWT i response-body, ikke i HttpOnly-cookie. Dette bør vurderes endret for å følge beste praksis og dokumentasjon.
- Sensitive admin-funksjoner er sikret med:
- Rollebasert tilgangskontroll (
@PreAuthorize
) - To-trinns autentisering (2FA) er støttet
- Rollebasert tilgangskontroll (
- OWASP A03:2021 (Injection) er dekket via:
- Inputvalidering
- Prepared statements med JPA