package com.mossle.auth.web; import java.util.List; import javax.annotation.Resource; import com.mossle.api.tenant.TenantHolder; import com.mossle.auth.persistence.domain.Access; import com.mossle.auth.persistence.manager.AccessManager; import com.mossle.auth.service.AuthService; import com.mossle.core.spring.MessageHelper; import com.mossle.spi.auth.ResourcePublisher; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @Controller @RequestMapping("auth") public class AccessBatchController { private AccessManager accessManager; private AuthService authService; private MessageHelper messageHelper; private ResourcePublisher resourcePublisher; private TenantHolder tenantHolder; // ~ ====================================================================== @RequestMapping("access-batch-list") public String list() { return "auth/access-batch-list"; } @RequestMapping("access-batch-input") public String input(@RequestParam("type") String type, Model model) { String hql = "from Access where type=? and tenantId=? order by priority"; List<Access> accesses = accessManager.find(hql, type, tenantHolder.getTenantId()); StringBuilder buff = new StringBuilder(); for (Access access : accesses) { String value = access.getValue(); String permStr = ""; if (access.getPerm() != null) { permStr = access.getPerm().getCode(); } buff.append(value).append(",").append(permStr).append("\n"); } String text = buff.toString(); model.addAttribute("text", text); model.addAttribute("type", type); return "auth/access-batch-input"; } @RequestMapping("access-batch-save") public String save(@RequestParam("text") String text, @RequestParam("type") String type, RedirectAttributes redirectAttributes) { authService.batchSaveAccess(text, type, tenantHolder.getTenantId()); messageHelper.addFlashMessage(redirectAttributes, "core.success.save", "保存成功"); resourcePublisher.publish(); return "redirect:/auth/access-list.do"; } // ~ ====================================================================== @Resource public void setAccessManager(AccessManager accessManager) { this.accessManager = accessManager; } @Resource public void setAuthService(AuthService authService) { this.authService = authService; } @Resource public void setMessageHelper(MessageHelper messageHelper) { this.messageHelper = messageHelper; } @Resource public void setResourcePublisher(ResourcePublisher resourcePublisher) { this.resourcePublisher = resourcePublisher; } @Resource public void setTenantHolder(TenantHolder tenantHolder) { this.tenantHolder = tenantHolder; } }