package edu.asu.spring.quadriga.web.workbench; import java.security.Principal; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import edu.asu.spring.quadriga.aspects.annotations.AccessPolicies; import edu.asu.spring.quadriga.aspects.annotations.CheckedElementType; import edu.asu.spring.quadriga.aspects.annotations.ElementAccessPolicy; import edu.asu.spring.quadriga.aspects.annotations.InjectProject; import edu.asu.spring.quadriga.aspects.annotations.InjectProjectById; import edu.asu.spring.quadriga.aspects.annotations.ProjectIdentifier; import edu.asu.spring.quadriga.domain.resolver.IProjectHandleResolver; import edu.asu.spring.quadriga.domain.workbench.IProject; import edu.asu.spring.quadriga.service.resolver.IProjectHandleResolverManager; import edu.asu.spring.quadriga.service.workbench.IModifyProjectManager; import edu.asu.spring.quadriga.service.workbench.IRetrieveProjectManager; import edu.asu.spring.quadriga.web.login.RoleNames; @Controller public class AddProjectHandleResolverController { @Autowired private IProjectHandleResolverManager resolverManager; @Autowired private IModifyProjectManager projectManager; @RequestMapping(value = "/auth/workbench/{projectid}/resolvers/add", method = RequestMethod.GET) @InjectProjectById @AccessPolicies({ @ElementAccessPolicy(type = CheckedElementType.PROJECT, paramIndex = 1, userRole = { RoleNames.ROLE_COLLABORATOR_OWNER, RoleNames.ROLE_PROJ_COLLABORATOR_ADMIN}) }) public String preparePage(@ProjectIdentifier @PathVariable("projectid") String projectid, @InjectProject IProject project, Principal principal, Model model) { List<IProjectHandleResolver> resolvers = resolverManager.getProjectHandleResolvers(principal.getName()); model.addAttribute("resolvers", resolvers); model.addAttribute("project", project); return "auth/workbench/resolvers/add"; } @RequestMapping(value = "/auth/workbench/{projectid}/resolvers/add", method = RequestMethod.POST) @InjectProjectById @AccessPolicies({ @ElementAccessPolicy(type = CheckedElementType.PROJECT, paramIndex = 1, userRole = { RoleNames.ROLE_COLLABORATOR_OWNER, RoleNames.ROLE_PROJ_COLLABORATOR_ADMIN}) }) public String addResolver(@ProjectIdentifier @PathVariable("projectid") String projectid, @InjectProject IProject project, Principal principal, Model model, @RequestParam("resolverId") String resolverId) { if (resolverId != null) { projectManager.addResolverToProject(resolverId, project); } return "redirect:/auth/workbench/projects/" + projectid; } }