package org.brixcms.plugin.usermgmt.role.service; import java.util.Set; import javax.persistence.EntityManager; import org.brixcms.plugin.usermgmt.AbstractManagementService; import org.brixcms.plugin.usermgmt.role.PermissionRepository; import org.brixcms.plugin.usermgmt.role.Role; import org.brixcms.plugin.usermgmt.role.RoleRepository; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * @author dan.simko@gmail.com */ @Service @Transactional public class RoleServiceImpl extends AbstractManagementService<Role> implements RoleService { private final RoleRepository roleRepository; private final PermissionRepository permissionRepository; public RoleServiceImpl(RoleRepository roleRepository, PermissionRepository permissionRepository, EntityManager em) { super(em); this.roleRepository = roleRepository; this.permissionRepository = permissionRepository; } @Override protected CrudRepository<Role, Long> getRepository() { return roleRepository; } @Override @Transactional public void assignPermissions(Role role, Set<Long> assignedPermissionsIds) { Role freshRole = roleRepository.findOne(role.getId()); freshRole.getPermissions().clear(); for (Long permissionId : assignedPermissionsIds) { freshRole.getPermissions().add(permissionRepository.findOne(permissionId)); } save(freshRole); } }