-
Notifications
You must be signed in to change notification settings - Fork 0
/
TokenIssuerService.java
64 lines (55 loc) · 1.71 KB
/
TokenIssuerService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.github.yangricardo.api_spring_boot.modules.auth.services;
import com.github.yangricardo.api_spring_boot.modules.users.model.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Service;
@Service
public class TokenIssuerService {
private String expiration;
private String secret;
private String issuer;
@Autowired
public TokenIssuerService(
@Value("${jwt.expiration}") String expiration,
@Value("${jwt.issuer}") String issuer,
@Value("${jwt.secret}") String secret
) {
this.expiration = expiration;
this.secret = secret;
this.issuer = issuer;
}
public String generateToken(Authentication authentication) {
User user = (User) authentication.getPrincipal();
Date now = new Date();
Date exp = new Date(now.getTime() + Long.parseLong(expiration));
return Jwts
.builder()
.setIssuer(this.issuer)
.setSubject(user.getId().toString())
.setIssuedAt(new Date())
.setExpiration(exp)
.signWith(SignatureAlgorithm.HS256, secret)
.compact();
}
public boolean isTokenValid(String token) {
try {
Jwts.parser().setSigningKey(secret).parseClaimsJws(token);
return true;
} catch (Exception e) {
return false;
}
}
public Long getTokenId(String token) {
Claims body = Jwts
.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
return Long.valueOf(body.getSubject());
}
}