From 5ecaf5095ecd4678dd3e05abcc5b0781f6fddb93 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sat, 12 Jul 2025 15:13:35 +0900
Subject: enhance: ウォーターマーク機能をロールで制御可能に
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/frontend/src/composables/use-uploader.ts | 7 +++++--
packages/frontend/src/pages/admin/roles.editor.vue | 20 ++++++++++++++++++++
packages/frontend/src/pages/admin/roles.vue | 8 ++++++++
packages/frontend/src/pages/settings/drive.vue | 2 +-
4 files changed, 34 insertions(+), 3 deletions(-)
(limited to 'packages/frontend')
diff --git a/packages/frontend/src/composables/use-uploader.ts b/packages/frontend/src/composables/use-uploader.ts
index 6f4ed81f82..826d8c5203 100644
--- a/packages/frontend/src/composables/use-uploader.ts
+++ b/packages/frontend/src/composables/use-uploader.ts
@@ -104,6 +104,8 @@ export function useUploader(options: {
multiple?: boolean;
features?: UploaderFeatures;
} = {}) {
+ const $i = ensureSignin();
+
const events = new EventEmitter<{
'itemUploaded': (ctx: { item: UploaderItem; }) => void;
}>();
@@ -132,7 +134,7 @@ export function useUploader(options: {
uploaded: null,
uploadFailed: false,
compressionLevel: prefer.s.defaultImageCompressionLevel,
- watermarkPresetId: uploaderFeatures.value.watermark ? prefer.s.defaultWatermarkPresetId : null,
+ watermarkPresetId: uploaderFeatures.value.watermark && $i.policies.watermarkAvailable ? prefer.s.defaultWatermarkPresetId : null,
file: markRaw(file),
});
const reactiveItem = items.value.at(-1)!;
@@ -264,6 +266,7 @@ export function useUploader(options: {
if (
uploaderFeatures.value.watermark &&
+ $i.policies.watermarkAvailable &&
WATERMARK_SUPPORTED_TYPES.includes(item.file.type) &&
!item.preprocessing &&
!item.uploading &&
@@ -500,7 +503,7 @@ export function useUploader(options: {
let preprocessedFile: Blob | File = item.file;
- const needsWatermark = item.watermarkPresetId != null && WATERMARK_SUPPORTED_TYPES.includes(preprocessedFile.type);
+ const needsWatermark = item.watermarkPresetId != null && WATERMARK_SUPPORTED_TYPES.includes(preprocessedFile.type) && $i.policies.watermarkAvailable;
const preset = prefer.s.watermarkPresets.find(p => p.id === item.watermarkPresetId);
if (needsWatermark && preset != null) {
const canvas = window.document.createElement('canvas');
diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue
index a266e1df6f..c172e22688 100644
--- a/packages/frontend/src/pages/admin/roles.editor.vue
+++ b/packages/frontend/src/pages/admin/roles.editor.vue
@@ -780,6 +780,26 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+