2025-09-01 20:25:22 +08:00
|
|
|
|
import{B as $,q as M,r as p,h as V,c as i,f as l,a as e,d as k,t as _,F as C,i as L,b as d,w as O,n as N,u as I,e as S,m as G,y as z,j as w,D as j,z as R,J as E,g as T,K as q,H as F,I as H,L as Y,_ as J}from"./index-DNUMHgIY.js";import{D as B}from"./DashboardClientAssignmentStore-D2_uoTaE.js";import{L as c}from"./localeText-Cf1ohw6E.js";const K={class:"card rounded-0 border-0"},Q={role:"button",class:"ms-auto text-white"},X={key:0,class:"bi bi-chevron-compact-down"},Z={key:1,class:"bi bi-chevron-compact-up"},ee={key:0,class:"card-body p-0"},se={class:"list-group list-group-flush"},te={key:0},le={class:"text-body"},ne={class:"text-muted"},ae={key:1},ie={class:"text-body"},oe={class:"text-muted"},re=["onClick"],de=["onClick"],U=$({__name:"availablePeersGroup",props:["configuration","peers","clientAssignedPeers","availablePeerSearchString"],emits:["assign","unassign"],setup(u,{emit:h}){const a=u,g=h,r=B(),m=M(()=>a.clientAssignedPeers&&Object.keys(a.clientAssignedPeers).includes(a.configuration)?a.peers.filter(n=>!a.clientAssignedPeers[a.configuration].map(t=>t.id).includes(n.id)&&(!a.availablePeerSearchString||a.availablePeerSearchString&&(n.id.includes(a.availablePeerSearchString)||n.name.includes(a.availablePeerSearchString)))):a.availablePeerSearchString?a.peers.filter(n=>n.id.includes(a.availablePeerSearchString)||n.name.includes(a.availablePeerSearchString)):a.peers),y=p(!1),v=p(!1);return(n,t)=>{const o=V("RouterLink");return l(),i("div",K,[e("div",{onClick:t[0]||(t[0]=s=>v.value=!v.value),role:"button",class:"card-header rounded-0 sticky-top z-5 bg-body-secondary border-0 border-bottom text-white d-flex"},[e("small",null,[e("samp",null,_(u.configuration),1)]),e("a",Q,[v.value?(l(),i("i",X)):(l(),i("i",Z))])]),v.value?k("",!0):(l(),i("div",ee,[e("div",se,[(l(!0),i(C,null,L(m.value,s=>(l(),i("div",{class:"list-group-item d-flex border-bottom list-group-item-action d-flex align-items-center gap-3",key:s.id},[y.value?(l(),i("div",ae,[e("small",ie,[d(c,{t:"Are you sure to remove this peer?"})]),t[2]||(t[2]=e("br",null,null,-1)),e("small",oe,[e("samp",null,_(s.id),1)])])):(l(),i("div",te,[e("small",le,[d(o,{class:"text-decoration-none",target:"_blank",to:"/configuration/"+u.configuration+"/peers?id="+encodeURIComponent(s.id)},{default:O(()=>[e("samp",null,_(s.id),1)]),_:2},1032,["to"])]),t[1]||(t[1]=e("br",null,null,-1)),e("small",ne,_(s.name?s.name:"Untitled Peer"),1)])),u.clientAssignedPeers?(l(),i("button",{key:2,onClick:b=>g("assign",s.id),class:N([{disabled:I(r).assigning},"btn bg-success-subtle text-success-emphasis ms-auto"])},t[3]||(t[3]=[e("i",{class:"bi bi-plus-circle-fill"},null,-1)]),10,re)):(l(),i("button",{key:3,onClick:b=>g("unassign",s.assignment_id),class:N([{disabled:I(r).unassigning},"btn bg-danger-subtle text-danger-emphasis ms-auto"]),"aria-label":"Delete Assignment"},t[4]||(t[4]=[e("i",{class:"bi bi-trash-fill"},null,-1)]),10,de))]))),128))])]))])}}}),ce={key:0,class:"d-flex rounded-0 border-0 flex-column d-flex flex-column border-bottom pb-1"},ue={class:"d-flex flex-column p-3 gap-3"},me={class:"d-flex align-items-center"},be={class:"mb-0"},ge={class:"text-bg-primary badge ms-2"},ve={class:"text-bg-info badge ms-2"},fe={class:"rounded-3 availablePeers border h-100 overflow-scroll flex-grow-1 d-flex flex-column"},pe={key:0,class:"text-muted m-auto p-3"},he={key:0,style:{height:"500px"},class:"d-flex flex-column p-3"},ye={class:"availablePeers border h-100 card rounded-3"},xe={class:"card-header sticky-top p-3"},_e={class:"mb-0 d-flex align-items-center"},ke={class:"card-body p-0 overflow-scroll"},we={key:0,class:"text-muted m-auto"},Ce={class:"card-footer d-flex gap-2 p-3 align-items-center justify-content-end"},Pe={key:1},Se=$({__name:"clientAssignedPeers",props:["client","clientAssignedPeers"],emits:["refresh"],setup(u,{emit:h}){const a=u,g=p(!1),r=B(),m=p(!1),y=h,v=async(o,s,b)=>{await r.assignClient(o,s,b,!1),y("refresh")},n=async o=>{await r.unassignClient(void 0,void 0,o),y("refresh")},t=p("");return(o,s)=>(l(),i("div",null,[g.value?(l(),i("div",Pe,s[8]||(s[8]=[e("div",{class:"p-3 placeholder-
|
2025-08-25 16:07:17 +08:00
|
|
|
|
|
|
|
|
|
We received a request to reset the password for your account. You can reset your password by visiting the link below:
|
|
|
|
|
|
|
|
|
|
${v(o)}
|
|
|
|
|
|
|
|
|
|
This link will expire in 30 minutes for your security. If you didn’t request a password reset, you can safely ignore this email—your current password will remain unchanged.
|
|
|
|
|
|
|
|
|
|
If you need help, feel free to contact support.
|
|
|
|
|
|
|
|
|
|
Best regards,
|
2025-08-27 19:39:52 +08:00
|
|
|
|
WGDashboard`};await R("/api/email/send",b,x=>{x.status?(r.value="Send email success.",a.value=!0):(r.value="Send email failed.",g.value=!1,a.value=!0)})}else r.value=`Please share this URL to your client to reset the password: ${v(o)}`,a.value=!0;else g.value=!1,r.value=s.message,a.value=!0}),m.value=!1};return(t,o)=>(l(),i("div",$e,[e("div",De,[e("h6",Ae,[d(c,{t:"Reset Password"})]),e("button",{class:N(["btn btn-sm bg-primary-subtle text-primary-emphasis rounded-3 ms-auto",{disabled:m.value}]),onClick:o[0]||(o[0]=s=>n())},[o[1]||(o[1]=e("i",{class:"bi bi-send me-2"},null,-1)),m.value?(l(),w(c,{key:1,t:"Sending..."})):(l(),w(c,{key:0,t:"Send Password Reset Link"}))],2)]),a.value?(l(),i("div",{key:0,class:N(["alert rounded-3 mb-0",[g.value?"alert-success":"alert-danger"]])},_(r.value),3)):k("",!0)]))}}),Ie={class:"p-3 d-flex gap-3 flex-column border-bottom"},Re={class:"d-flex align-items-center gap-2"},Le={class:"mb-0"},je=$({__name:"clientDelete",props:["client"],emits:["refresh"],setup(u,{emit:h}){const a=u,g=p(!1),r=p(!1),m=h,y=j(),v=async()=>{g.value=!0,await R("/api/clients/deleteClient",{ClientID:a.client.ClientID},n=>{g.value=!1,n.status?(m("deleteSuccess"),y.newMessage("Server","Delete client successfully","success")):y.newMessage("Server","Failed to delete client","danger")})};return(n,t)=>(l(),i("div",Ie,[e("div",Re,[e("h6",Le,[r.value?(l(),w(c,{key:1,t:"Are you sure to delete this client?"})):(l(),w(c,{key:0,t:"Delete Client"}))]),r.value?k("",!0):(l(),i("button",{key:0,class:"btn btn-sm bg-danger-subtle text-danger-emphasis rounded-3 ms-auto",onClick:t[0]||(t[0]=o=>r.value=!0)},[t[2]||(t[2]=e("i",{class:"bi bi-trash-fill me-2"},null,-1)),d(c,{t:"Delete"})])),r.value?(l(),i(C,{key:1},[e("button",{onClick:v,class:"btn btn-sm bg-danger-subtle text-danger-emphasis rounded-3 ms-auto"},[t[3]||(t[3]=e("i",{class:"bi bi-trash-fill me-2"},null,-1)),d(c,{t:"Yes"})]),r.value?(l(),i("button",{key:0,class:"btn btn-sm bg-secondary-subtle text-secondary-emphasis rounded-3",onClick:t[1]||(t[1]=o=>r.value=!1)},[t[4]||(t[4]=e("i",{class:"bi bi-x-lg me-2"},null,-1)),d(c,{t:"No"})])):k("",!0)],64)):k("",!0)])]))}}),Be={class:"p-4 border-bottom bg-body-tertiary z-0"},Ue={class:"mb-3 backLink"},Me={class:"text-muted"},Ve={class:"d-flex flex-column gap-2"},Oe={class:"d-flex align-items-center"},Ge={class:"text-muted"},ze={class:"ms-auto"},Ee={class:"d-flex align-items-center gap-2"},Te={class:"text-muted"},We={style:{flex:"1 0 0","overflow-y":"scroll"}},qe={key:1,class:"d-flex w-100 h-100 text-muted"},Fe={class:"m-auto text-center"},He=$({__name:"clientViewer",emits:["deleteSuccess"],async setup(u,{emit:h}){let a,g;const r=B(),m=j(),y=q(),v=E(),n=M(()=>r.getClientById(y.params.id)),t=p({}),o=async()=>{await T("/api/clients/assignedPeers",{ClientID:n.value.ClientID},D=>{t.value=D.data})},s=F({Name:void 0});n.value?(H(()=>n.value.ClientID,async()=>{s.Name=n.value.Name,await o()}),[a,g]=Y(()=>o()),await a,g(),s.Name=n.value.Name):(v.push("/clients"),m.newMessage("WGDashboard","Client does not exist","danger"));const b=p(!1),x=async()=>{b.value=!0,await R("/api/clients/updateProfileName",{ClientID:n.value.ClientID,Name:s.Name},D=>{D.status?(n.value.Name=s.Name,m.newMessage("Server","Client name update success","success")):(s.Name=n.value.Name,m.newMessage("Server","Client name update failed","danger")),b.value=!1})},P=async()=>{await v.push("/clients"),await r.getClients()};return(D,f)=>{const W=V("RouterLink");return n.value?(l(),i("div",{class:"text-body d-flex flex-column overflow-y-scroll h-100",key:n.value.ClientID},[e("div",Be,[e("div",Ue,[d(W,{to:"/clients",class:"text-body text-decoration-none"},{default:O(()=>f[4]||(f[4]=[e("i",{class:"bi bi-arrow-left me-2"},null,-1),S(" Back")])),_:1,__:[4]})]),e("small",Me,[d(c,{t:"Email"})]),e("h1",null,_(n.value.Email),1),e("div",Ve,[e("div",Oe,[e("small",Ge,[d(c,{t:"Client ID"})]),e("small",ze,[e("samp",null,_(n.value.ClientID),1)])]),e("div",Ee,[e("small",Te,[d(c,{t:"Client Name"})]),G(e("input",{class:"form-control form-control-sm rounded-3 ms-auto",style:{width:"300px"},type:"text","o
|