-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathJwtAuthenticationController.java
More file actions
61 lines (50 loc) · 2.22 KB
/
JwtAuthenticationController.java
File metadata and controls
61 lines (50 loc) · 2.22 KB
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
package com.example.notes.controller;
import com.example.notes.dto.JwtResponse;
import com.example.notes.dto.UserDTO;
import com.example.notes.entity.User;
import com.example.notes.jwt.JwtTokenUtil;
import com.example.notes.mapper.JwtMapper;
import com.example.notes.request.JwtRequest;
import com.example.notes.request.LoginRequest;
import com.example.notes.service.JwtUserDetailsService;
import com.example.notes.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
@RestController
public class JwtAuthenticationController {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private JwtTokenUtil jwtTokenUtil;
@Autowired
private JwtUserDetailsService userDetailsService;
@Autowired
private JwtMapper jwtMapper;
@Autowired
private UserService userService;
@ResponseStatus(HttpStatus.ACCEPTED)
@RequestMapping(value = "/authenticate", method = RequestMethod.POST)
public ResponseEntity<?> createAuthenticationToken(HttpServletResponse response, @RequestBody LoginRequest loginRequest) throws Exception {
JwtRequest authenticationRequest=jwtMapper.loginRequestToJwtRequest(loginRequest);
userDetailsService.authenticate(authenticationRequest.getUsername(), authenticationRequest.getPassword());
final UserDetails userDetails = userDetailsService
.loadUserByUsername(authenticationRequest.getUsername());
final String token = jwtTokenUtil.generateToken(userDetails);
Cookie cookie=new Cookie("user",token);
response.addCookie(cookie);
return ResponseEntity.ok(new JwtResponse(token));
}
@ResponseStatus(HttpStatus.CREATED)
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ResponseEntity<?> saveUser(@RequestBody User user) throws Exception {
userService.addUser(user);
UserDTO userDto=jwtMapper.userToUserDTO(user);
return ResponseEntity.ok(userDetailsService.save(userDto));
}
}