Here's my security config
import com.reeftrader.Hades.user.User;
import com.reeftrader.Hades.user.UserService;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
(deleted some imports to fit this post limit)
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class WebSecurityConfig {
private final JwtAuthFilter jwtAuthFilter;
private final AuthenticationProvider authenticationProvider;
private final static List<UserDetails> APPLICATION_USERS = Arrays.asList(
new org.springframework.security.core.userdetails.User(
"email.com",
"pas",
Collections.singleton(new SimpleGrantedAuthority("ROLE_ADMIN"))
)
);
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:3000"));//TODO: Use ENV variable here for URL
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "DELETE", "PUT", "PATCH"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.cors(c -> c.configurationSource(corsConfigurationSource()))
.csrf()
.disable()
.authorizeHttpRequests()
// requestMatchers makes a list of "white listed" request that do not request AUTHENTICATION
.requestMatchers("/user/**", "/event", "/listing/event/**")
.permitAll()
.anyRequest()
.authenticated()
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authenticationProvider(authenticationProvider)
.addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class);
return http.build();
}
}
and my controller
import com.reeftrader.Hades.listing.Listing;
import com.reeftrader.Hades.listing.ListingRequest;
import com.reeftrader.Hades.listing.ListingResponse;
import com.reeftrader.Hades.listing.ListingService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@CrossOrigin(origins = "http://localhost:3000")
@RestController
@RequestMapping("/reservation")
@RequiredArgsConstructor
public class ReservationController {
private final ReservationService reservationService;
@GetMapping("identity/{identityId}")
public ResponseEntity<List<Reservation>> getReservationsForIdentity (@PathVariable Integer identityId) {
return ResponseEntity.ok(reservationService.getReservationsForIdentity(identityId));
}
}