Hi,
in your code there is an error:
java.lang.NullPointerException: Cannot invoke "com.example.api.model.User.getUserName()" because "user" is null
at com.example.api.service.JwtUserDetailsService.loadUserByUsername(JwtUserDetailsService.java:29) ~[classes/:na]
at com.example.api.controller.AuthenticationController.saveUser(AuthenticationController.java:94) ~[classes/:na]
curl --location --request POST 'http://localhost:8080/auth/register'
--form 'first_name="bob"'
--form 'last_name="my_lastname"'
--form 'user_name="jjj199"'
--form 'email="[email protected]"'
--form 'password="thepassword"'
the controller
@PostMapping("/register")
public ResponseEntity<?> saveUser(@RequestParam("first_name") String firstName,
@RequestParam("last_name") String lastName,
@RequestParam("user_name") String userName, @RequestParam("email") String email
, @RequestParam("password") String password) {
Map<String, Object> responseMap = new HashMap<>();
User user = new User();
user.setFirstName(firstName);
user.setLastName(lastName);
user.setEmail(email);
user.setPassword(new BCryptPasswordEncoder().encode(password));
user.setRole("USER");
user.setUserName(userName);
UserDetails userDetails = userDetailsService.loadUserByUsername(userName);
String token = jwtTokenUtil.generateToken(userDetails);
userRepository.save(user);
responseMap.put("error", false);
responseMap.put("username", userName);
responseMap.put("message", "Account created successfully");
responseMap.put("token", token);
return ResponseEntity.ok(responseMap);
}
The function calls userDetailsService.loadUserByUsername(userName);
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
com.example.api.model.User user = userRepository.findUserByUsername(username);
List<GrantedAuthority> authorityList = new ArrayList<>();
authorityList.add(new SimpleGrantedAuthority("USER_ROLE"));
return new User(user.getUserName(), user.getPassword(), authorityList);
}
But "com.example.api.model.User user" is null because the user does not exist... user.getPassword() NULLPOINTER
good first issue