package com.qprogramming.tasq.home; import com.qprogramming.tasq.account.LastVisited; import com.qprogramming.tasq.account.LastVisitedService; import com.qprogramming.tasq.support.Utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.annotation.Secured; import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ModelAttribute; import java.util.Collections; import java.util.List; @Secured("ROLE_USER") @ControllerAdvice public class HomeControllerAdvice { private static final List<LastVisited> emptyList = Collections.emptyList(); private LastVisitedService visitedSrv; @Autowired public HomeControllerAdvice(LastVisitedService visitedSrv) { this.visitedSrv = visitedSrv; } @Transactional @ModelAttribute("lastProjects") public List<LastVisited> getLastProjects() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (!(authentication instanceof AnonymousAuthenticationToken)) { return visitedSrv.getAccountLastProjects(Utils.getCurrentAccount().getId()); } return emptyList; } @Transactional @ModelAttribute("lastTasks") public List<LastVisited> getLastTasks() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (!(authentication instanceof AnonymousAuthenticationToken)) { return visitedSrv.getAccountLastTasks(Utils.getCurrentAccount().getId()); } return emptyList; } }