@startuml ' skinparam linetype ortho ' skinparam groupInheritance 2 allowmixing !include classdiagram-authentication.puml !include classdiagram-episode-actions.puml !include classdiagram-model.puml !include classdiagram-subscriptions.puml !include classdiagram-util.puml class SecurityConfigurationBasicAuth { <> SecurityConfigurationBasicAuth() PasswordEncoder encoder() UserDetailsManager userDetailsService() SecuryFilterChain fiterChain(HTTPSecurity http) throws Excpetion } note top Erstellt einen Servlet Filter (springSecurityFilterChain) der für die gesamte Sicherheit zuständig ist (Schutz der URLs, Validierung von Anmeldedaten, Weiterleitung zur Anmeldung, etc.). end note class PSEApplication { <> PSEApplication() void main(String[] args) } database Datenbank Datenbank <-[hidden]d- subscriptionsAPI Datenbank <-[hidden]d- episodeActionsAPI Datenbank <-[hidden]d- authenticationAPI () SQL as SQLSub () SQL as SQLAuth () SQL as SQLEpisode Datenbank -- SQLSub Datenbank -- SQLAuth Datenbank -- SQLEpisode Subscription --o SubscriptionTitles EpisodeActionPost -o SubscriptionTitles UserDetailsManager <.. SecurityConfigurationBasicAuth: <> SubscriptionController ..o PSEApplication AuthenticationController ..o PSEApplication EpisodeActionController ..o PSEApplication SecurityConfigurationBasicAuth ..o PSEApplication PSEApplication --() HTTP SQLSub )-- SubscriptionDataAccessService: JPA ' SQLAuth )-- AuthenticationDataAccessService: JPA SQLAuth )-- JdbcUserDetailsManager: JDBC SQLEpisode )-- EpisodeActionDataAccessService: JPA RSSParser <. SubscriptionDataAccessService: <> RSSParser <. EpisodeActionDataAccessService: <> ' JdbcUserDetailsManager <-- CleanCronJob model .o Datenbank: ORM (User, SubscriptionAction, Subscription, EpisodeAction, Episode) ' Datenbank o.. Subscription: ORM ' Datenbank o.. SubscriptionAction: ORM ' Datenbank o.. Episode: ORM ' Datenbank o.. EpisodeAction: ORM ' Datenbank o.. User: ORM @enduml