Verbessere Codequalität und Sicherheit durch Refactoring, Hinzufügen von ESLint-Regeln und Aktualisierung der OSV-Scanner-Konfiguration
All checks were successful
Code Analysis and Production Deploy / analyze (push) Successful in 6m45s
Code Analysis and Production Deploy / deploy-production (push) Has been skipped
Code Analysis and Production Deploy / deploy-test (push) Successful in 2m57s

This commit is contained in:
Torsten Schulz (local)
2026-07-17 09:08:42 +02:00
parent d260f00756
commit 30465c7833
25 changed files with 40 additions and 53 deletions

View File

@@ -167,6 +167,7 @@
</span>
</div>
<!-- nosemgrep: javascript.vue.security.audit.xss.templates.avoid-v-html -->
<!-- eslint-disable-next-line vue/no-v-html -->
<div
class="text-sm text-gray-600 prose prose-sm max-w-none mb-3"
v-html="useSanitizeHtml(post.content.substring(0, 200) + (post.content.length > 200 ? '...' : ''))"

View File

@@ -362,7 +362,6 @@
<script setup>
import { ref, computed, onMounted } from 'vue'
import { Users } from 'lucide-vue-next'
const route = useRoute()

View File

@@ -124,11 +124,9 @@
</template>
<script setup>
import { User, Users, Newspaper, Check, Calendar } from 'lucide-vue-next'
import { User, Users, Newspaper, Calendar } from 'lucide-vue-next'
import { ref, onMounted } from 'vue'
const authStore = useAuthStore()
const birthdays = ref([])
const loadingBirthdays = ref(true)

View File

@@ -1000,11 +1000,6 @@ const canEdit = computed(() => {
return authStore.hasAnyRole('admin', 'vorstand')
})
const canViewContactData = computed(() => {
// Explicitly check for 'vorstand' role only
return authStore.hasRole('vorstand')
})
const isBirthdateRequired = computed(() => {
return !editingMember.value || Boolean(editingMember.value?.geburtsdatum)
})

View File

@@ -162,8 +162,6 @@ const selectedGroup = computed(() => {
})
const isLoggedIn = computed(() => authStore.isLoggedIn)
const userEmail = computed(() => authStore.user?.email || '')
const userName = computed(() => authStore.user?.name || '')
async function loadGroups() {
try {

View File

@@ -394,7 +394,6 @@ const formData = ref({
const isLoading = ref(false)
const errorMessage = ref('')
const successMessage = ref('')
const usePasskey = ref(false)
const isPasskeySupported = ref(false)
const passkeySupportReason = ref('')
const setPasswordForPasskey = ref(true)
@@ -424,7 +423,6 @@ const handleFormSubmit = (event) => {
// console.log('[DEBUG] Calling handleRegister...')
handleRegister()
}
const showDebugInfo = ref(false)
const debugChallenge = ref('')
const debugRpId = ref('')
const debugRegistrationId = ref('')
@@ -697,8 +695,6 @@ const handleRegisterWithPasskey = async () => {
debugSmartphoneUrl.value = `${window.location.origin}/passkey-register-cross-device?registrationId=${pre.registrationId}`
}
showDebugInfo.value = true
console.log('[DEBUG] QR-Code Info (for Cross-Device):', {
challenge: pre.options?.challenge,
challengeLength: pre.options?.challenge?.length,

View File

@@ -5,6 +5,7 @@
Geschichte
</h1>
<!-- nosemgrep: javascript.vue.security.audit.xss.templates.avoid-v-html -->
<!-- eslint-disable-next-line vue/no-v-html -->
<div
class="prose prose-lg max-w-none"
v-html="content"

View File

@@ -6,6 +6,7 @@
</h1>
<!-- nosemgrep: javascript.vue.security.audit.xss.templates.avoid-v-html -->
<!-- eslint-disable-next-line vue/no-v-html -->
<div
class="prose prose-lg max-w-none mb-8"
v-html="content"

View File

@@ -5,6 +5,7 @@
TT-Regeln
</h1>
<!-- nosemgrep: javascript.vue.security.audit.xss.templates.avoid-v-html -->
<!-- eslint-disable-next-line vue/no-v-html -->
<div
class="prose prose-lg max-w-none"
v-html="content"

View File

@@ -5,6 +5,7 @@
Über uns
</h1>
<!-- nosemgrep: javascript.vue.security.audit.xss.templates.avoid-v-html -->
<!-- eslint-disable-next-line vue/no-v-html -->
<div
class="prose prose-lg max-w-none"
v-html="content"