2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 16:10:59 +08:00
Files
panel/web/src/views/cert/CreateAccountModal.vue
2024-10-24 01:48:57 +08:00

110 lines
2.9 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 cert from '@/api/panel/cert'
import type { MessageReactive } from 'naive-ui'
import { NButton, NInput, NSpace } from 'naive-ui'
const show = defineModel<boolean>('show', { type: Boolean, required: true })
const props = defineProps({
caProviders: Array<any>,
algorithms: Array<any>
})
const { caProviders, algorithms } = toRefs(props)
let messageReactive: MessageReactive | null = null
const model = ref<any>({
hmac_encoded: '',
email: '',
kid: '',
key_type: 'P256',
ca: 'googlecn'
})
const showEAB = computed(() => {
return model.value.ca === 'google' || model.value.ca === 'sslcom'
})
const handleCreateAccount = async () => {
messageReactive = window.$message.loading('正在向 CA 注册账号,请耐心等待', {
duration: 0
})
cert
.accountCreate(model.value)
.then(() => {
window.$message.success('创建成功')
model.value.email = ''
model.value.hmac_encoded = ''
model.value.kid = ''
})
.finally(() => {
messageReactive?.destroy()
})
}
</script>
<template>
<n-modal
v-model:show="show"
preset="card"
title="创建账号"
style="width: 60vw"
size="huge"
:bordered="false"
:segmented="false"
>
<n-space vertical>
<n-alert type="info"> Google SSL.com 需要先去官网获得 KID HMAC 并填入 </n-alert>
<n-alert type="warning">
境内无法使用 Google其他 CA 视网络情况而定建议使用 GoogleCN Let's Encrypt
</n-alert>
<n-form :model="model">
<n-form-item path="ca" label="CA">
<n-select
v-model:value="model.ca"
placeholder="选择 CA"
clearable
:options="caProviders"
/>
</n-form-item>
<n-form-item path="key_type" label="密钥类型">
<n-select
v-model:value="model.key_type"
placeholder="选择密钥类型"
clearable
:options="algorithms"
/>
</n-form-item>
<n-form-item path="email" label="邮箱">
<n-input
v-model:value="model.email"
type="text"
@keydown.enter.prevent
placeholder="输入邮箱地址"
/>
</n-form-item>
<n-form-item v-if="showEAB" path="kid" label="KID">
<n-input
v-model:value="model.kid"
type="text"
@keydown.enter.prevent
placeholder="输入 KID"
/>
</n-form-item>
<n-form-item v-if="showEAB" path="hmac_encoded" label="HMAC">
<n-input
v-model:value="model.hmac_encoded"
type="text"
@keydown.enter.prevent
placeholder="输入 HMAC"
/>
</n-form-item>
</n-form>
<n-button type="info" block @click="handleCreateAccount">提交</n-button>
</n-space>
</n-modal>
</template>
<style scoped lang="scss"></style>