Files
Nexus/web/app/assets/CredentialsPage-2-ltg8Ju.js
T
Your Name 51948469c2 build(frontend): track Vite output in Git for Gitea deploy
- Stop ignoring web/app/index.html and web/app/assets/
- Bundle index-DBKIQT7H.js from current vite build (~101MB assets)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-03 00:52:44 +08:00

1 line
12 KiB
JavaScript

import{t as e}from"./VDataTable-0y3prDxL.js";import{$ as t,$n as n,F as r,I as i,Lr as a,M as ee,N as o,P as s,R as c,Rt as l,Sr as u,Vr as d,Xn as f,ar as p,er as m,gr as h,ir as g,jr as _,mr as v,nr as te,sr as ne,t as y,tr as b,wr as x}from"./index-BMSEPayF.js";import{a as S}from"./VSelectionControl-CfnrPvec.js";import{t as C}from"./VSpacer-BEk4vEwa.js";import{t as re}from"./useSnackbar-D7YOfKok.js";import{t as w}from"./VChip-CtHbCV1q.js";import{t as T}from"./VDialog-B9OrTtgv.js";import{t as E}from"./VDataTableServer-sv3SPEQw.js";import{i as D}from"./validation-DMwOxx4a.js";import{t as O}from"./VTextarea-hDx11vy1.js";var ie={class:`text-caption text-medium-emphasis`},k=ne({__name:`CredentialsPage`,setup(ne){let k=re();function ae(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`,{hour12:!1})}let A=_(!1),j=_(`passwords`),M=_(null),N=_(1),P=_(0),F=_(20),I=_([]),L=_(!1),R=_({name:``,password:``}),oe=[{title:`预设名称`,key:`name`},{title:`创建时间`,key:`created_at`,width:180},{title:`操作`,key:`actions`,width:150,align:`end`}],z=_([]),B=_(!1),V=_({name:``,public_key:``,private_key:``}),se=[{title:`名称`,key:`name`},{title:`私钥`,key:`private_key_set`,width:120},{title:`操作`,key:`actions`,width:150,align:`end`}],H=_([]),U=_(!1),W=_({name:``,host:``,port:3306,username:``,password:``,database:``}),G=[{title:`名称`,key:`name`},{title:`主机`,key:`host`},{title:`端口`,key:`port`,width:80},{title:`用户名`,key:`username`},{title:`数据库`,key:`database`},{title:`操作`,key:`actions`,width:150,align:`end`}],K=_(!1),q=_(``),J=_(null);async function Y(){A.value=!0;try{let e=await l.getList(`/presets/`);I.value=e.items,P.value=e.total}catch{I.value=[]}finally{A.value=!1}}async function X(){A.value=!0;try{let e=await l.getList(`/ssh-key-presets/`,{page:N.value,per_page:F.value});z.value=e.items,P.value=e.total}catch{z.value=[]}finally{A.value=!1}}async function Z(){A.value=!0;try{let e=await l.getList(`/scripts/credentials`,{page:N.value,per_page:F.value});H.value=e.items,P.value=e.total}catch{H.value=[]}finally{A.value=!1}}function Q(){switch(j.value){case`passwords`:Y();break;case`sshkeys`:X();break;case`db`:Z();break}}u(j,()=>{N.value=1,Q()});function ce(e){M.value=e.id,R.value={name:e.name,password:``},L.value=!0}async function le(){let e=R.value.name.trim(),t=R.value.password;if(!e){k(`请填写预设名称`,`error`);return}if(!M.value&&!t){k(`请填写 SSH 密码`,`error`);return}try{if(M.value){let n={name:e};t&&(n.encrypted_pw=t),await l.put(`/presets/${M.value}`,n)}else await l.post(`/presets/`,{name:e,encrypted_pw:t});L.value=!1,Y(),k(`保存成功`)}catch(e){k(e instanceof Error?e.message:`保存失败`,`error`)}}function ue(e){M.value=e.id,V.value={name:e.name,public_key:e.public_key||``,private_key:``},B.value=!0}async function de(){try{M.value?await l.put(`/ssh-key-presets/${M.value}`,V.value):await l.post(`/ssh-key-presets/`,V.value),B.value=!1,X(),k(`保存成功`)}catch(e){k(e.message||`保存失败`,`error`)}}function fe(e){M.value=e.id,W.value={name:e.name,host:e.host||``,port:e.port||3306,username:e.username||``,password:``,database:e.database||``},U.value=!0}async function pe(){try{M.value?await l.put(`/scripts/credentials/${M.value}`,W.value):await l.post(`/scripts/credentials`,W.value),U.value=!1,Z(),k(`保存成功`)}catch(e){k(e.message||`保存失败`,`error`)}}function me(){M.value=null,j.value===`passwords`?(R.value={name:``,password:``},L.value=!0):j.value===`sshkeys`?(V.value={name:``,public_key:``,private_key:``},B.value=!0):(W.value={name:``,host:``,port:3306,username:``,password:``,database:``},U.value=!0)}function $(e,t){q.value=e,J.value=t.id,K.value=!0}async function he(){try{q.value===`password`?await l.delete(`/presets/${J.value}`):q.value===`sshkey`?await l.delete(`/ssh-key-presets/${J.value}`):await l.delete(`/scripts/credentials/${J.value}`),K.value=!1,Q(),k(`已删除`)}catch(e){k(e.message||`删除失败`,`error`)}}return v(()=>{Q()}),(l,u)=>(h(),m(S,{fluid:``,class:`pa-6`},{default:x(()=>[p(o,{elevation:`0`,border:``,rounded:`lg`},{default:x(()=>[p(r,{class:`d-flex align-center`},{default:x(()=>[u[28]||=g(` 凭据管理 `,-1),p(C),p(t,{modelValue:j.value,"onUpdate:modelValue":u[0]||=e=>j.value=e,mandatory:``,density:`compact`,variant:`outlined`,class:`mr-3`},{default:x(()=>[p(c,{size:`small`,value:`passwords`},{default:x(()=>[...u[24]||=[g(`密码预设`,-1)]]),_:1}),p(c,{size:`small`,value:`sshkeys`},{default:x(()=>[...u[25]||=[g(`SSH 密钥`,-1)]]),_:1}),p(c,{size:`small`,value:`db`},{default:x(()=>[...u[26]||=[g(`数据库凭据`,-1)]]),_:1})]),_:1},8,[`modelValue`]),p(c,{color:`primary`,variant:`flat`,size:`small`,"prepend-icon":`mdi-plus`,onClick:me},{default:x(()=>[...u[27]||=[g(`添加`,-1)]]),_:1})]),_:1}),p(ee),j.value===`passwords`?(h(),te(f,{key:0},[p(s,{class:`text-body-2 text-medium-emphasis pt-0 pb-2`},{default:x(()=>[...u[29]||=[g(` 保存常用 SSH 密码模板;在「服务器」里选择预设后由服务端解密填入。SSH 用户名在每台服务器上单独配置。 `,-1)]]),_:1}),p(e,{items:I.value,headers:oe,loading:A.value,hover:``,density:`comfortable`,"items-per-page":20},{"item.created_at":x(({item:e})=>[n(`span`,ie,d(ae(e.created_at)),1)]),"item.actions":x(({item:e})=>[p(c,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>ce(e)},{default:x(()=>[...u[30]||=[g(`编辑`,-1)]]),_:1},8,[`onClick`]),p(c,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>$(`password`,e)},{default:x(()=>[...u[31]||=[g(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":x(()=>[...u[32]||=[n(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无密码预设`,-1)]]),_:1},8,[`items`,`loading`])],64)):b(``,!0),j.value===`sshkeys`?(h(),m(E,{key:1,items:z.value,headers:se,"items-length":P.value,loading:A.value,page:N.value,"items-per-page":F.value,hover:``,density:`comfortable`,"onUpdate:page":u[1]||=e=>{N.value=e,X()},"onUpdate:itemsPerPage":u[2]||=e=>{F.value=e,N.value=1,X()}},{"item.private_key_set":x(({item:e})=>[p(w,{color:e.private_key_set?`success`:`grey`,size:`small`,variant:`tonal`,label:``},{default:x(()=>[g(d(e.private_key_set?`已设置`:`未设置`),1)]),_:2},1032,[`color`])]),"item.actions":x(({item:e})=>[p(c,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>ue(e)},{default:x(()=>[...u[33]||=[g(`编辑`,-1)]]),_:1},8,[`onClick`]),p(c,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>$(`sshkey`,e)},{default:x(()=>[...u[34]||=[g(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":x(()=>[...u[35]||=[n(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无凭据`,-1)]]),_:1},8,[`items`,`items-length`,`loading`,`page`,`items-per-page`])):b(``,!0),j.value===`db`?(h(),m(E,{key:2,items:H.value,headers:G,"items-length":P.value,loading:A.value,page:N.value,"items-per-page":F.value,hover:``,density:`comfortable`,"onUpdate:page":u[3]||=e=>{N.value=e,Z()},"onUpdate:itemsPerPage":u[4]||=e=>{F.value=e,N.value=1,Z()}},{"item.actions":x(({item:e})=>[p(c,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>fe(e)},{default:x(()=>[...u[36]||=[g(`编辑`,-1)]]),_:1},8,[`onClick`]),p(c,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>$(`db`,e)},{default:x(()=>[...u[37]||=[g(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":x(()=>[...u[38]||=[n(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无凭据`,-1)]]),_:1},8,[`items`,`items-length`,`loading`,`page`,`items-per-page`])):b(``,!0)]),_:1}),p(T,{modelValue:L.value,"onUpdate:modelValue":u[8]||=e=>L.value=e,"max-width":`500`},{default:x(()=>[p(o,{border:``},{default:x(()=>[p(r,null,{default:x(()=>[g(d(M.value?`编辑密码预设`:`新建密码预设`),1)]),_:1}),p(s,null,{default:x(()=>[p(y,{modelValue:R.value.name,"onUpdate:modelValue":u[5]||=e=>R.value.name=e,label:`预设名称`,variant:`outlined`,density:`compact`,class:`mb-2`,placeholder:`如:生产环境 root 密码`,rules:[a(D)(`预设名称`)]},null,8,[`modelValue`,`rules`]),p(y,{modelValue:R.value.password,"onUpdate:modelValue":u[6]||=e=>R.value.password=e,label:`SSH 密码`,variant:`outlined`,density:`compact`,type:`password`,placeholder:M.value?`留空表示不修改`:`必填`,rules:M.value?[]:[a(D)(`SSH 密码`)]},null,8,[`modelValue`,`placeholder`,`rules`])]),_:1}),p(i,null,{default:x(()=>[p(C),p(c,{variant:`text`,onClick:u[7]||=e=>L.value=!1},{default:x(()=>[...u[39]||=[g(`取消`,-1)]]),_:1}),p(c,{color:`primary`,variant:`flat`,onClick:le},{default:x(()=>[...u[40]||=[g(`保存`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),p(T,{modelValue:B.value,"onUpdate:modelValue":u[13]||=e=>B.value=e,"max-width":`500`},{default:x(()=>[p(o,{border:``},{default:x(()=>[p(r,null,{default:x(()=>[g(d(M.value?`编辑 SSH 密钥`:`新建 SSH 密钥`),1)]),_:1}),p(s,null,{default:x(()=>[p(y,{modelValue:V.value.name,"onUpdate:modelValue":u[9]||=e=>V.value.name=e,label:`名称`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),p(O,{modelValue:V.value.public_key,"onUpdate:modelValue":u[10]||=e=>V.value.public_key=e,label:`公钥`,variant:`outlined`,density:`compact`,rows:`3`,class:`mb-2`},null,8,[`modelValue`]),p(O,{modelValue:V.value.private_key,"onUpdate:modelValue":u[11]||=e=>V.value.private_key=e,label:`私钥`,variant:`outlined`,density:`compact`,rows:`5`},null,8,[`modelValue`])]),_:1}),p(i,null,{default:x(()=>[p(C),p(c,{variant:`text`,onClick:u[12]||=e=>B.value=!1},{default:x(()=>[...u[41]||=[g(`取消`,-1)]]),_:1}),p(c,{color:`primary`,variant:`flat`,onClick:de},{default:x(()=>[...u[42]||=[g(`保存`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),p(T,{modelValue:U.value,"onUpdate:modelValue":u[21]||=e=>U.value=e,"max-width":`500`},{default:x(()=>[p(o,{border:``},{default:x(()=>[p(r,null,{default:x(()=>[g(d(M.value?`编辑数据库凭据`:`新建数据库凭据`),1)]),_:1}),p(s,null,{default:x(()=>[p(y,{modelValue:W.value.name,"onUpdate:modelValue":u[14]||=e=>W.value.name=e,label:`名称`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),p(y,{modelValue:W.value.host,"onUpdate:modelValue":u[15]||=e=>W.value.host=e,label:`主机`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),p(y,{modelValue:W.value.port,"onUpdate:modelValue":u[16]||=e=>W.value.port=e,label:`端口`,variant:`outlined`,density:`compact`,type:`number`,class:`mb-2`},null,8,[`modelValue`]),p(y,{modelValue:W.value.username,"onUpdate:modelValue":u[17]||=e=>W.value.username=e,label:`用户名`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),p(y,{modelValue:W.value.password,"onUpdate:modelValue":u[18]||=e=>W.value.password=e,label:`密码`,variant:`outlined`,density:`compact`,type:`password`,class:`mb-2`},null,8,[`modelValue`]),p(y,{modelValue:W.value.database,"onUpdate:modelValue":u[19]||=e=>W.value.database=e,label:`数据库`,variant:`outlined`,density:`compact`},null,8,[`modelValue`])]),_:1}),p(i,null,{default:x(()=>[p(C),p(c,{variant:`text`,onClick:u[20]||=e=>U.value=!1},{default:x(()=>[...u[43]||=[g(`取消`,-1)]]),_:1}),p(c,{color:`primary`,variant:`flat`,onClick:pe},{default:x(()=>[...u[44]||=[g(`保存`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),p(T,{modelValue:K.value,"onUpdate:modelValue":u[23]||=e=>K.value=e,"max-width":`400`},{default:x(()=>[p(o,{border:``},{default:x(()=>[p(r,null,{default:x(()=>[...u[45]||=[g(`确认删除`,-1)]]),_:1}),p(s,null,{default:x(()=>[...u[46]||=[g(`确定要删除此凭据吗?`,-1)]]),_:1}),p(i,null,{default:x(()=>[p(C),p(c,{variant:`text`,onClick:u[22]||=e=>K.value=!1},{default:x(()=>[...u[47]||=[g(`取消`,-1)]]),_:1}),p(c,{color:`error`,variant:`flat`,onClick:he},{default:x(()=>[...u[48]||=[g(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{k as default};