Changeset 8c01a1f for backend


Ignore:
Timestamp:
02/10/26 18:31:21 (5 months ago)
Author:
Andrej <asumanovski@…>
Branches:
master
Children:
6fa5831
Parents:
ff01f66
Message:

Made investing tab and adding assets, starting training tracking and adding training sessions

Location:
backend
Files:
20 added
4 edited

Legend:

Unmodified
Added
Removed
  • backend/pom.xml

    rff01f66 r8c01a1f  
    5151            <groupId>org.springframework.boot</groupId>
    5252            <artifactId>spring-boot-starter-webmvc</artifactId>
     53        </dependency>
     54
     55        <dependency>
     56            <groupId>com.fasterxml.jackson.core</groupId>
     57            <artifactId>jackson-databind</artifactId>
    5358        </dependency>
    5459        <dependency>
  • backend/src/main/java/com/trekr/backend/config/SecurityConfig.java

    rff01f66 r8c01a1f  
    11package com.trekr.backend.config;
    22
     3import com.trekr.backend.security.JwtAuthenticationFilter;
    34import org.springframework.context.annotation.Bean;
    45import org.springframework.context.annotation.Configuration;
     
    78import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    89import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
     10import org.springframework.security.config.http.SessionCreationPolicy;
    911import org.springframework.security.crypto.password.PasswordEncoder;
    1012import org.springframework.security.web.SecurityFilterChain;
     13import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
    1114import org.springframework.web.cors.CorsConfiguration;
    1215import org.springframework.web.cors.CorsConfigurationSource;
     
    1922public class SecurityConfig {
    2023
     24    private final JwtAuthenticationFilter jwtAuthenticationFilter;
     25
     26    public SecurityConfig(JwtAuthenticationFilter jwtAuthenticationFilter) {
     27        this.jwtAuthenticationFilter = jwtAuthenticationFilter;
     28    }
     29
    2130    @Bean
    2231    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
     
    2433                .csrf(AbstractHttpConfigurer::disable)
    2534                .cors(Customizer.withDefaults())
     35                .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
     36                .httpBasic(AbstractHttpConfigurer::disable)
     37                .formLogin(AbstractHttpConfigurer::disable)
    2638                .authorizeHttpRequests(auth -> auth
    2739                        .requestMatchers("/api/auth/**").permitAll()
    2840                        .anyRequest().authenticated());
     41
     42        http.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
    2943        return http.build();
    3044    }
  • backend/src/main/java/com/trekr/backend/security/UserPrincipal.java

    rff01f66 r8c01a1f  
    11package com.trekr.backend.security;
    2 
    3 import lombok.Getter;
    42
    53import java.io.Serializable;
     
    97 * Controllers can inject this or get it from SecurityContextHolder.
    108 */
    11 @Getter
    129public class UserPrincipal implements Serializable {
    1310    private static final long serialVersionUID = 1L;
     
    2219        this.email = email;
    2320    }
     21
     22    public Long getUserId() {
     23        return userId;
     24    }
     25
     26    public String getUsername() {
     27        return username;
     28    }
     29
     30    public String getEmail() {
     31        return email;
     32    }
    2433}
  • backend/src/main/java/com/trekr/backend/service/JwtService.java

    rff01f66 r8c01a1f  
    11package com.trekr.backend.service;
    22
     3import com.trekr.backend.security.UserPrincipal;
    34import io.jsonwebtoken.Jwts;
     5import io.jsonwebtoken.JwtException;
     6import io.jsonwebtoken.Claims;
    47import io.jsonwebtoken.security.Keys;
    58import org.springframework.beans.factory.annotation.Value;
     
    3437                .compact();
    3538    }
     39
     40    public boolean isTokenValid(String token) {
     41        try {
     42            parseClaims(token);
     43            return true;
     44        } catch (JwtException | IllegalArgumentException ex) {
     45            return false;
     46        }
     47    }
     48
     49    public UserPrincipal parseUserPrincipal(String token) {
     50        Claims claims = parseClaims(token);
     51        Long userId = Long.valueOf(claims.getSubject());
     52        String username = (String) claims.get("username");
     53        String email = (String) claims.get("email");
     54        return new UserPrincipal(userId, username, email);
     55    }
     56
     57    private Claims parseClaims(String token) {
     58        return Jwts.parser()
     59                .verifyWith(signingKey)
     60                .build()
     61                .parseSignedClaims(token)
     62                .getPayload();
     63    }
    3664}
Note: See TracChangeset for help on using the changeset viewer.