package ru.lionarius.isdojplab.rest; import org.springframework.data.rest.core.annotation.HandleBeforeCreate; import org.springframework.data.rest.core.annotation.HandleBeforeSave; import org.springframework.data.rest.core.annotation.RepositoryEventHandler; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; import ru.lionarius.isdojplab.model.User; @Component @RepositoryEventHandler public class UserEventHandler { private final PasswordEncoder passwordEncoder; public UserEventHandler(PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } @HandleBeforeCreate public void handleBeforeCreate(User user) { encodePassword(user); } @HandleBeforeSave public void handleBeforeSave(User user) { encodePassword(user); } private void encodePassword(User user) { if (user.getPassword() != null) { user.setPassword(passwordEncoder.encode(user.getPassword())); } } }