source: src/main/java/com/example/rezevirajmasa/demo/config/UserAuthProvider.java@ 5a9c93b

main
Last change on this file since 5a9c93b was 5a9c93b, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Authorization layer

  • Property mode set to 100644
File size: 1.7 KB
Line 
1package com.example.rezevirajmasa.demo.config;
2
3import com.auth0.jwt.JWT;
4import com.auth0.jwt.JWTVerifier;
5import com.auth0.jwt.algorithms.Algorithm;
6import com.auth0.jwt.interfaces.DecodedJWT;
7import com.example.rezevirajmasa.demo.dto.UserDto;
8import com.example.rezevirajmasa.demo.service.UserService;
9import jakarta.annotation.PostConstruct;
10import lombok.RequiredArgsConstructor;
11import org.springframework.beans.factory.annotation.Value;
12import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
13import org.springframework.security.core.Authentication;
14import org.springframework.stereotype.Component;
15
16import java.util.Base64;
17import java.util.Collections;
18import java.util.Date;
19
20@RequiredArgsConstructor
21@Component
22public class UserAuthProvider {
23 @Value("${security.jwt.token.secret-key:secret:value}")
24 private String secretKey;
25
26 private final UserService userService;
27
28 @PostConstruct
29 protected void init() {
30 secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes());
31 }
32
33 public String createToken(String login) {
34 Date now = new Date();
35 Date validity = new Date(now.getTime() + 3_600_000);
36 return JWT.create()
37 .withIssuer(login)
38 .withIssuedAt(now)
39 .withExpiresAt(validity)
40 .sign(Algorithm.HMAC256(secretKey));
41 }
42
43 public Authentication validateToken(String token) {
44 JWTVerifier verifier = JWT.require(Algorithm.HMAC256(secretKey)).build();
45
46 DecodedJWT decoded = verifier.verify(token);
47
48 UserDto user = userService.findByEmail(decoded.getIssuer());
49
50 return new UsernamePasswordAuthenticationToken(user, null, Collections.emptyList());
51 }
52}
Note: See TracBrowser for help on using the repository browser.