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 – Brukerinformasjon
  • household – Husstandstilknytning
  • item – 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 kriser
  • map_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
  • OWASP A03:2021 (Injection) er dekket via:
    • Inputvalidering
    • Prepared statements med JPA

🔙 Tilbake til Dokumentasjonssiden