package org.brixcms.plugin.usermgmt.user.service; import java.util.Set; import javax.persistence.EntityManager; import org.brixcms.plugin.usermgmt.AbstractManagementService; import org.brixcms.plugin.usermgmt.role.RoleRepository; import org.brixcms.plugin.usermgmt.user.User; import org.brixcms.plugin.usermgmt.user.UserRepository; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * @author dan.simko@gmail.com */ @Service public class UserServiceImpl extends AbstractManagementService<User> implements UserService { private final UserRepository userRepository; private final RoleRepository roleRepository; public UserServiceImpl(UserRepository userRepository, RoleRepository roleRepository, EntityManager em) { super(em); this.userRepository = userRepository; this.roleRepository = roleRepository; } @Override protected CrudRepository<User, Long> getRepository() { return userRepository; } @Override @Transactional public void assignRoles(User user, Set<Long> assignedRolesIds) { User freshUser = userRepository.findOne(user.getId()); freshUser.getRoles().clear(); for (Long roleId : assignedRolesIds) { freshUser.getRoles().add(roleRepository.findOne(roleId)); } save(freshUser); } }