Files
Nexus/web/app/assets/SettingsPage-BNhfSvbM.js
T
Nexus Deploy 49f88a2cd8 fix(install): Docker .env 持久化与 entrypoint 覆盖 Compose 占位符
向导 init-db 后立即同步 nexus-state 卷;entrypoint 跳过不完整 env 并在启动前 source /app/.env,避免缺 DATABASE_URL 与无密码 REDIS_URL 导致容器崩溃。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 11:08:22 +08:00

3 lines
20 KiB
JavaScript

import{$n as e,A as t,Ar as n,Br as r,Cr as i,F as a,I as o,Ir as s,J as ee,Jn as c,M as l,N as u,P as d,Pt as f,R as p,Rt as m,X as h,Xn as g,_r as _,ar as v,er as y,hr as b,ir as x,j as te,k as S,nr as C,or as w,pr as ne,t as T,tr as E,w as D}from"./index-C_dP75wD.js";import{o as re,t as ie}from"./VContainer-DGQjsCTw.js";import{t as ae}from"./VChip-oig-b64O.js";import{n as O,t as oe}from"./VRow-MZyk7N4E.js";import{t as k}from"./VSpacer-Cl6Zcy_X.js";import{i as A,n as se,r as j,t as ce}from"./validation-DMwOxx4a.js";import{t as M}from"./VDialog-CnSngTCg.js";import{t as N}from"./VTextarea-Bxfo_kiv.js";import{t as P}from"./VSwitch-5b3JXWIr.js";import{n as F,r as le}from"./useTerminalQuickCommands-CK2x9Goo.js";var I={key:1,class:`text-medium-emphasis text-body-2 mb-4`},L={class:`text-caption text-medium-emphasis mr-2`,style:{"min-width":`1.5rem`}},R={class:`d-flex flex-wrap ga-2`},z=w({__name:`TerminalQuickCommandsSettings`,setup(c){let f=re(),{commands:m,loading:w,load:ie,create:O,update:oe,remove:A,reorder:se,customCommands:j,builtinCommands:ce}=F(),N=n(!1),P=n(null),z=n(``),B=n(``),V=n(!1),H=n(!1),U=n(!1),W=n(null),ue=n(``);function de(){P.value=null,z.value=``,B.value=``,N.value=!0}function fe(e){P.value=e.id,z.value=e.name,B.value=e.cmd.replace(/\r$/,``),N.value=!0}async function pe(){if(!z.value.trim()||!B.value.trim()){f(`名称和命令不能为空`,`warning`);return}let e=B.value.trim();e.endsWith(`\r`)||(e+=`\r`),V.value=!0;try{P.value?await oe(P.value,z.value,e):await O(z.value,e),N.value=!1,f(`已保存`)}catch(e){f(e instanceof Error?e.message:`保存失败`,`error`)}finally{V.value=!1}}function G(e){W.value=e.id,ue.value=e.name,U.value=!0}async function K(){if(W.value){V.value=!0;try{await A(W.value),U.value=!1,f(`已删除`)}catch(e){f(e instanceof Error?e.message:`删除失败`,`error`)}finally{V.value=!1}}}async function q(e){let t=j();if(e<=0)return;let n=t.map(e=>e.id),r=n[e-1];n[e-1]=n[e],n[e]=r,await Y(n)}async function J(e){let t=j();if(e>=t.length-1)return;let n=t.map(e=>e.id),r=n[e+1];n[e+1]=n[e],n[e]=r,await Y(n)}async function Y(e){H.value=!0;try{await se(e)}catch(e){f(e instanceof Error?e.message:`排序失败`,`error`)}finally{H.value=!1}}return ne(()=>{ie().catch(e=>f(e.message,`error`))}),(n,c)=>(b(),y(u,{id:`terminal-quick-commands`,elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:i(()=>[v(a,{class:`d-flex align-center flex-wrap ga-2`},{default:i(()=>[v(h,{class:`mr-1`},{default:i(()=>[...c[6]||=[x(`mdi-flash`,-1)]]),_:1}),c[8]||=x(` 终端快捷命令 `,-1),v(k),v(p,{size:`small`,color:`primary`,variant:`flat`,"prepend-icon":`mdi-plus`,onClick:de},{default:i(()=>[...c[7]||=[x(` 添加命令 `,-1)]]),_:1})]),_:1}),v(l),v(d,null,{default:i(()=>[c[9]||=e(`div`,{class:`text-body-2 text-medium-emphasis mb-4`},` 自定义命令显示在终端栏最前(优先级最高)。终端页仅可点击执行;在此添加、编辑、删除与调整顺序。 `,-1),s(w)?(b(),y(ee,{key:0,indeterminate:``,color:`primary`,class:`mb-3`})):E(``,!0),s(j)().length===0&&!s(w)?(b(),C(`div`,I,` 暂无自定义命令,点击「添加命令」创建。 `)):E(``,!0),s(j)().length?(b(),y(D,{key:2,density:`compact`,class:`mb-4 pa-0`},{default:i(()=>[(b(!0),C(g,null,_(s(j)(),(n,a)=>(b(),y(S,{key:n.id,border:``,rounded:`lg`,class:`mb-2`},{prepend:i(()=>[e(`span`,L,r(a+1),1)]),append:i(()=>[v(p,{icon:`mdi-arrow-up`,size:`x-small`,variant:`text`,disabled:a===0||H.value,onClick:e=>q(a)},null,8,[`disabled`,`onClick`]),v(p,{icon:`mdi-arrow-down`,size:`x-small`,variant:`text`,disabled:a===s(j)().length-1||H.value,onClick:e=>J(a)},null,8,[`disabled`,`onClick`]),v(p,{icon:`mdi-pencil`,size:`x-small`,variant:`text`,onClick:e=>fe(n)},null,8,[`onClick`]),v(p,{icon:`mdi-delete`,size:`x-small`,variant:`text`,color:`error`,onClick:e=>G(n)},null,8,[`onClick`])]),default:i(()=>[v(t,null,{default:i(()=>[x(r(n.name),1)]),_:2},1024),v(te,{class:`font-mono text-truncate`},{default:i(()=>[x(r(n.cmd),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):E(``,!0),c[10]||=e(`div`,{class:`text-subtitle-2 mb-2`},`系统内置(不可编辑)`,-1),e(`div`,R,[(b(!0),C(g,null,_(s(ce)(),e=>(b(),y(ae,{key:e.id,size:`small`,variant:`outlined`,label:``},{default:i(()=>[x(r(e.name),1)]),_:2},1024))),128))])]),_:1}),v(M,{modelValue:N.value,"onUpdate:modelValue":c[3]||=e=>N.value=e,"max-width":`520`},{default:i(()=>[v(u,{border:``},{default:i(()=>[v(a,null,{default:i(()=>[x(r(P.value?`编辑命令`:`添加快捷命令`),1)]),_:1}),v(d,null,{default:i(()=>[v(T,{modelValue:z.value,"onUpdate:modelValue":c[0]||=e=>z.value=e,label:`显示名称`,variant:`outlined`,density:`compact`,class:`mb-3`},null,8,[`modelValue`]),c[11]||=e(`div`,{class:`text-body-2 text-medium-emphasis mb-2`},`命令内容(发送时自动追加回车)`,-1),v(le,{modelValue:B.value,"onUpdate:modelValue":c[1]||=e=>B.value=e,multiline:``,rows:4,placeholder:`systemctl status nginx`},null,8,[`modelValue`])]),_:1}),v(o,null,{default:i(()=>[v(k),v(p,{variant:`text`,onClick:c[2]||=e=>N.value=!1},{default:i(()=>[...c[12]||=[x(`取消`,-1)]]),_:1}),v(p,{color:`primary`,variant:`flat`,loading:V.value,onClick:pe},{default:i(()=>[...c[13]||=[x(`保存`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),v(M,{modelValue:U.value,"onUpdate:modelValue":c[5]||=e=>U.value=e,"max-width":`400`},{default:i(()=>[v(u,{border:``},{default:i(()=>[v(a,null,{default:i(()=>[...c[14]||=[x(`删除命令`,-1)]]),_:1}),v(d,null,{default:i(()=>[x(`确定删除「`+r(ue.value)+`」?`,1)]),_:1}),v(o,null,{default:i(()=>[v(k),v(p,{variant:`text`,onClick:c[4]||=e=>U.value=!1},{default:i(()=>[...c[15]||=[x(`取消`,-1)]]),_:1}),v(p,{color:`error`,variant:`flat`,loading:V.value,onClick:K},{default:i(()=>[...c[16]||=[x(`删除`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}}),B={class:`d-flex align-center mb-3`},V={key:0,class:`text-center mb-3`},H=[`src`],U={key:0,class:`d-flex align-center justify-center ga-2 mt-2`},W={class:`text-caption pa-1 bg-grey-lighten-4 rounded`,style:{"user-select":`all`}},ue={key:1},de={key:1,class:`d-flex ga-2 align-center`},fe={class:`d-flex align-center ga-2`},pe={class:`text-body-2 text-medium-emphasis mb-3`},G=w({__name:`SettingsPage`,setup(t){let g=re(),_=f(),te=n(!1),S=n({system_name:``,system_title:``,cpu_alert_threshold:80,mem_alert_threshold:80,disk_alert_threshold:80,db_pool_size:10,db_max_overflow:20,telegram_bot_token:``,telegram_chat_id:``}),w=n(``),D=n(!1),F=n(!1),le=n(!1),I=n(!1),L=n({current:``,new_pw:``,confirm:``,totp_code:``}),R=n(!1),G=n(``),K=n(``),q=n(``),J=n(!1),Y=n(!1),me=n(``),he=n(``),ge=n(!1),X=n(!1),_e=n(``),Z=n(!1),Q=n(`api_key`),$=n(``),ve=n(!1),ye=n(!1),be=n(``),xe=n(!1);async function Se(){te.value=!0;try{let e=await m.get(`/settings/`),t=Array.isArray(e)?e:[],n=Object.keys(S.value);for(let e of t){let t=e.key;if(t===`telegram_bot_token`){D.value=!!e.value_set,w.value=``;continue}if(t&&n.includes(t)){let n=e.value;typeof n==`string`&&/^\d+(\.\d+)?$/.test(n)?S.value[t]=Number(n):S.value[t]=n}}}catch{g(`加载设置失败`,`error`)}finally{te.value=!1}}async function Ce(){try{let e=await m.get(`/settings/ip-allowlist`);ye.value=e.enabled||!1,be.value=[...e.manual_ips||[],...e.subscription_ips||[]].join(`
`)}catch{g(`加载白名单失败`,`error`)}}async function we(){F.value=!0;let e=w.value.trim();try{let t=Object.entries(S.value).filter(([e])=>[`system_name`,`system_title`,`cpu_alert_threshold`,`mem_alert_threshold`,`disk_alert_threshold`,`db_pool_size`,`db_max_overflow`,`telegram_chat_id`].includes(e));e&&t.push([`telegram_bot_token`,e]);for(let[e,n]of t)await m.put(`/settings/${e}`,{value:n});g(`设置已保存`),e&&(D.value=!0,w.value=``,I.value=!1)}catch(e){g(e instanceof Error?e.message:`保存失败`,`error`)}finally{F.value=!1}}async function Te(){le.value=!0;try{await m.post(`/settings/telegram/test`),g(`测试消息已发送`)}catch(e){g(e.message||`发送失败`,`error`)}finally{le.value=!1}}async function Ee(){if(L.value.new_pw!==L.value.confirm){g(`两次密码不一致`,`error`);return}R.value=!0;try{let e={current_password:L.value.current,new_password:L.value.new_pw};_.admin?.totp_enabled&&L.value.totp_code&&(e.totp_code=L.value.totp_code),await m.put(`/auth/password`,e),L.value={current:``,new_pw:``,confirm:``,totp_code:``},g(`密码已修改`)}catch(e){g(e instanceof Error?e.message:`修改失败`,`error`)}finally{R.value=!1}}async function De(){try{let e=await m.post(`/auth/totp/setup`);G.value=e.qr_code,K.value=e.secret||``}catch(e){g(e instanceof Error?e.message:`生成失败`,`error`)}}async function Oe(){J.value=!0;try{await m.post(`/auth/totp/enable`,{code:q.value}),await _.fetchProfile(),G.value=``,q.value=``,g(`TOTP 已启用`)}catch(e){g(e.message||`启用失败`,`error`)}finally{J.value=!1}}function ke(){Y.value=!0}async function Ae(){ge.value=!0;try{await m.post(`/auth/totp/disable`,{admin_id:_.admin?.id,current_password:me.value,totp_code:he.value}),await _.fetchProfile(),Y.value=!1,me.value=``,he.value=``,g(`TOTP 已禁用`)}catch(e){g(e.message||`禁用失败`,`error`)}finally{ge.value=!1}}function je(){K.value&&(navigator.clipboard.writeText(K.value),g(`密钥已复制`))}async function Me(){if(X.value){X.value=!1;return}Q.value=`api_key`,Z.value=!0,$.value=``}async function Ne(){if(I.value&&w.value){I.value=!1,w.value=``;return}Q.value=`telegram`,Z.value=!0,$.value=``}async function Pe(){if(!$.value){g(`请输入密码`,`error`);return}ve.value=!0;try{Q.value===`telegram`?(w.value=(await m.post(`/settings/telegram/reveal-token`,{current_password:$.value})).value,I.value=!0):(_e.value=(await m.post(`/settings/api-key/reveal`,{current_password:$.value})).api_key,X.value=!0),Z.value=!1,$.value=``}catch(e){g(e instanceof Error?e.message:`验证失败`,`error`)}finally{ve.value=!1}}async function Fe(){Q.value=`api_key`,await Pe()}function Ie(){_e.value&&(navigator.clipboard.writeText(_e.value),g(`已复制到剪贴板`))}async function Le(){try{await m.post(`/settings/ip-allowlist/toggle`,{enabled:ye.value})}catch(e){g(e.message||`操作失败`,`error`)}}async function Re(){xe.value=!0;try{let e=be.value.split(`
`).map(e=>e.trim()).filter(Boolean);await m.post(`/settings/ip-allowlist`,{ips:e}),g(`白名单已保存`)}catch(e){g(e.message||`保存失败`,`error`)}finally{xe.value=!1}}return ne(()=>{Se(),Ce(),_.fetchProfile()}),(t,n)=>(b(),y(ie,{fluid:``,class:`pa-6`},{default:i(()=>[v(oe,null,{default:i(()=>[v(O,{cols:`12`,lg:`6`},{default:i(()=>[v(u,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:i(()=>[v(a,{class:`d-flex align-center`},{default:i(()=>[v(h,{class:`mr-2`},{default:i(()=>[...n[23]||=[x(`mdi-cog`,-1)]]),_:1}),n[24]||=x(` 系统设置 `,-1)]),_:1}),te.value?(b(),y(ee,{key:0,indeterminate:``,color:`primary`})):E(``,!0),v(l),v(d,null,{default:i(()=>[v(T,{modelValue:S.value.system_name,"onUpdate:modelValue":n[0]||=e=>S.value.system_name=e,label:`系统名称`,variant:`outlined`,density:`compact`,class:`mb-3`,rules:[s(A)(`系统名称`)]},null,8,[`modelValue`,`rules`]),v(T,{modelValue:S.value.system_title,"onUpdate:modelValue":n[1]||=e=>S.value.system_title=e,label:`系统标题`,variant:`outlined`,density:`compact`,class:`mb-3`,rules:[s(A)(`系统标题`)]},null,8,[`modelValue`,`rules`]),v(l,{class:`my-4`}),n[25]||=e(`div`,{class:`text-subtitle-2 mb-3`},`告警阈值`,-1),v(oe,{dense:``},{default:i(()=>[v(O,{cols:`4`},{default:i(()=>[v(T,{modelValue:S.value.cpu_alert_threshold,"onUpdate:modelValue":n[2]||=e=>S.value.cpu_alert_threshold=e,label:`CPU %`,variant:`outlined`,density:`compact`,type:`number`,rules:[s(A)(`阈值`),s(j)(1,100,`阈值`)]},null,8,[`modelValue`,`rules`])]),_:1}),v(O,{cols:`4`},{default:i(()=>[v(T,{modelValue:S.value.mem_alert_threshold,"onUpdate:modelValue":n[3]||=e=>S.value.mem_alert_threshold=e,label:`内存 %`,variant:`outlined`,density:`compact`,type:`number`,rules:[s(A)(`阈值`),s(j)(1,100,`阈值`)]},null,8,[`modelValue`,`rules`])]),_:1}),v(O,{cols:`4`},{default:i(()=>[v(T,{modelValue:S.value.disk_alert_threshold,"onUpdate:modelValue":n[4]||=e=>S.value.disk_alert_threshold=e,label:`磁盘 %`,variant:`outlined`,density:`compact`,type:`number`,rules:[s(A)(`阈值`),s(j)(1,100,`阈值`)]},null,8,[`modelValue`,`rules`])]),_:1})]),_:1}),v(l,{class:`my-4`}),n[26]||=e(`div`,{class:`text-subtitle-2 mb-3`},`连接池`,-1),v(oe,{dense:``},{default:i(()=>[v(O,{cols:`6`},{default:i(()=>[v(T,{modelValue:S.value.db_pool_size,"onUpdate:modelValue":n[5]||=e=>S.value.db_pool_size=e,label:`连接池大小`,variant:`outlined`,density:`compact`,type:`number`,rules:[s(A)(),s(ce)()]},null,8,[`modelValue`,`rules`])]),_:1}),v(O,{cols:`6`},{default:i(()=>[v(T,{modelValue:S.value.db_max_overflow,"onUpdate:modelValue":n[6]||=e=>S.value.db_max_overflow=e,label:`溢出连接数`,variant:`outlined`,density:`compact`,type:`number`,rules:[s(A)(),s(ce)()]},null,8,[`modelValue`,`rules`])]),_:1})]),_:1})]),_:1}),v(o,{class:`px-4 pb-4`},{default:i(()=>[v(k),v(p,{color:`primary`,variant:`flat`,onClick:we,loading:F.value},{default:i(()=>[...n[27]||=[x(`保存设置`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1}),v(z),v(u,{elevation:`0`,border:``,rounded:`lg`},{default:i(()=>[v(a,{class:`d-flex align-center`},{default:i(()=>[v(h,{class:`mr-2`},{default:i(()=>[...n[28]||=[x(`mdi-send`,-1)]]),_:1}),n[29]||=x(` Telegram 推送 `,-1)]),_:1}),v(l),v(d,null,{default:i(()=>[v(T,{modelValue:w.value,"onUpdate:modelValue":n[7]||=e=>w.value=e,label:`Bot Token`,variant:`outlined`,density:`compact`,class:`mb-3`,placeholder:D.value?`已配置(留空保持不变)`:`输入 Bot Token`,type:I.value?`text`:`password`,"append-inner-icon":I.value?`mdi-eye`:`mdi-eye-off`,"onClick:appendInner":Ne},null,8,[`modelValue`,`placeholder`,`type`,`append-inner-icon`]),D.value&&!w.value?(b(),y(ae,{key:0,size:`small`,color:`success`,variant:`tonal`,class:`mb-3`},{default:i(()=>[...n[30]||=[x(`Token 已配置`,-1)]]),_:1})):E(``,!0),v(T,{modelValue:S.value.telegram_chat_id,"onUpdate:modelValue":n[8]||=e=>S.value.telegram_chat_id=e,label:`Chat ID`,variant:`outlined`,density:`compact`,class:`mb-3`},null,8,[`modelValue`]),v(p,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-message-text`,onClick:Te,loading:le.value},{default:i(()=>[...n[31]||=[x(`发送测试消息`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1}),v(O,{cols:`12`,lg:`6`},{default:i(()=>[v(u,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:i(()=>[v(a,{class:`d-flex align-center`},{default:i(()=>[v(h,{class:`mr-2`},{default:i(()=>[...n[32]||=[x(`mdi-lock`,-1)]]),_:1}),n[33]||=x(` 修改密码 `,-1)]),_:1}),v(l),v(d,null,{default:i(()=>[v(T,{modelValue:L.value.current,"onUpdate:modelValue":n[9]||=e=>L.value.current=e,label:`当前密码`,variant:`outlined`,density:`compact`,type:`password`,class:`mb-3`,rules:[s(A)(`密码`)]},null,8,[`modelValue`,`rules`]),v(T,{modelValue:L.value.new_pw,"onUpdate:modelValue":n[10]||=e=>L.value.new_pw=e,label:`新密码`,variant:`outlined`,density:`compact`,type:`password`,class:`mb-3`,rules:[s(A)(`密码`)]},null,8,[`modelValue`,`rules`]),v(T,{modelValue:L.value.confirm,"onUpdate:modelValue":n[11]||=e=>L.value.confirm=e,label:`确认新密码`,variant:`outlined`,density:`compact`,type:`password`,class:`mb-3`,rules:[s(A)(`确认密码`),s(se)(()=>L.value.new_pw)]},null,8,[`modelValue`,`rules`]),s(_).admin?.totp_enabled?(b(),y(T,{key:0,modelValue:L.value.totp_code,"onUpdate:modelValue":n[12]||=e=>L.value.totp_code=e,label:`TOTP 验证码`,variant:`outlined`,density:`compact`,type:`text`,inputmode:`numeric`,maxlength:`6`,class:`mb-3`,rules:s(_).admin?.totp_enabled?[s(A)(`验证码`)]:[]},null,8,[`modelValue`,`rules`])):E(``,!0)]),_:1}),v(o,{class:`px-4 pb-4`},{default:i(()=>[v(k),v(p,{color:`primary`,variant:`flat`,onClick:Ee,loading:R.value},{default:i(()=>[...n[34]||=[x(`修改密码`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1}),v(u,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:i(()=>[v(a,{class:`d-flex align-center`},{default:i(()=>[v(h,{class:`mr-2`},{default:i(()=>[...n[35]||=[x(`mdi-shield-key`,-1)]]),_:1}),n[36]||=x(` 双因素认证 (TOTP) `,-1)]),_:1}),v(l),v(d,null,{default:i(()=>[e(`div`,B,[n[37]||=e(`span`,{class:`text-body-2`},`状态:`,-1),v(ae,{color:s(_).admin?.totp_enabled?`success`:`grey`,size:`small`,variant:`tonal`,label:``,class:`ml-2`},{default:i(()=>[x(r(s(_).admin?.totp_enabled?`已启用`:`未启用`),1)]),_:1},8,[`color`])]),G.value?(b(),C(`div`,V,[e(`img`,{src:G.value,alt:`TOTP QR`,style:{"max-width":`200px`}},null,8,H),K.value?(b(),C(`div`,U,[e(`code`,W,r(K.value),1),v(p,{size:`x-small`,variant:`text`,icon:`mdi-content-copy`,onClick:je})])):E(``,!0),n[38]||=e(`div`,{class:`text-caption text-medium-emphasis mt-1`},`用认证器 App 扫描二维码或手动输入密钥`,-1)])):E(``,!0),s(_).admin?.totp_enabled?(b(),y(p,{key:2,size:`small`,variant:`tonal`,color:`error`,"prepend-icon":`mdi-shield-off`,onClick:ke},{default:i(()=>[...n[41]||=[x(`禁用 TOTP`,-1)]]),_:1})):(b(),C(`div`,ue,[G.value?(b(),C(`div`,de,[v(T,{modelValue:q.value,"onUpdate:modelValue":n[13]||=e=>q.value=e,label:`验证码`,variant:`outlined`,density:`compact`,style:{"max-width":`160px`}},null,8,[`modelValue`]),v(p,{color:`primary`,variant:`flat`,size:`small`,onClick:Oe,loading:J.value},{default:i(()=>[...n[40]||=[x(`启用`,-1)]]),_:1},8,[`loading`])])):(b(),y(p,{key:0,size:`small`,variant:`tonal`,"prepend-icon":`mdi-qrcode`,onClick:De},{default:i(()=>[...n[39]||=[x(`生成二维码`,-1)]]),_:1}))]))]),_:1})]),_:1}),v(u,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:i(()=>[v(a,{class:`d-flex align-center`},{default:i(()=>[v(h,{class:`mr-2`},{default:i(()=>[...n[42]||=[x(`mdi-key`,-1)]]),_:1}),n[43]||=x(` API Key `,-1)]),_:1}),v(l),v(d,null,{default:i(()=>[e(`div`,fe,[v(T,{"model-value":X.value?_e.value:`••••••••`,label:`API Key`,variant:`outlined`,density:`compact`,readonly:``,type:X.value?`text`:`password`,style:{"max-width":`320px`}},null,8,[`model-value`,`type`]),v(p,{variant:`text`,size:`small`,icon:X.value?`mdi-eye-off`:`mdi-eye`,onClick:Me},null,8,[`icon`]),v(p,{variant:`text`,size:`small`,icon:`mdi-content-copy`,onClick:Ie})])]),_:1})]),_:1}),v(u,{elevation:`0`,border:``,rounded:`lg`},{default:i(()=>[v(a,{class:`d-flex align-center`},{default:i(()=>[v(h,{class:`mr-2`},{default:i(()=>[...n[44]||=[x(`mdi-ip-network`,-1)]]),_:1}),n[45]||=x(` IP 白名单 `,-1)]),_:1}),v(l),v(d,null,{default:i(()=>[v(P,{modelValue:ye.value,"onUpdate:modelValue":[n[14]||=e=>ye.value=e,Le],label:`启用 IP 白名单`,color:`primary`,density:`compact`,"hide-details":``,class:`mb-3`},null,8,[`modelValue`]),v(N,{modelValue:be.value,"onUpdate:modelValue":n[15]||=e=>be.value=e,label:`IP 列表(每行一个)`,variant:`outlined`,density:`compact`,rows:`4`,class:`mb-2`},null,8,[`modelValue`]),v(p,{size:`small`,variant:`tonal`,onClick:Re,loading:xe.value},{default:i(()=>[...n[46]||=[x(`保存`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1})]),_:1}),v(M,{modelValue:Z.value,"onUpdate:modelValue":n[18]||=e=>Z.value=e,"max-width":`400`},{default:i(()=>[v(u,{border:``},{default:i(()=>[v(a,null,{default:i(()=>[x(r(Q.value===`telegram`?`查看 Bot Token`:`验证身份`),1)]),_:1}),v(d,null,{default:i(()=>[e(`div`,pe,r(Q.value===`telegram`?`请输入当前密码以查看 Telegram Bot Token`:`请输入当前密码以查看 API Key`),1),v(T,{modelValue:$.value,"onUpdate:modelValue":n[16]||=e=>$.value=e,label:`当前密码`,variant:`outlined`,density:`compact`,type:`password`,autofocus:``,onKeydown:c(Fe,[`enter`]),rules:[s(A)(`密码`)]},null,8,[`modelValue`,`rules`])]),_:1}),v(o,null,{default:i(()=>[v(k),v(p,{variant:`text`,onClick:n[17]||=e=>Z.value=!1},{default:i(()=>[...n[47]||=[x(`取消`,-1)]]),_:1}),v(p,{color:`primary`,variant:`flat`,onClick:Pe,loading:ve.value},{default:i(()=>[...n[48]||=[x(`确认`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),v(M,{modelValue:Y.value,"onUpdate:modelValue":n[22]||=e=>Y.value=e,"max-width":`400`},{default:i(()=>[v(u,{border:``},{default:i(()=>[v(a,null,{default:i(()=>[...n[49]||=[x(`禁用 TOTP`,-1)]]),_:1}),v(d,null,{default:i(()=>[v(T,{modelValue:me.value,"onUpdate:modelValue":n[19]||=e=>me.value=e,label:`当前密码`,variant:`outlined`,density:`compact`,type:`password`,class:`mb-2`,rules:[s(A)()]},null,8,[`modelValue`,`rules`]),v(T,{modelValue:he.value,"onUpdate:modelValue":n[20]||=e=>he.value=e,label:`验证码`,variant:`outlined`,density:`compact`,rules:[s(A)()]},null,8,[`modelValue`,`rules`])]),_:1}),v(o,null,{default:i(()=>[v(k),v(p,{variant:`text`,onClick:n[21]||=e=>Y.value=!1},{default:i(()=>[...n[50]||=[x(`取消`,-1)]]),_:1}),v(p,{color:`error`,variant:`flat`,onClick:Ae,loading:ge.value},{default:i(()=>[...n[51]||=[x(`禁用`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{G as default};