package jnpf.bizcommon.onlyoffice.controller; import cn.dev33.satoken.same.SaSameUtil; import jnpf.base.ActionResult; import jnpf.bizcommon.onlyoffice.service.impl.OnlyOfficePageWatermarkRenderer; import jnpf.onlyoffice.PageWatermarkApi; import jnpf.onlyoffice.PageWatermarkRequest; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor public class OnlyOfficePageWatermarkController implements PageWatermarkApi { private final OnlyOfficePageWatermarkRenderer renderer; @Override @PostMapping("/Internal/onlyoffice/page-watermark/render") public ActionResult render(@RequestBody PageWatermarkRequest request) { SaSameUtil.checkCurrentRequestToken(); return ActionResult.success(renderer.render(request)); } /** Fixed code without a ticket; job data requires its own short-lived, scope-checked ticket. */ @GetMapping(value = "/onlyoffice/watermark/script.js", produces = "application/javascript") public String script(@RequestParam(required = false) String jobTicket, jakarta.servlet.http.HttpServletResponse response) { response.setHeader("Cache-Control", "no-store"); return renderer.script(jobTicket); } }