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<byte[]> 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);
|
}
|
}
|