· 5 years ago · Dec 10, 2019, 09:32 AM
1public ResponseEntity signin(@RequestBody AuthenticationRequest data) {
2String username = data.getUsername();
3 authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, data.getPassword()));
4 String token = jwtTokenProvider.createToken(userEntity, this.userRepository.findByUsername(username).orElseThrow(() -> new UsernameNotFoundException("Username " + username + "not found")).getRoles());
5
6 Map<Object, Object> model = new HashMap<>();
7 model.put("username", username);
8 model.put("token", token);
9 log.info(MessageFormat.format("User ''{0}'' logged in.", data.getUsername()));
10 return ok(model);
11}
12
13 public String createToken(UserEntity userEntity, List<String> roles) {
14
15 Claims claims = Jwts.claims().setSubject(userEntity.getUsername());
16 claims.put("roles", roles);
17 claims.put("name", userEntity.getName());
18
19 Date now = new Date();
20 Date validity = new Date(now.getTime() + validityInMilliseconds);
21
22 return Jwts.builder()
23 .setClaims(claims)
24 .setIssuedAt(now)
25 .setExpiration(validity)
26 .signWith(SignatureAlgorithm.HS256, secretKey)
27 .compact();
28 }