Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package expert.healthcareanalytics.medicaid.controller;
- import expert.healthcareanalytics.medicaid.configuration.security.jwt.JwtTokenProvider;
- import expert.healthcareanalytics.medicaid.domain.repository.UserRepository;
- import expert.healthcareanalytics.medicaid.domain.vo.AuthenticationRequest;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.http.ResponseEntity;
- import org.springframework.security.authentication.AuthenticationManager;
- import org.springframework.security.authentication.BadCredentialsException;
- import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
- import org.springframework.security.core.AuthenticationException;
- import org.springframework.security.core.GrantedAuthority;
- import org.springframework.security.core.annotation.AuthenticationPrincipal;
- import org.springframework.security.core.userdetails.UserDetails;
- import org.springframework.security.core.userdetails.UsernameNotFoundException;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- import java.util.HashMap;
- import java.util.Map;
- import static java.util.stream.Collectors.toList;
- import static org.springframework.http.ResponseEntity.ok;
- @RestController
- public class AuthController {
- @Autowired
- AuthenticationManager authenticationManager;
- @Autowired
- JwtTokenProvider jwtTokenProvider;
- @Autowired
- UserRepository userRepository;
- @RequestMapping(method = RequestMethod.POST, value = "/signin")
- public ResponseEntity signin(@RequestBody AuthenticationRequest data) {
- try {
- String username = data.getUsername();
- String password = data.getPassword();
- UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(username, password);
- authenticationManager.authenticate(authentication);
- String token = jwtTokenProvider.createToken(username, this.userRepository.findByUsername(username)
- .orElseThrow(() -> new UsernameNotFoundException("Username " + username + "not found")).getRole());
- Map<Object, Object> model = new HashMap<>();
- model.put("username", username);
- model.put("token", token);
- return ok(model);
- } catch (AuthenticationException e) {
- throw new BadCredentialsException("Invalid username/password supplied");
- }
- }
- @RequestMapping(method = RequestMethod.GET, value = "/me")
- public ResponseEntity currentUser(@AuthenticationPrincipal UserDetails userDetails){
- Map<Object, Object> model = new HashMap<>();
- model.put("username", userDetails.getUsername());
- model.put("roles", userDetails.getAuthorities()
- .stream()
- .map(GrantedAuthority::getAuthority)
- .collect(toList())
- );
- return ok(model);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement