mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-08 10:27:46 +08:00
fix: restore security hardening compatibility and validation
Restore authorized rule reveal, explicit full HTTP capture and retention, video task business fields, and valid payment URLs. Add opt-in credential preservation for trusted recovery, fix frontend type contracts and async races, and eliminate PostgreSQL test fixture resource leaks. Document audit coverage and successful fmt and CI-scoped Clippy checks.
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { computed } from 'vue'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
@@ -17,7 +18,7 @@ interface Props {
|
||||
variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'
|
||||
size?: 'default' | 'sm' | 'lg' | 'icon'
|
||||
disabled?: boolean
|
||||
class?: string
|
||||
class?: ClassValue
|
||||
type?: 'button' | 'submit' | 'reset'
|
||||
}
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { computed, useAttrs, ref } from 'vue'
|
||||
import { Eye, EyeOff } from 'lucide-vue-next'
|
||||
import { cn } from '@/lib/utils'
|
||||
@@ -70,8 +71,8 @@ const emit = defineEmits<{
|
||||
}>()
|
||||
|
||||
interface Props {
|
||||
modelValue?: string | number
|
||||
class?: string
|
||||
modelValue?: string | number | null
|
||||
class?: ClassValue
|
||||
autocomplete?: string
|
||||
/**
|
||||
* 输入框尺寸
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { computed } from 'vue'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
interface Props {
|
||||
class?: string
|
||||
class?: ClassValue
|
||||
}
|
||||
|
||||
const props = defineProps<Props>()
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { SelectTrigger as SelectTriggerPrimitive } from 'radix-vue'
|
||||
import { ChevronDown } from 'lucide-vue-next'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { computed } from 'vue'
|
||||
|
||||
interface Props {
|
||||
class?: string
|
||||
class?: ClassValue
|
||||
disabled?: boolean
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import { SelectRoot as SelectRootPrimitive } from 'radix-vue'
|
||||
|
||||
interface Props {
|
||||
defaultValue?: string
|
||||
modelValue?: string
|
||||
modelValue?: string | null
|
||||
open?: boolean
|
||||
defaultOpen?: boolean
|
||||
dir?: 'ltr' | 'rtl'
|
||||
@@ -35,7 +35,7 @@ const openProp = computed(() =>
|
||||
|
||||
// modelValue 未传入时不绑定,让 radix-vue 走 uncontrolled 模式
|
||||
const modelValueProp = computed(() =>
|
||||
props.modelValue !== undefined ? { modelValue: props.modelValue } : {}
|
||||
props.modelValue !== undefined ? { modelValue: props.modelValue ?? '' } : {}
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { computed, nextTick, onBeforeUnmount, onMounted, ref, useAttrs, useSlots } from 'vue'
|
||||
import { ArrowDown, ArrowUp, ArrowUpDown, ListFilter } from 'lucide-vue-next'
|
||||
|
||||
@@ -9,7 +10,7 @@ import TableHead from './table-head.vue'
|
||||
type SortDirection = 'asc' | 'desc'
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
class?: string
|
||||
class?: ClassValue
|
||||
columnKey?: string
|
||||
sortable?: boolean
|
||||
activeKey?: string | null
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { computed } from 'vue'
|
||||
|
||||
interface Props {
|
||||
class?: string
|
||||
class?: ClassValue
|
||||
}
|
||||
|
||||
const props = defineProps<Props>()
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { computed } from 'vue'
|
||||
|
||||
interface Props {
|
||||
class?: string
|
||||
class?: ClassValue
|
||||
}
|
||||
|
||||
const props = defineProps<Props>()
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { computed } from 'vue'
|
||||
|
||||
interface Props {
|
||||
class?: string
|
||||
class?: ClassValue
|
||||
}
|
||||
|
||||
const props = defineProps<Props>()
|
||||
|
||||
@@ -13,12 +13,13 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { ClassValue } from 'clsx'
|
||||
import { computed, ref, watch, onMounted, onUnmounted, nextTick, inject, type Ref } from 'vue'
|
||||
import { cn } from '@/lib/utils'
|
||||
import { useI18n } from '@/i18n'
|
||||
|
||||
interface Props {
|
||||
class?: string
|
||||
class?: ClassValue
|
||||
}
|
||||
|
||||
const props = defineProps<Props>()
|
||||
@@ -41,7 +42,7 @@ const activeTab = inject<Ref<string>>('activeTab')
|
||||
|
||||
// 检查是否有 grid 类(由外部传入)
|
||||
const hasGridClass = computed(() => {
|
||||
return props.class?.includes('grid')
|
||||
return cn(props.class).includes('grid')
|
||||
})
|
||||
|
||||
const listClass = computed(() => {
|
||||
|
||||
Reference in New Issue
Block a user