@Override public void updateUser(UserDetails user) { inMemManager.updateUser(user); User userToUpdate = userRepository.findFirstByUsername(user.getUsername()); userToUpdate.setPassword(user.getPassword()); for (GrantedAuthority authority : user.getAuthorities()) { StringTokenizer stringTokenizer = new StringTokenizer(authority.getAuthority(), ":"); String rl = stringTokenizer.nextToken(); String pj = stringTokenizer.nextToken(); boolean found = false; for (Role role : userToUpdate.getRoles()) { if (role.getProject().equals(pj)) { role.setRole(Role.RoleEnum.valueOf(rl)); found = true; } } if (!found) { Role role = new Role(); role.setRole(Role.RoleEnum.valueOf(rl)); role.setProject(pj); userToUpdate.getRoles().add(role); } } userRepository.save(userToUpdate); }