Your IP : 216.73.216.43


Current Path : /snap/lxd/38450/share/lxd-ui/assets/
Upload File :
Current File : //snap/lxd/38450/share/lxd-ui/assets/CertificateAdd-B_s1CVTF.js

import{b as L,u as p,c as k,j as e,d as t,R as l,A as g,e as R,r as f,f as E,h as G,k as B,i as j,N as h,l as F,m as $,n as I,o as M,p as _}from"./index-BsQN_SZU.js";import{G as q}from"./GroupSelection-BCidmw-m.js";import{u as z}from"./useAuthGroups-D8vRxz3-.js";import{N as P}from"./NameWithGroupForm-CI9Ry6wx.js";import{C as W}from"./CodeSnippetWithCopyButton-X-nQ1jRt.js";import"./PermissionGroupsFilter-CX61qN2q.js";import"./SelectableMainTable-DBx4rRiq.js";import"./useSortTableData-DkMx8bMp.js";const C=()=>{const{data:o}=L(),{authMethod:r}=p(),a=o?.client_certificate,i=r===g.BEARER,c=k();return e.jsxs(e.Fragment,{children:[!i&&e.jsx(t.Notification,{title:"Identity trust token",severity:"information",children:"In order for your browser certificate to be added to the server’s trust store, you must present an identity trust token generated by the server."}),i&&e.jsx(t.Notification,{title:"TLS identity",severity:"information",children:"Confirm the name and auth groups for your permanent access."}),a===!1&&e.jsx(t.Notification,{severity:"caution",title:"Missing client certificate",actions:[{label:"Go back to step 1",onClick:()=>{c(`${l}/ui/login/certificate-generate`)}}],children:"You are missing an installed client certificate. You may not be able to authenticate."})]})},D=()=>{const{isAuthenticated:o,isAuthLoading:r,authMethod:a}=p(),i=t.useNotify(),c=k(),{data:u=[],error:y}=z(),{data:x=[],error:b}=R(),v=a===g.BEARER,w=f.useCallback(n=>{const d=x.map(T=>T.name);if(!d.includes(n))return n;let m=2;for(;d.includes(`${n}-${m}`);)m++;return`${n}-${m}`},[x]),N=f.useMemo(()=>u.find(d=>d.name==="admins")?["admins"]:[],[u]);y&&i.failure("Loading details failed",y),b&&i.failure("Loading identities failed",b);const A=n=>{$(n.name,n.groups??[],!1).then(()=>{I()}).catch(d=>{s.setSubmitting(!1),i.failure("Identity creation failed",d)})},S=E().shape({name:G().required("Identity name is required").test("unique-name","An identity with this name already exists",function(n){return n?!x.map(m=>m.name).includes(n):!0})}),s=B({initialValues:{name:w("lxd-ui"),groups:N},validationSchema:S,onSubmit:A,enableReinitialize:!0});return r?e.jsx(t.Spinner,{className:"u-loader",text:"Loading...",isMainComponent:!0}):o&&j(a)?e.jsx(h,{to:`${l}/ui`,replace:!0}):!o||!v?e.jsx(h,{to:`${l}/ui/login`,replace:!0}):e.jsx(t.CustomLayout,{mainClassName:"certificates-with-bearer-token",children:e.jsxs(t.Row,{children:[e.jsx(F,{variant:"horizontal",step2Name:"Create TLS identity"}),i.notification?e.jsx(t.NotificationConsumer,{}):e.jsx(C,{}),e.jsx(P,{formik:s}),e.jsx("p",{children:"Auth groups"}),e.jsx(q,{groups:u,modifiedGroups:new Set(s.values.groups),parentItemName:"",selectedGroups:new Set(s.values.groups),setSelectedGroups:n=>{s.setFieldValue("groups",n)},toggleGroup:n=>{},scrollDependencies:[u,s.values.groups?.length,i.notification,s],belowIds:["create-tls-identity-with-bearer-token-footer","status-bar"],disabled:!0}),e.jsxs("div",{id:"create-tls-identity-with-bearer-token-footer",className:"u-flex create-tls-identity-with-bearer-token-footer",children:[e.jsx(t.Button,{appearance:"base",onClick:()=>{c(`${l}/ui/login/certificate-generate`)},className:"u-no-margin--bottom",children:"Cancel"}),e.jsx(t.ActionButton,{appearance:"positive",onClick:()=>{s.submitForm()},disabled:!s.isValid||s.isSubmitting||!s.values.name,loading:s.isSubmitting,className:"u-no-margin--bottom",children:"Create identity"})]})]})})},H=()=>{const o=t.useNotify(),[r,a]=f.useState(""),i=()=>{const c=r.trim().split(/\r?\n|\r|\n/g).at(-1)??"";M(c).then(()=>{location.reload()}).catch(u=>o.failure("Error using token",u))};return e.jsxs(t.Form,{children:[e.jsx(t.Textarea,{id:"token",name:"token",label:"Paste the identity trust token below:",placeholder:"Enter identity trust token",rows:5,onChange:c=>{a(c.target.value)}}),e.jsx(t.Button,{appearance:"positive",disabled:r.length<1,type:"button",onClick:i,children:"Connect"})]})},O=()=>{const{isAuthenticated:o,isAuthLoading:r,authMethod:a}=p(),i=t.useNotify(),c="if ! lxc auth group show admins ; then lxc auth group create admins ; lxc auth group permission add admins server admin ; fi ; lxc auth identity create tls/lxd-ui --group admins";return r?e.jsx(t.Spinner,{className:"u-loader",text:"Loading...",isMainComponent:!0}):o&&j(a)?e.jsx(h,{to:`${l}/ui`,replace:!0}):e.jsx(t.CustomLayout,{mainClassName:"certificate-generate",children:e.jsxs(t.Row,{children:[e.jsx(t.Col,{size:2}),e.jsxs(t.Col,{size:8,children:[i.notification?e.jsx(_,{}):e.jsx(t.Row,{children:e.jsx(C,{})}),e.jsxs("div",{className:"p-stepped-list__content",children:[e.jsx("p",{children:"Paste the following commands into the console of the machine where LXD is running:"}),e.jsx(W,{code:c}),e.jsx(t.Accordion,{sections:[{title:e.jsx(e.Fragment,{children:"What does this command do?"}),content:e.jsxs(e.Fragment,{children:[e.jsx("p",{children:"The above command is a one-line equivalent for the following steps:"}),e.jsxs("div",{children:["First, the command checks to see if there is an auth group ",e.jsx("code",{children:"admins"}),"."]}),e.jsx(t.CodeSnippet,{blocks:[{code:"if ! lxc auth group show admins",wrapLines:!0}]}),e.jsxs("div",{children:["If there is no group ",e.jsx("code",{children:"admins"}),", it is created."]}),e.jsx(t.CodeSnippet,{blocks:[{code:"lxc auth group create admins",wrapLines:!0}]}),e.jsxs("div",{children:["The new group ",e.jsx("code",{children:"admins"})," is given server admin permissions."]}),e.jsx(t.CodeSnippet,{blocks:[{code:"lxc auth group permission add admins server admin",wrapLines:!0}]}),e.jsxs("div",{children:["Finally, a new identity ",e.jsx("code",{children:"lxd-ui"})," is created and added to the group ",e.jsx("code",{children:"admins"}),". This command returns the identity trust token which should be pasted below."]}),e.jsx(t.CodeSnippet,{blocks:[{code:"lxc auth identity create tls/lxd-ui --group admins",wrapLines:!0}]})]})}]})]}),e.jsxs("div",{className:"p-stepped-list__content",children:[e.jsx("br",{}),e.jsx(H,{})]})]})]})})},ee=()=>{const{isAuthenticated:o,isAuthLoading:r,authMethod:a}=p(),i=a===g.BEARER;return r?e.jsx(t.Spinner,{className:"u-loader",text:"Loading...",isMainComponent:!0}):o&&j(a)?e.jsx(h,{to:`${l}/ui`,replace:!0}):o&&i?e.jsx(D,{}):e.jsx(O,{})};export{ee as default};