diff --git a/src/main/java/ru/soune/nocopy/configuration/security/SecurityConfig.java b/src/main/java/ru/soune/nocopy/configuration/security/SecurityConfig.java index 7fd7b77..c4db447 100644 --- a/src/main/java/ru/soune/nocopy/configuration/security/SecurityConfig.java +++ b/src/main/java/ru/soune/nocopy/configuration/security/SecurityConfig.java @@ -25,7 +25,7 @@ public class SecurityConfig { .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .authorizeHttpRequests(auth -> auth - .requestMatchers("api/v{version}/files/public-download/**").permitAll() // логин, регистрация + .requestMatchers("api/v{version}/files/public-download/**").permitAll() .requestMatchers("/api/files/public/**").permitAll() .requestMatchers("/api/auth/**").permitAll() .requestMatchers("/api/file/link/**").permitAll() diff --git a/src/main/java/ru/soune/nocopy/util/JwtUtil.java b/src/main/java/ru/soune/nocopy/util/JwtUtil.java index 42aa317..dd3387a 100644 --- a/src/main/java/ru/soune/nocopy/util/JwtUtil.java +++ b/src/main/java/ru/soune/nocopy/util/JwtUtil.java @@ -10,8 +10,6 @@ import org.springframework.stereotype.Component; import javax.crypto.SecretKey; import java.nio.charset.StandardCharsets; import java.util.Date; -import java.util.HashMap; -import java.util.Map; @Component public class JwtUtil { @@ -22,53 +20,44 @@ public class JwtUtil { @Value("${jwt.expiration:3600000}") private Long expiration; + private SecretKey getSigningKey() { return Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8)); } public String generateToken(Long userId, String email) { - Map claims = new HashMap<>(); - claims.put("userId", userId); - claims.put("email", email); - return Jwts.builder() - .setClaims(claims) .setSubject(email) + .claim("userId", userId) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + expiration)) - .signWith(getSigningKey()) + .signWith(getSigningKey(), SignatureAlgorithm.HS256) .compact(); } + public Claims extractClaims(String token) { + return Jwts.parser() + .setSigningKey(getSigningKey()) + .build() + .parseClaimsJws(token) + .getBody(); + } public String extractEmail(String token) { - return extractAllClaims(token).getSubject(); + return extractClaims(token).getSubject(); } public Long extractUserId(String token) { - return extractAllClaims(token).get("userId", Long.class); + return extractClaims(token).get("userId", Long.class); } - public String extractRole(String token) { - return extractAllClaims(token).get("role", String.class); + public boolean isTokenExpired(String token) { + return extractClaims(token).getExpiration().before(new Date()); } - public Date extractExpiration(String token) { - return extractAllClaims(token).getExpiration(); - } - - private Claims extractAllClaims(String token) { - return Jwts.parser() - .verifyWith(getSigningKey()) - .build() - .parseSignedClaims(token) - .getPayload(); - } - - public Boolean validateToken(String token) { + public boolean validateToken(String token) { try { - extractAllClaims(token); - return !extractExpiration(token).before(new Date()); + return !isTokenExpired(token); } catch (Exception e) { return false; }