Files
NyaHome/webui/src/pages/admin/AdminUserSecurity.vue
T

128 lines
3.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script setup lang="ts">
import { useNowUser } from '@/stores/now-user.js'
import UserPasswordModal from '@/components/admin/UserPasswordModal.vue'
import { h, ref } from 'vue'
import { api } from '@/tools/web.ts'
import { type DataTableColumn, NTag, NText } from 'naive-ui'
import InDev from '@/components/InDev.vue'
import { useHead } from '@unhead/vue'
useHead({
title: '用户安全',
})
const NOWUSER = useNowUser()
const showPasswordModal = ref(false)
interface SecureChange {
created_at: number
type: 'login' | 'change_password' | 'change_email' | 'change_phone'
old: string | null
new: string | null
}
const secureChanges = ref<SecureChange[]>([])
const columns = [
{
title: '记录时间',
key: 'created_at',
render(row) {
const date = new Date(row.created_at * 1000)
return h(NText, {}, { default: () => date.toLocaleString() })
},
},
{
title: '类型',
key: 'type',
render: (row) => {
return h(
NTag,
{
type: 'info',
},
{ default: () => row.type },
)
},
},
{
title: '事件之前',
key: 'old',
},
{
title: '事件之后',
key: 'new',
},
] as DataTableColumn<SecureChange>[]
function loadSecureChanges() {
api
.get('/admin/me/secure_changes/')
.then((res) => (secureChanges.value = res.data as SecureChange[]))
}
</script>
<template>
<n-card>
<template #header>
<n-h3 prefix="bar" style="margin: 0">密码</n-h3>
</template>
<n-flex vertical>
<n-alert type="warning" v-if="NOWUSER.id === 1">
您正在使用 NyaHome 初始化时创建的管理员账号此账号的默认密码为 admin
<strong>您应该及时修改默认密码</strong><br />
如果您已修改密码请忽略
</n-alert>
<n-flex>
<n-button type="error" @click="showPasswordModal = true">修改密码</n-button>
<n-button type="warning">忘记密码</n-button>
</n-flex>
</n-flex>
<user-password-modal v-model:show-modal="showPasswordModal" />
</n-card>
<n-card>
<template #header>
<n-h3 prefix="bar" style="margin: 0">其他登录方式</n-h3>
</template>
<n-flex vertical>
<n-alert type="info">
在这里连接第三方账户之后可以使用它们进行登录<br />
<strong>必须先在这里连接后才能使用第三方账户进行登录</strong>
</n-alert>
<in-dev />
</n-flex>
</n-card>
<n-card>
<template #header>
<n-h3 prefix="bar" style="margin: 0">两步验证</n-h3>
</template>
<n-flex vertical>
<n-alert type="info">
启用两步验证可以更好地保护您的账户这会强制此账号在登录时进行额外验证
</n-alert>
<in-dev />
</n-flex>
</n-card>
<n-card>
<template #header>
<n-h3 prefix="bar" style="margin: 0">安全事件记录</n-h3>
</template>
<n-flex vertical>
<n-data-table :columns :data="secureChanges" />
<n-button secondary type="warning" @click="loadSecureChanges()">查询更新</n-button>
</n-flex>
</n-card>
</template>
<style scoped></style>