From 4e43df80758c47e039e8617525f46ad2a5cf3577 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 1 Apr 2024 18:58:20 +0200 Subject: [PATCH] Added sample security. Though this breaks the app. --- build.gradle | 5 ++++ .../config/CustomAuthenticationFilter.java | 17 +++++++++++ .../sharepulse/config/SecurityConfig.java | 29 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 src/main/java/de/w665/sharepulse/config/CustomAuthenticationFilter.java create mode 100644 src/main/java/de/w665/sharepulse/config/SecurityConfig.java diff --git a/build.gradle b/build.gradle index 45eb111..5784301 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,11 @@ dependencies { implementation 'com.rethinkdb:rethinkdb-driver:2.4.4' // https://mvnrepository.com/artifact/com.google.code.gson/gson implementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1' + // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security + implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '3.2.4' + // https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api + implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.12.5' + } bootJar { diff --git a/src/main/java/de/w665/sharepulse/config/CustomAuthenticationFilter.java b/src/main/java/de/w665/sharepulse/config/CustomAuthenticationFilter.java new file mode 100644 index 0000000..3defc5a --- /dev/null +++ b/src/main/java/de/w665/sharepulse/config/CustomAuthenticationFilter.java @@ -0,0 +1,17 @@ +package de.w665.sharepulse.config; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import org.springframework.web.filter.GenericFilterBean; + +import java.io.IOException; + +public class CustomAuthenticationFilter extends GenericFilterBean { + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + // Custom logic here + filterChain.doFilter(servletRequest, servletResponse); + } +} diff --git a/src/main/java/de/w665/sharepulse/config/SecurityConfig.java b/src/main/java/de/w665/sharepulse/config/SecurityConfig.java new file mode 100644 index 0000000..bd07caf --- /dev/null +++ b/src/main/java/de/w665/sharepulse/config/SecurityConfig.java @@ -0,0 +1,29 @@ +package de.w665.sharepulse.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configurers.LogoutConfigurer; +import org.springframework.security.web.SecurityFilterChain; + +@Configuration +@EnableWebSecurity +public class SecurityConfig { + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + http + .authorizeHttpRequests(authorize -> authorize + .requestMatchers("/admin/**").authenticated() + .anyRequest().permitAll() + ) + .formLogin(formLogin -> formLogin + .loginPage("/login") + .permitAll() + ) + .logout(LogoutConfigurer::permitAll) + .rememberMe(Customizer.withDefaults()); + return http.build(); + } +}