aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/berzerkula/builddb/config/SecurityConfig.java
diff options
context:
space:
mode:
authorWilliam Harrington <kb0iic@berzerkula.org>2025-02-11 21:30:34 -0600
committerWilliam Harrington <kb0iic@berzerkula.org>2025-02-11 21:30:34 -0600
commit5db196eebb04155491630b5396d1b7a7f2eab4e6 (patch)
treefc53afeb77808ca6c8ed39a055ac79241c756540 /src/main/java/org/berzerkula/builddb/config/SecurityConfig.java
parent0adf14e0466bc153f4924cef62b18352aa987827 (diff)
Push initial release 1.0.0
Diffstat (limited to 'src/main/java/org/berzerkula/builddb/config/SecurityConfig.java')
-rw-r--r--src/main/java/org/berzerkula/builddb/config/SecurityConfig.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/main/java/org/berzerkula/builddb/config/SecurityConfig.java b/src/main/java/org/berzerkula/builddb/config/SecurityConfig.java
new file mode 100644
index 0000000..dbaacd5
--- /dev/null
+++ b/src/main/java/org/berzerkula/builddb/config/SecurityConfig.java
@@ -0,0 +1,79 @@
+package org.berzerkula.builddb.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.web.SecurityFilterChain;
+
+@Configuration
+@EnableWebSecurity
+@EnableMethodSecurity
+public class SecurityConfig {
+
+ @Bean
+ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+ return http
+ .authorizeHttpRequests( auth -> auth
+ .requestMatchers("/").permitAll()
+ .requestMatchers("/actuator/**").hasRole("admin")
+ .requestMatchers("/env/**").hasRole("admin")
+ .requestMatchers("/health/**").hasRole("admin")
+ .requestMatchers("/info/**").hasRole("admin")
+ .requestMatchers("/contact").permitAll()
+ .requestMatchers("/pkgs/**").hasRole("client")
+ .requestMatchers("/register").permitAll()
+ .requestMatchers("/login").permitAll()
+ .requestMatchers("/logout").permitAll()
+ .anyRequest().authenticated()
+ )
+ .formLogin(form -> form
+ .loginPage("/login")
+ .usernameParameter("email")
+ .passwordParameter("password")
+ .defaultSuccessUrl("/", true)
+ )
+ .logout(config -> config.logoutSuccessUrl("/"))
+ .build();
+ }
+
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+