source: trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/UserController.java

Last change on this file was b738035, checked in by Ema <ema_spirova@…>, 2 years ago

signup/login server errors on front and remove location from planner

  • Property mode set to 100644
File size: 3.2 KB
Line 
1package finki.diplomska.tripplanner.web.rest;
2
3import finki.diplomska.tripplanner.models.User;
4import finki.diplomska.tripplanner.models.dto.UserDto;
5import finki.diplomska.tripplanner.payload.JWTLoginSucessReponse;
6import finki.diplomska.tripplanner.payload.LoginRequest;
7import finki.diplomska.tripplanner.security.JwtTokenProvider;
8import finki.diplomska.tripplanner.security.SecurityConstants;
9import finki.diplomska.tripplanner.service.UserService;
10import finki.diplomska.tripplanner.service.impl.MapValidationErrorService;
11import finki.diplomska.tripplanner.validator.UserValidator;
12import org.springframework.beans.factory.annotation.Autowired;
13import org.springframework.http.HttpStatus;
14import org.springframework.http.ResponseEntity;
15import org.springframework.security.authentication.AuthenticationManager;
16import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
17import org.springframework.security.core.context.SecurityContextHolder;
18import org.springframework.validation.BindingResult;
19import org.springframework.web.bind.annotation.*;
20import org.springframework.security.core.Authentication;
21
22import javax.validation.Valid;
23import java.util.List;
24import java.util.Optional;
25
26@RestController
27@CrossOrigin(origins = "http://localhost:4200")
28@RequestMapping(value = "/api/users")
29public class UserController {
30
31 @Autowired
32 private MapValidationErrorService mapValidationErrorService;
33
34 @Autowired
35 private UserService userService;
36
37 @Autowired
38 private UserValidator userValidator;
39
40 @Autowired
41 private JwtTokenProvider tokenProvider;
42
43 @Autowired
44 private AuthenticationManager authenticationManager;
45
46 @PostMapping(value = "/login")
47 public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest loginRequest, BindingResult result){
48 ResponseEntity<?> errorMap = mapValidationErrorService.MapValidationService(result);
49 if(errorMap != null) return errorMap;
50
51 Authentication authentication = authenticationManager.authenticate(
52 new UsernamePasswordAuthenticationToken(
53 loginRequest.getUsername(),
54 loginRequest.getPassword()
55 )
56 );
57 SecurityContextHolder.getContext().setAuthentication(authentication);
58 String jwt = SecurityConstants.TOKEN_PREFIX + tokenProvider.generateToken(authentication);
59 return ResponseEntity.ok(new JWTLoginSucessReponse(true, jwt));
60 }
61
62 @PostMapping(value = "/register")
63 public ResponseEntity<?> registerUser(@Valid @RequestBody User user, BindingResult result){
64 // Validate passwords match
65 userValidator.validate(user, result);
66 ResponseEntity<?> errorMap = mapValidationErrorService.MapValidationService(result);
67 if(errorMap != null)return errorMap;
68 User newUser = userService.saveUser(user);
69 return new ResponseEntity<User>(newUser, HttpStatus.CREATED);
70 }
71
72 @GetMapping(value = "/usernames")
73 public List<String> getAllUsernames (){
74 return this.userService.getAllUsernames();
75 }
76
77 @GetMapping(value = "/password")
78 public Optional<String> getPassword(@RequestBody UserDto userDto){
79
80 return this.userService.getPassword(userDto);
81 }
82
83}
Note: See TracBrowser for help on using the repository browser.