/**
*
*/
package net.conselldemallorca.helium.core.helper;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.security.acls.domain.BasePermission;
import org.springframework.security.acls.model.Permission;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import net.conselldemallorca.helium.core.helper.PermisosHelper.ObjectIdentifierExtractor;
import net.conselldemallorca.helium.core.model.hibernate.Entorn;
import net.conselldemallorca.helium.v3.core.api.dto.EntornDto;
import net.conselldemallorca.helium.v3.core.api.exception.NoTrobatException;
import net.conselldemallorca.helium.v3.core.repository.EntornRepository;
/**
* Helper per a enviament de correus
*
* @author Limit Tecnologies <limit@limit.es>
*/
@Component
public class UsuariActualHelper {
@Resource
private EntornRepository entornRepository;
@Resource(name="permisosHelperV3")
private PermisosHelper permisosHelper;
@Resource
private ConversioTipusHelper conversioTipusHelper;
@Cacheable(value="entornsUsuariActual")
public List<EntornDto> findEntornsActiusPermesos(String usuariCodi) {
List<Entorn> entorns = entornRepository.findByActiuTrue();
permisosHelper.filterGrantedAny(
entorns,
new ObjectIdentifierExtractor<Entorn>() {
public Long getObjectIdentifier(Entorn entorn) {
return entorn.getId();
}
},
Entorn.class,
new Permission[] {BasePermission.ADMINISTRATION, BasePermission.READ},
SecurityContextHolder.getContext().getAuthentication());
return conversioTipusHelper.convertirList(
entorns,
EntornDto.class);
}
@CacheEvict(value = "entornsUsuariActual", allEntries = true)
public void netejarCacheUsuariTots() {
}
@CacheEvict(value = "entornsUsuariActual")
public void netejarCacheUsuari(String usuariCodi) {
}
public String getUsuariActual() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null) {
return auth.getName();
} else {
throw new NoTrobatException(Authentication.class);
}
}
}