🔒 Add Discord OAuth permission check for developer tools access

This commit is contained in:
2026-01-30 05:40:37 +00:00
parent 616524d5ef
commit 7c512f410f

View File

@@ -121,9 +121,11 @@
<script setup> <script setup>
import { ref, computed, onMounted, onUnmounted } from 'vue'; import { ref, computed, onMounted, onUnmounted } from 'vue';
import { useAuth } from '../composables/useAuth.js'; import { useAuth } from '../composables/useAuth.js';
import { useDiscordOAuth } from '../composables/useDiscordOAuth.js';
import { useFeatureFlags } from '../composables/useFeatureFlags.js'; import { useFeatureFlags } from '../composables/useFeatureFlags.js';
const { user, token } = useAuth(); const { user, token } = useAuth();
const discord = useDiscordOAuth();
const { const {
getFlags, getFlags,
toggle: toggleFlagOverride, toggle: toggleFlagOverride,
@@ -135,11 +137,18 @@ const isOpen = ref(false);
// Show in development mode or when authenticated with permission in production // Show in development mode or when authenticated with permission in production
const isAvailable = computed(() => { const isAvailable = computed(() => {
const isDev = process.env.NODE_ENV === 'development'; const isDev = process.env.NODE_ENV === 'development';
const hasPermission = user.value?.permissions?.includes(
// Check JWT token permissions
const hasJwtPermission = user.value?.permissions?.includes(
'developer_tools.view' 'developer_tools.view'
); );
// Check Discord OAuth permissions
const hasDiscordPermission = discord.hasDevAccess();
const hasPermission = hasJwtPermission || hasDiscordPermission;
const isAuthenticatedInProduction = const isAuthenticatedInProduction =
process.env.NODE_ENV === 'production' && user.value && hasPermission; process.env.NODE_ENV === 'production' && hasPermission;
return isDev || isAuthenticatedInProduction; return isDev || isAuthenticatedInProduction;
}); });
const nodeEnv = computed(() => process.env.NODE_ENV || 'unknown'); const nodeEnv = computed(() => process.env.NODE_ENV || 'unknown');