fix: align admin behavior and Kratos integrations
This commit is contained in:
@@ -23,6 +23,24 @@
|
||||
<el-form-item label="JWT 签名密钥">
|
||||
<el-input v-model="config.admin.jwt.signingKey" show-password />
|
||||
</el-form-item>
|
||||
<el-form-item label="JWT 有效期">
|
||||
<el-input v-model.trim="config.admin.jwt.expiresTime" placeholder="例如 168h" />
|
||||
</el-form-item>
|
||||
<el-form-item label="JWT 缓冲期">
|
||||
<el-input v-model.trim="config.admin.jwt.bufferTime" placeholder="例如 24h" />
|
||||
</el-form-item>
|
||||
<el-form-item label="验证码长度">
|
||||
<el-input-number v-model="config.admin.captcha.keyLong" :min="1" :max="12" class="!w-full" />
|
||||
</el-form-item>
|
||||
<el-form-item label="验证码宽度">
|
||||
<el-input-number v-model="config.admin.captcha.imgWidth" :min="40" class="!w-full" />
|
||||
</el-form-item>
|
||||
<el-form-item label="验证码高度">
|
||||
<el-input-number v-model="config.admin.captcha.imgHeight" :min="20" class="!w-full" />
|
||||
</el-form-item>
|
||||
<el-form-item label="验证码缓存时间">
|
||||
<el-input v-model.trim="config.admin.captcha.storeExpiration" placeholder="例如 3m" />
|
||||
</el-form-item>
|
||||
<el-form-item label="本地文件目录">
|
||||
<el-input v-model.trim="config.admin.local.storePath" />
|
||||
</el-form-item>
|
||||
@@ -32,6 +50,43 @@
|
||||
<el-form-item label="大文件上传会话有效期(小时)">
|
||||
<el-input-number v-model="config.admin.media.sessionTtl" :min="1" :max="720" class="!w-full" />
|
||||
</el-form-item>
|
||||
<el-form-item label="运行开关" class="md:col-span-2">
|
||||
<div class="flex flex-wrap gap-5">
|
||||
<el-switch v-model="config.admin.system.useRedis" active-text="启用 Redis" />
|
||||
<el-switch v-model="config.admin.system.useMultipoint" active-text="限制多点登录" />
|
||||
<el-switch v-model="config.admin.system.useStrictAuth" active-text="严格角色树" />
|
||||
<el-switch v-model="config.admin.system.disableAutoMigrate" active-text="禁用自动迁移" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="数据库" name="database">
|
||||
<el-form label-position="top" class="grid grid-cols-1 md:grid-cols-2 gap-x-5">
|
||||
<el-form-item label="数据库类型">
|
||||
<el-select v-model="config.data.database.driver" class="!w-full">
|
||||
<el-option label="MySQL" value="mysql" /><el-option label="PostgreSQL" value="pgsql" />
|
||||
<el-option label="SQL Server" value="mssql" /><el-option label="SQLite" value="sqlite" />
|
||||
<el-option label="Oracle" value="oracle" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="主机"><el-input v-model.trim="config.data.database.host" /></el-form-item>
|
||||
<el-form-item label="端口"><el-input v-model.trim="config.data.database.port" /></el-form-item>
|
||||
<el-form-item label="用户名"><el-input v-model.trim="config.data.database.user" /></el-form-item>
|
||||
<el-form-item label="密码"><el-input v-model="config.data.database.password" show-password /></el-form-item>
|
||||
<el-form-item label="数据库名"><el-input v-model.trim="config.data.database.name" /></el-form-item>
|
||||
<el-form-item label="SQLite 目录"><el-input v-model.trim="config.data.database.path" /></el-form-item>
|
||||
<el-form-item label="连接参数"><el-input v-model.trim="config.data.database.config" /></el-form-item>
|
||||
<p class="md:col-span-2 text-sm text-gray-500">保存后点击“重载服务”,数据库连接会按新配置重建。</p>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="Redis" name="redis">
|
||||
<el-form label-position="top" class="grid grid-cols-1 md:grid-cols-2 gap-x-5">
|
||||
<el-form-item label="网络"><el-input v-model.trim="config.data.redis.network" placeholder="tcp" /></el-form-item>
|
||||
<el-form-item label="地址"><el-input v-model.trim="config.data.redis.addr" placeholder="127.0.0.1:6379;留空关闭 Redis" /></el-form-item>
|
||||
<el-form-item label="读取超时"><el-input v-model.trim="config.data.redis.read_timeout" placeholder="例如 200ms" /></el-form-item>
|
||||
<el-form-item label="写入超时"><el-input v-model.trim="config.data.redis.write_timeout" placeholder="例如 200ms" /></el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
@@ -114,13 +169,19 @@
|
||||
const config = ref({
|
||||
admin: {
|
||||
routerPrefix: '',
|
||||
jwt: { signingKey: '******', issuer: 'kra' },
|
||||
jwt: { signingKey: '******', expiresTime: '168h', bufferTime: '24h', issuer: 'kra' },
|
||||
captcha: { keyLong: 6, imgWidth: 240, imgHeight: 80, storeExpiration: '3m' },
|
||||
local: { storePath: 'uploads/file', pathPrefix: 'uploads/file' }, media: { sessionTtl: 24 },
|
||||
system: { useRedis: false, useMultipoint: false, useStrictAuth: false, disableAutoMigrate: false },
|
||||
storage: { type: 'local', qiniu: {}, aliyun_oss: {}, huawei_obs: {}, tencent_cos: {}, aws_s3: {}, cloudflare_r2: {}, minio: {} }
|
||||
},
|
||||
email: {
|
||||
to: '', from: '', host: '', secret: '******', nickname: '', port: 465,
|
||||
'is-ssl': true, 'is-loginauth': false
|
||||
},
|
||||
data: {
|
||||
database: { driver: 'mysql', source: '', host: '127.0.0.1', port: '3306', user: '', password: '******', name: '', config: '', path: '' },
|
||||
redis: { network: 'tcp', addr: '', read_timeout: '200ms', write_timeout: '200ms' }
|
||||
}
|
||||
})
|
||||
const storageTypes = [
|
||||
@@ -138,8 +199,10 @@
|
||||
config.value = {
|
||||
admin: { ...config.value.admin, ...res.data.config.admin,
|
||||
jwt: { ...config.value.admin.jwt, ...res.data.config.admin?.jwt },
|
||||
captcha: { ...config.value.admin.captcha, ...res.data.config.admin?.captcha },
|
||||
local: { ...config.value.admin.local, ...res.data.config.admin?.local }
|
||||
, media: { ...config.value.admin.media, ...res.data.config.admin?.media }
|
||||
, system: { ...config.value.admin.system, ...res.data.config.admin?.system }
|
||||
, storage: { ...config.value.admin.storage, ...res.data.config.admin?.storage,
|
||||
qiniu: { ...config.value.admin.storage.qiniu, ...res.data.config.admin?.storage?.qiniu },
|
||||
aliyun_oss: { ...config.value.admin.storage.aliyun_oss, ...res.data.config.admin?.storage?.aliyun_oss },
|
||||
@@ -150,7 +213,11 @@
|
||||
minio: { ...config.value.admin.storage.minio, ...res.data.config.admin?.storage?.minio }
|
||||
}
|
||||
},
|
||||
email: { ...config.value.email, ...res.data.config.email }
|
||||
email: { ...config.value.email, ...res.data.config.email },
|
||||
data: {
|
||||
database: { ...config.value.data.database, ...res.data.config.data?.database },
|
||||
redis: { ...config.value.data.redis, ...res.data.config.data?.redis }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user