JwtAuthenController
Wed Feb 01 2023 03:28:27 GMT+0000 (Coordinated Universal Time)
Saved by @namnt
package Viettel.authen.controller; import Viettel.authen.request.JwtRequest; import Viettel.authen.request.UserRequest; import Viettel.authen.response.JwtResponse; import Viettel.authen.security.JwtTokenUtil; import Viettel.authen.sender.DatabaseManager; import Viettel.authen.service.AuthenticateService; import Viettel.authen.service.JwtUserDetailsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.DisabledException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.web.bind.annotation.*; @RestController @CrossOrigin public class JwtAuthenController { @Autowired private AuthenticateService authenticationManager; @Autowired private JwtTokenUtil jwtTokenUtil; @Autowired DatabaseManager databaseManager; @Autowired private JwtUserDetailsService userDetailsService; @RequestMapping(value = "/generateDatabase", method = RequestMethod.GET) public void generateDatabase() { databaseManager.DatabaseManager(); } @RequestMapping(value = "/register", method = RequestMethod.POST) public ResponseEntity<?> saveUser(@RequestBody UserRequest user) throws Exception { return ResponseEntity.ok(userDetailsService.saveNewAccount(user)); } @RequestMapping(value = "/authenticate", method = RequestMethod.POST) public ResponseEntity<?> createAuthenticationToken(@RequestBody JwtRequest authenticationRequest) throws Exception { authenticate(authenticationRequest.getUsername(), authenticationRequest.getPassword()); final UserDetails userDetails = userDetailsService .loadUserByUsername(authenticationRequest.getUsername()); final String token = jwtTokenUtil.generateToken(userDetails); return ResponseEntity.ok(new JwtResponse(token)); } private void authenticate(String username, String password) throws Exception { try { authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password)); } catch (DisabledException e) { throw new Exception("USER_DISABLED", e); } catch (BadCredentialsException e) { throw new Exception("INVALID_CREDENTIALS", e); } } }
Comments