diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/utility/JwtTokenProvider.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/utility/JwtTokenProvider.java new file mode 100644 index 0000000..11bf83e --- /dev/null +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/utility/JwtTokenProvider.java @@ -0,0 +1,32 @@ +package net.shyshkin.study.fullstack.supportportal.backend.utility; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.algorithms.Algorithm; +import net.shyshkin.study.fullstack.supportportal.backend.domain.UserPrincipal; +import org.springframework.beans.factory.annotation.Value; + +import java.util.Date; + +import static net.shyshkin.study.fullstack.supportportal.backend.constant.SecurityConstants.*; + +public class JwtTokenProvider { + + @Value("${app.jwt.secret}") + private String secret; + + public String generateJwtToken(UserPrincipal userPrincipal) { + String[] claims = getClaimsFromUser(userPrincipal); + return JWT.create() + .withIssuer(GET_ARRAYS_LLC) + .withAudience(GET_ARRAYS_ADMINISTRATION) + .withIssuedAt(new Date()) + .withSubject(userPrincipal.getUsername()) + .withArrayClaim(AUTHORITIES, claims) + .withExpiresAt(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) + .sign(Algorithm.HMAC512(secret)); + } + + private String[] getClaimsFromUser(UserPrincipal userPrincipal) { + return new String[0]; + } +} diff --git a/support-portal-backend/src/main/resources/application.yml b/support-portal-backend/src/main/resources/application.yml index c11bf0b..a7cb02c 100644 --- a/support-portal-backend/src/main/resources/application.yml +++ b/support-portal-backend/src/main/resources/application.yml @@ -10,7 +10,9 @@ spring: properties: hibernate: dialect: org.hibernate.dialect.MySQL8Dialect - +app: + jwt: + secret: ${random.value} --- spring: config: