Ignore:
Timestamp:
01/19/25 23:18:37 (4 months ago)
Author:
Aleksandar Panovski <apano77@…>
Branches:
main
Children:
f5b256e
Parents:
db39d9e
Message:

Done with stupid timeslots

Location:
src/main/java/com/example/rezevirajmasa/demo/config
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/com/example/rezevirajmasa/demo/config/SecurityConfig.java

    rdb39d9e r8ca35dc  
    77import org.springframework.http.HttpMethod;
    88import org.springframework.security.authentication.AuthenticationManager;
     9import org.springframework.security.config.Customizer;
    910import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    1011import org.springframework.security.config.annotation.web.builders.HttpSecurity;
     
    1516import org.springframework.security.core.userdetails.UserDetailsService;
    1617import org.springframework.security.web.SecurityFilterChain;
     18import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
    1719import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
     20import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
    1821import org.springframework.web.servlet.config.annotation.CorsRegistry;
     22import org.springframework.context.annotation.Bean;
     23import org.springframework.context.annotation.Configuration;
     24import org.springframework.security.config.annotation.web.builders.HttpSecurity;
     25import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
     26import org.springframework.security.web.SecurityFilterChain;
    1927import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    2028
     
    4048    public void addCorsMappings(CorsRegistry registry) {
    4149        registry.addMapping("/**")
     50                .allowedOrigins("http://localhost:3000")
     51                .allowedMethods("GET", "POST", "PUT", "DELETE")
     52                .allowedHeaders("*")
    4253                .allowCredentials(true)
    43                 .allowedOrigins("http://localhost:3000") // Allow requests from this origin
    44                 .allowedMethods("GET", "POST", "PUT", "DELETE") // Allow these HTTP methods
    45                 .allowedHeaders("*")
    46                 .maxAge(3600L); // Allow all headers
     54                .maxAge(3600L);
    4755    }
    4856
    4957//    @Bean
    50 //    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception  {
    51 //
     58//    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    5259//        http
     60//                .exceptionHandling(exception -> exception.authenticationEntryPoint(customerAuthenticationEntryPoint))
     61//                .addFilterBefore(new JwtAuthFilter(userAuthProvider), BasicAuthenticationFilter.class)
    5362//                .csrf(AbstractHttpConfigurer::disable)
    54 //                .authorizeHttpRequests( (requests) -> requests
    55 //                        .requestMatchers(AntPathRequestMatcher.antMatcher("/"), AntPathRequestMatcher.antMatcher("/restaurants"))
    56 //                        .permitAll()
    57 //                        .anyRequest()
    58 //                        .hasAnyRole("ADMIN", "USER")
     63//                .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
     64//                .authorizeHttpRequests(requests -> requests
     65//                        .requestMatchers(HttpMethod.POST, "/api/login", "/api/register").permitAll()
     66//                        .requestMatchers("/", "/home").authenticated()  // Restrict `/` to authenticated users
     67//                        .anyRequest().authenticated()
    5968//                )
    60 //                .formLogin((form) -> form
    61 //                        .permitAll()
    62 //                        .failureUrl("/login?error=BadCredentials")
    63 //                        .defaultSuccessUrl("/restaurants", true)
    64 //                )
    65 //                .logout((logout) -> logout
     69//                .logout(logout -> logout
    6670//                        .logoutUrl("/logout")
    6771//                        .clearAuthentication(true)
    6872//                        .invalidateHttpSession(true)
    6973//                        .deleteCookies("JSESSIONID")
    70 //                        .logoutSuccessUrl("/")
     74//                        .logoutSuccessUrl("/api/login")  // Redirect to login page after logout
    7175//                );
    7276//
     
    8387                .authorizeHttpRequests((requests) -> requests
    8488                        .requestMatchers(HttpMethod.POST, "/api/login", "/api/register").permitAll()
    85                         .anyRequest().authenticated()
    86                 );
     89                        .anyRequest().authenticated());
    8790        return http.build();
    8891    }
     92
    8993    @Bean
    9094    public AuthenticationManager authManager(HttpSecurity http) throws Exception {
     
    9599    }
    96100}
     101//
     102//import com.example.rezevirajmasa.demo.web.filters.JwtAuthFilter;
     103//import org.springframework.context.annotation.Bean;
     104//import org.springframework.context.annotation.Configuration;
     105//import org.springframework.security.authentication.AuthenticationManager;
     106//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
     107//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
     108//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
     109//import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
     110//import org.springframework.security.config.http.SessionCreationPolicy;
     111//import org.springframework.security.core.userdetails.UserDetailsService;
     112//import org.springframework.security.web.SecurityFilterChain;
     113//import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
     114//
     115//@Configuration
     116//@EnableWebSecurity
     117//public class SecurityConfig {
     118//
     119//    private final UserDetailsService userDetailsService;
     120////    private final UserAuthProvider userAuthProvider;
     121//    private final JwtAuthFilter jwtAuthFilter;
     122//
     123//    public SecurityConfig(UserDetailsService userDetailsService) {
     124//        this.userDetailsService = userDetailsService;
     125////        this.userAuthProvider = userAuthProvider;
     126//        this.jwtAuthFilter = new JwtAuthFilter(userAuthProvider);
     127//    }
     128//
     129//    @Bean
     130//    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
     131//        http
     132//                .csrf(AbstractHttpConfigurer::disable)
     133//                .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
     134//                .authorizeHttpRequests((requests) -> requests
     135//                        .requestMatchers("/api/login", "/api/register").permitAll()
     136//                        .anyRequest().authenticated())
     137//                .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class);
     138//
     139//        return http.build();
     140//    }
     141//
     142//    @Bean
     143//    public AuthenticationManager authenticationManager(HttpSecurity http) throws Exception {
     144//        AuthenticationManagerBuilder authenticationManagerBuilder = http.getSharedObject(AuthenticationManagerBuilder.class);
     145//        authenticationManagerBuilder.userDetailsService(userDetailsService);
     146//        return authenticationManagerBuilder.build();
     147//    }
     148//}
  • src/main/java/com/example/rezevirajmasa/demo/config/UserAuthProvider.java

    rdb39d9e r8ca35dc  
    77import com.example.rezevirajmasa.demo.dto.UserDto;
    88import com.example.rezevirajmasa.demo.service.UserService;
     9import io.jsonwebtoken.Claims;
     10import io.jsonwebtoken.Jwts;
    911import jakarta.annotation.PostConstruct;
    1012import lombok.RequiredArgsConstructor;
     
    1214import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
    1315import org.springframework.security.core.Authentication;
     16import org.springframework.security.core.userdetails.UserDetails;
    1417import org.springframework.stereotype.Component;
    1518
    16 import java.util.Base64;
    17 import java.util.Collections;
    18 import java.util.Date;
     19import java.util.*;
     20import java.util.function.Function;
    1921
    2022@RequiredArgsConstructor
     
    2931    protected void init() {
    3032        secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes());
     33    }
     34
     35    public String generateToken(UserDetails userDetails){
     36        Map<String, Object> claims = new HashMap<>();
     37        return createToken(userDetails.getUsername());
    3138    }
    3239
     
    5057        return new UsernamePasswordAuthenticationToken(user, null, Collections.emptyList());
    5158    }
     59
     60    public String extractUsername(String token) {
     61        return extractClaim(token, Claims::getSubject);
     62    }
     63
     64    public Date extractExpiration(String token) {
     65        return extractClaim(token, Claims::getExpiration);
     66    }
     67
     68    public <T> T extractClaim(String token, Function<Claims, T> claimsResolver) {
     69        final Claims claims = extractAllClaims(token);
     70        return claimsResolver.apply(claims);
     71    }
     72
     73    private Claims extractAllClaims(String token) {
     74        return Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody();
     75    }
     76
     77    private Boolean isTokenExpired(String token) {
     78        return extractExpiration(token).before(new Date());
     79    }
    5280}
Note: See TracChangeset for help on using the changeset viewer.