package jnpf.elnController; import cn.dev33.satoken.same.SaSameUtil; import jnpf.base.ActionResult; import jnpf.eln.TemplateEditabilityApi; import jnpf.elnService.template.ElnTemplateAnnotationAccessService; import jnpf.elnService.template.ElnTemplateEditabilityService; import jnpf.util.NoDataSourceBind; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/Internal/eln/template") public class ElnTemplateEditabilityController implements TemplateEditabilityApi { private final SameTokenChecker sameTokenChecker; private final ElnTemplateEditabilityService editabilityService; private final ElnTemplateAnnotationAccessService annotationAccessService; @Autowired public ElnTemplateEditabilityController(ElnTemplateEditabilityService editabilityService, ElnTemplateAnnotationAccessService annotationAccessService) { this(SaSameUtil::checkCurrentRequestToken, editabilityService, annotationAccessService); } ElnTemplateEditabilityController(SameTokenChecker sameTokenChecker, ElnTemplateEditabilityService editabilityService, ElnTemplateAnnotationAccessService annotationAccessService) { this.sameTokenChecker = sameTokenChecker; this.editabilityService = editabilityService; this.annotationAccessService = annotationAccessService; } @Override @PostMapping("/editability") @NoDataSourceBind public ActionResult editable(@RequestParam("tenantId") String tenantId, @RequestParam("templateId") String templateId, @RequestParam("fileId") String fileId) { sameTokenChecker.check(); return ActionResult.success(editabilityService.isEditable(tenantId, templateId, fileId)); } @Override @PostMapping("/annotationAccess") @NoDataSourceBind public ActionResult canAnnotate(@RequestParam("tenantId") String tenantId, @RequestParam("userId") String userId, @RequestParam("templateId") String templateId, @RequestParam("fileId") String fileId) { sameTokenChecker.check(); return ActionResult.success(annotationAccessService.canAnnotate( tenantId, userId, templateId, fileId)); } @FunctionalInterface interface SameTokenChecker { void check(); } }