final String newPassword, final boolean justRemove) {
final SecurityContext securityContext = SecurityContextHolder.getContext();
if(securityContext == null) return;
final Authentication authentication = securityContext.getAuthentication();
if(authentication == null) return;
final Object principal = authentication.getPrincipal();
if(principal instanceof User == false) return;
final User user = (User) authentication.getPrincipal();
if(user.getUsername().equals(originalUsername)) {
if(userCache != null) {
userCache.removeUserFromCache(originalUsername);
}
if(justRemove) {
SecurityContextHolder.clearContext();
}
else {
final UsernamePasswordAuthenticationToken token =
new UsernamePasswordAuthenticationToken(newUsername, newPassword);
token.setDetails(authentication.getDetails());
SecurityContextHolder.getContext().setAuthentication(token);
}
log.info((justRemove ? "Removed" : "Reset") + " security context for user: " + originalUsername);
}