From b17057cc4176c6453ebec85b96e4ed07a24449cc Mon Sep 17 00:00:00 2001
From: saopig1 <4x7sw862st@gmail.com>
Date: Thu, 25 Jun 2026 12:15:09 +0800
Subject: [PATCH] feat(web/player): per-button transport gating honoring guest
flags
---
web/src/components/Player.vue | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/web/src/components/Player.vue b/web/src/components/Player.vue
index dc502c6..90fb7de 100644
--- a/web/src/components/Player.vue
+++ b/web/src/components/Player.vue
@@ -6,7 +6,7 @@
{{ formatTime(currentElapsed) }}
-
-
-
-
-
+
+
can('player.control'));
+const canTransport = computed(() => can('player.control') || guestCan('transport'));
+const canSkip = computed(() => can('player.control') || guestCan('skip'));
+const canModeCtl = computed(() => can('player.control') || guestCan('playMode'));
const store = usePlayerStore();
const activeBot = computed(() => store.activeBot);
@@ -144,7 +147,7 @@ function updateProgress() {
}
async function onProgressClick(e: MouseEvent) {
- if (!canControl.value) return; // seek requires player.control
+ if (!canTransport.value) return; // seek requires player.control
const bar = progressBarRef.value;
if (!bar) return;
const rect = bar.getBoundingClientRect();