masks-server 0.14.1 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/public/masks-assets/.vite/manifest.json +2 -2
- data/public/masks-assets/assets/app-CjR8LdGZ.css +2 -0
- data/public/masks-assets/assets/manage-DbLHfFvt.js +605 -0
- data/public/masks-assets/assets/manage-DbLHfFvt.js.map +1 -0
- data/version.txt +1 -1
- metadata +4 -4
- data/public/masks-assets/assets/app-Cfbt-A5V.css +0 -2
- data/public/masks-assets/assets/manage-VgOqKj7N.js +0 -605
- data/public/masks-assets/assets/manage-VgOqKj7N.js.map +0 -1
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
import{A as e,B as t,C as n,D as r,E as i,F as a,G as o,H as s,I as c,J as l,K as u,L as d,M as f,N as p,O as m,P as h,Q as g,R as _,S as v,T as y,U as b,V as x,X as S,Y as C,Z as w,_ as T,a as E,at as D,b as O,c as k,ct as A,d as j,dt as M,et as N,f as P,ft as F,g as I,h as L,i as R,it as ee,j as z,k as B,l as V,lt as H,m as te,o as ne,ot as U,p as W,pt as re,q as G,rt as ie,s as K,st as ae,t as q,tt as J,u as oe,ut as Y,v as se,w as X,y as ce,z as le}from"./initial-Cn-UuAsy.js";var ue=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~`;function de(e=64){let t=new Uint8Array(e);crypto.getRandomValues(t);let n=``;for(let e of t)n+=ue[e%66];return n}function fe(e){let t=``;for(let n of new Uint8Array(e))t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}async function pe(e){return fe(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)))}var me=`S256`;async function he(){let e=await crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`,`verify`]),t=await crypto.subtle.exportKey(`jwk`,e.publicKey);return{privateKey:e.privateKey,jwk:{kty:t.kty,crv:t.crv,x:t.x,y:t.y}}}var ge=e=>fe(new TextEncoder().encode(JSON.stringify(e)).buffer);async function _e(e,t,n,r){let i=new URL(n),a={typ:`dpop+jwt`,alg:`ES256`,jwk:e.jwk},o={jti:de(32),htm:t.toUpperCase(),htu:`${i.origin}${i.pathname}`,iat:Math.floor(Date.now()/1e3)};r&&(o.ath=fe(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(r))));let s=`${ge(a)}.${ge(o)}`;return`${s}.${fe(await crypto.subtle.sign({name:`ECDSA`,hash:`SHA-256`},e.privateKey,new TextEncoder().encode(s)))}`}var ve=`masks`,ye=`keys`,be=`dpop`,xe;function Se(){return xe??=new Promise((e,t)=>{let n=indexedDB.open(ve,1);n.onupgradeneeded=()=>n.result.createObjectStore(ye),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}).catch(e=>{throw xe=void 0,e}),xe}function Ce(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}async function we(){try{let e=await Se(),t=await Ce(e.transaction(ye).objectStore(ye).get(be));if(t)return t;let n=await he();return await Ce(e.transaction(ye,`readwrite`).objectStore(ye).put(n,be)),n}catch{return he()}}async function Te(){try{await Ce((await Se()).transaction(ye,`readwrite`).objectStore(ye).delete(be))}catch{}}var Ee={no_token:[`invalid_token`,`the request carries no token`],not_a_jwt:[`invalid_token`,`that token is not a signed JWT`],no_key:[`invalid_token`,`{issuer} publishes no key {kid}`],not_signed_by:[`invalid_token`,`that token was not signed by {issuer}`],not_an_algorithm:[`invalid_token`,`{algorithm} is not an algorithm masks signs with`],wrong_type:[`invalid_token`,`that token is typed {typ}, not {wanted}`],expired:[`invalid_token`,`that token has expired`],not_valid_yet:[`invalid_token`,`that token is not valid yet`],issued_in_future:[`invalid_token`,`that token was issued in the future`],other_issuer:[`invalid_token`,`that token was issued by another server`],other_audience:[`invalid_token`,`that token was issued for another app`],missing_claims:[`invalid_token`,`that token is missing {claims}`],unverified:[`invalid_token`,`that token could not be verified`],too_old:[`invalid_token`,`the person signed in longer ago than max_age allows`],bound_as_bearer:[`invalid_token`,`that token is held to a key, so it is presented as DPoP with a proof`],unbound_as_dpop:[`invalid_token`,`that token is held to no key, so it is presented as Bearer`],not_active:[`invalid_token`,`the issuer reports this token is not active`],no_id_token:[`invalid_token`,`the token endpoint answered without an ID token`],id_token_other_sign_in:[`invalid_token`,`that ID token was issued for another sign-in`],id_token_other_client:[`invalid_token`,`that ID token was issued to another client`],id_token_several_audiences:[`invalid_token`,`that ID token names several audiences and was not issued to this client`],id_token_other_access_token:[`invalid_token`,`that ID token was issued with another access token`],id_token_other_organization:[`invalid_token`,`that ID token does not name the organization {organization}`],not_a_logout:[`invalid_token`,`that token is not about a logout`],logout_names_nobody:[`invalid_token`,`that logout token names neither a subject nor a session`],logout_with_nonce:[`invalid_token`,`that logout token carries a nonce, so it is an ID token`],one_proof:[`invalid_dpop_proof`,`exactly one DPoP proof is required`],proof_not_a_jwt:[`invalid_dpop_proof`,`that proof is not a signed JWT`],proof_type:[`invalid_dpop_proof`,`a proof is typed {typ}`],proof_algorithm:[`invalid_dpop_proof`,`{algorithm} is not an algorithm a proof may use`],proof_no_key:[`invalid_dpop_proof`,`a proof carries the public key that signed it`],proof_key_private:[`invalid_dpop_proof`,`a proof key is public`],proof_key_unreadable:[`invalid_dpop_proof`,`that proof carries a key this API cannot read`],proof_unsigned:[`invalid_dpop_proof`,`that proof was not signed by the key it carries`],proof_other_key:[`invalid_dpop_proof`,`that proof was signed by another key than the token is held to`],proof_other_token:[`invalid_dpop_proof`,`that proof was made for another token`],proof_other_method:[`invalid_dpop_proof`,`that proof was made for another method`],proof_other_url:[`invalid_dpop_proof`,`that proof was made for another URL`],proof_not_now:[`invalid_dpop_proof`,`that proof was not made just now`],proof_no_jti:[`invalid_dpop_proof`,`a proof carries a jti`],proof_replayed:[`invalid_dpop_proof`,`that proof has already been used`],no_scope:[`insufficient_scope`,`this token does not carry {scope}`],not_granted:[`insufficient_scope`,`masks did not grant {scopes}`],no_privilege:[`insufficient_scope`,`this account does not hold the {privilege} privilege`],no_organization:[`insufficient_organization`,`this sign-in names no organization`],other_organization:[`insufficient_organization`,`this sign-in is for {held}, and this needs {wanted}`],other_role:[`insufficient_role`,`{role} in {organization} is not {roles}`],unreachable:[`temporarily_unavailable`,`{host} could not be reached`],keys_unreachable:[`temporarily_unavailable`,`{issuer} could not be reached for its keys`],replay_store_unreachable:[`temporarily_unavailable`,`the replay store could not be reached`],replay_store_answer:[`temporarily_unavailable`,`the replay store answered with something other than true or false`],store_unreachable:[`temporarily_unavailable`,`the store could not be reached`],not_checked:[`temporarily_unavailable`,`the token could not be checked`],plain_http:[`insecure_url`,`plain http is allowed only on this machine: {url}`],not_http:[`insecure_url`,`{url} is not an http or https URL`],other_origin:[`foreign_origin`,`that URL belongs to another origin: {url}`],tokens_only_for:[`foreign_origin`,`tokens are held only for {origins}, not {origin}`],answered_status:[`server_error`,`{url} answered {status}`],not_json:[`server_error`,`{url} answered with something other than JSON`],not_an_object:[`server_error`,`{url} answered with JSON that is not an object`],too_large:[`server_error`,`{url} answered with more than a megabyte`],publishes_nothing:[`invalid_issuer`,`{issuer} publishes no {name}`],names_another:[`invalid_issuer`,`{issuer} publishes a document naming {found}`],resource_names_another:[`invalid_target`,`{url} publishes metadata naming {found}`],state_mismatch:[`invalid_state`,`the state did not match the one this sign-in started with`],nothing_in_flight:[`invalid_request`,`this browser has no sign-in in flight`],no_callback_code:[`invalid_request`,`the callback carried no code`],code_expired:[`expired_token`,`the code expired before anyone approved it`],no_refresh_token:[`invalid_grant`,`there is no refresh token to renew these tokens with`],not_held_to_key:[`invalid_dpop_proof`,`the token endpoint answered with a token that is not held to this key`],no_avatars:[`invalid_style`,`{issuer} does not serve {style} avatars`],not_connected:[`handshake_required`,`this app has not shaken hands with {issuer}`],nothing_connected:[`access_denied`,`masks connected nothing for {provider}`],no_refresh_for_connection:[`invalid_grant`,`masks issued no refresh token to keep the connection with`],delegation_not_answering:[`temporarily_unavailable`,`masks is not answering`]};function De(e,...t){let[n,r]=Ee[e],i=0;return{code:n,description:r.replaceAll(/\{[a-z_]+\}/g,()=>String(t[i++]))}}function Oe(e,...t){return De(e,...t).description}function ke(e,t){return t?`masks: ${e}: ${t}`:`masks: ${e}`}var Ae=class extends Error{code;description;status;uri;constructor(e,t,n={}){super(ke(e,t)),this.name=`MasksError`,this.code=e,this.description=t,this.status=n.status,this.uri=n.uri}},je=class e extends Ae{constructor(e,t,n={}){super(e,t,n),this.name=`Refused`}static of(t,...n){let{code:r,description:i}=De(t,...n);return new e(r,i)}},Me=class e extends Ae{constructor(e,t={}){super(t.code??`invalid_token`,e),this.name=`InvalidToken`}static of(t,...n){let{code:r,description:i}=De(t,...n);return new e(i,{code:r})}},Ne=class e extends Ae{constructor(e){super(`insecure_url`,e),this.name=`Insecure`}static of(t,...n){return new e(Oe(t,...n))}},Pe=30,Fe=[`iss`,`sub`,`aud`,`exp`,`iat`],Ie={RS256:{importing:{name:`RSASSA-PKCS1-v1_5`,hash:`SHA-256`},signing:{name:`RSASSA-PKCS1-v1_5`}},ES256:{importing:{name:`ECDSA`,namedCurve:`P-256`},signing:{name:`ECDSA`,hash:`SHA-256`}}};function Le(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t.padEnd(t.length+(4-t.length%4)%4,`=`)),r=new Uint8Array(new ArrayBuffer(n.length));for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function Re(e){return btoa(String.fromCharCode(...e)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function ze(e){try{let t=JSON.parse(new TextDecoder().decode(Le(e)));if(!t||typeof t!=`object`||Array.isArray(t))throw Me.of(`not_a_jwt`);return t}catch{throw Me.of(`not_a_jwt`)}}function Be(e){return Array.isArray(e)?e.map(String):e==null?[]:[String(e)]}async function Ve(e){let t=new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)));return Re(t.subarray(0,t.length/2))}async function He(e,{issuer:t,audience:n,nonce:r,accessToken:i,maxAge:a,keyFor:o,leeway:s=Pe}){let[c,l,u,...d]=e.split(`.`);if(!c||!l||u===void 0||d.length>0)throw Me.of(`not_a_jwt`);let f=ze(c),p=Ie[String(f.alg)];if(!p)throw Me.of(`not_an_algorithm`,String(f.alg));if(f.typ!==void 0&&String(f.typ).toLowerCase().replace(/^application\//,``)!==`jwt`)throw Me.of(`wrong_type`,String(f.typ),`jwt`);let m=await crypto.subtle.importKey(`jwk`,{...await o(String(f.kid??``)),alg:String(f.alg)},p.importing,!1,[`verify`]);if(!await crypto.subtle.verify(p.signing,m,Le(u),new TextEncoder().encode(`${c}.${l}`)))throw Me.of(`not_signed_by`,t);let h=ze(l),g=Math.floor(Date.now()/1e3);if(String(h.iss??``).replace(/\/$/,``)!==t)throw Me.of(`other_issuer`);let _=Be(h.aud);if(!_.includes(n))throw Me.of(`other_audience`);for(let e of Fe)if(h[e]===void 0)throw Me.of(`missing_claims`,e);if(typeof h.exp==`number`&&g-s>=h.exp)throw Me.of(`expired`);if(typeof h.nbf==`number`&&h.nbf-s>g)throw Me.of(`not_valid_yet`);if(typeof h.iat==`number`&&h.iat-s>g)throw Me.of(`issued_in_future`);if(_.length>1&&h.azp===void 0)throw Me.of(`id_token_several_audiences`);if(h.azp!==void 0&&h.azp!==n)throw Me.of(`id_token_other_client`);if(h.nonce!==r)throw Me.of(`id_token_other_sign_in`);if(i!==void 0&&typeof h.at_hash==`string`&&h.at_hash!==await Ve(i))throw Me.of(`id_token_other_access_token`);if(a!==void 0&&!(typeof h.auth_time==`number`&&h.auth_time+a+s>=g))throw Me.of(`too_old`);return h}function Ue(e){return e?Array.isArray(e)?e:e.split(/\s+/).filter(Boolean):[]}var We=`masks:pending`,Ge=`masks:session`;function Ke(e){let t=e.issuer.replace(/\/$/,``),n=e.fetch??globalThis.fetch.bind(globalThis),r=e.storage??globalThis.sessionStorage,i=Ue(e.scope??[`openid`,`profile`,`email`]),a=Ue(e.resource),o=globalThis.location?.origin,s=e.clientId??(o&&`${o}/oauth/client.json`),c=e.redirectUri??(o&&`${o}/`);if(!globalThis.crypto?.subtle)throw new Ne(`serve the page over https, or from localhost, since the browser hides the cryptography a sign-in needs on any other http page`);if(!s||!c)throw new je(`invalid_request`,`pass clientId and redirectUri when the client runs outside a browser`);let l=qe(r),u=null,d=l?.tokens??null,f=l?.identity??null,p=null,m=null,h=null,g=async(t,n,r)=>e.dpop?(h??=we(),{DPoP:await _e(await h,t,n,r)}):{},_=0,v=()=>{d=null,f=null,y()},y=()=>{try{d?r.setItem(Ge,JSON.stringify({tokens:d,identity:f})):r.removeItem(Ge)}catch{}},b=async()=>{if(u)return u;let e=await n(`${t}/.well-known/openid-configuration`,{headers:{Accept:`application/json`}});if(!e.ok){let{code:n,description:r}=De(`answered_status`,t,e.status);throw new je(n,r,{status:e.status})}let r=await e.json();if(r.issuer?.replace(/\/$/,``)!==t)throw je.of(`names_another`,t,String(r.issuer));return u=r,r},x=async e=>{let{jwks_uri:r}=await b();if(!r)throw je.of(`publishes_nothing`,t,`jwks_uri`);let i=await n(r,{headers:{Accept:`application/json`},...e?{cache:`no-cache`}:{}});if(!i.ok){let{code:e,description:t}=De(`answered_status`,r,i.status);throw new je(e,t,{status:i.status})}let a=await i.json();return Object.fromEntries((a.keys??[]).filter(e=>e.kid&&(!e.use||e.use===`sig`)).map(e=>[e.kid,e]))},S=async(e,n=!1)=>{(n||!p)&&(p=await x(n));let r=p[e];if(r)return r;if(!n)return S(e,!0);throw Me.of(`no_key`,t,e)},C=async e=>{let t=_,{token_endpoint:r}=await b(),i=await n(r,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`,...await g(`POST`,r)},body:new URLSearchParams(e).toString()}),a=await i.json().catch(()=>({}));if(!i.ok){let{code:e,description:t}=a.error?{code:a.error,description:a.error_description}:De(`answered_status`,r,i.status);throw new je(e,t,{status:i.status})}if(t!==_)throw new je(`invalid_grant`,`the client signed out while this request was in flight`);return d={access_token:a.access_token,id_token:a.id_token,refresh_token:a.refresh_token,token_type:a.token_type??`Bearer`,scope:a.scope??``,expires_in:Number(a.expires_in??0),obtained_at:Math.floor(Date.now()/1e3)},d},w=async({returnTo:t,prompt:n,organization:o=e.organization}={})=>{let{authorization_endpoint:l}=await b(),u=de(),d={state:de(24),nonce:i.includes(`openid`)?de(24):``,verifier:u,returnTo:t??`${location.pathname}${location.search}`,...o?{organization:o}:{}};r.setItem(We,JSON.stringify(d));let f=new URLSearchParams([[`response_type`,`code`],[`client_id`,s],[`redirect_uri`,c],[`scope`,i.join(` `)],[`state`,d.state],[`code_challenge`,await pe(u)],[`code_challenge_method`,me]]);d.nonce&&f.append(`nonce`,d.nonce);for(let e of a)f.append(`resource`,e);return n&&f.append(`prompt`,n),o&&f.append(`organization`,o),`${l}?${f.toString()}`},T=async(e,{style:n=`identicon`,size:r}={})=>{let{avatar_endpoint:i,avatar_styles_supported:a}=await b();if(!i)throw je.of(`publishes_nothing`,t,`avatar_endpoint`);if(a&&!a.includes(n))throw je.of(`no_avatars`,t,n);let o=`${i}/${encodeURIComponent(e)}/${n}`;return r?`${o}?size=${r}`:o},E=(e=30)=>!d||Date.now()/1e3+e>=d.obtained_at+d.expires_in,D=async()=>{if(!d?.refresh_token)throw je.of(`no_refresh_token`);let e=d.refresh_token,t=[[`grant_type`,`refresh_token`],[`refresh_token`,e],[`client_id`,s]];for(let e of a)t.push([`resource`,e]);let n;try{n=await C(t)}catch(e){throw e.code===`invalid_grant`&&v(),e}return n.refresh_token??=e,y(),n},O=async()=>(m??=D().finally(()=>{m=null}),await m),k=async e=>{let{revocation_endpoint:t}=await b();t&&await n(t,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams([[`token`,e],[`token_type_hint`,`refresh_token`],[`client_id`,s]]).toString()})},A={async ready(){let e=new URL(window.location.href);if(!(e.searchParams.has(`code`)||e.searchParams.has(`error`))||r.getItem(We)===null)return f;let{returnTo:t}=await A.callback(e.href);return window.history.replaceState(window.history.state,``,t),f},discover:b,authorizeUrl:w,avatarUrl:T,async authorize(e={}){window.location.assign(await w(e))},pending(){return r.getItem(We)!==null},async callback(e=window.location.href){let n=new URL(e).searchParams,i=r.getItem(We);if(r.removeItem(We),n.get(`error`))throw new je(n.get(`error`),n.get(`error_description`)??void 0);if(!i)throw je.of(`nothing_in_flight`);let o=JSON.parse(i);if(n.get(`state`)!==o.state)throw je.of(`state_mismatch`);let l=n.get(`code`);if(!l)throw je.of(`no_callback_code`);let u=[[`grant_type`,`authorization_code`],[`code`,l],[`client_id`,s],[`redirect_uri`,c],[`code_verifier`,o.verifier]];for(let e of a)u.push([`resource`,e]);let d=await C(u);if(o.nonce){if(!d.id_token)throw v(),Me.of(`no_id_token`);try{f=await He(d.id_token,{issuer:t,audience:s,nonce:o.nonce,accessToken:d.access_token,keyFor:S})}catch(e){throw v(),e}let e=f?.org?.key;if(o.organization&&e&&e!==o.organization)throw v(),Me.of(`id_token_other_organization`,o.organization)}return y(),{tokens:d,identity:f,returnTo:o.returnTo}},identity(){return f},organization(){return f?.org??null},organizations(){return f?.orgs??[]},async switchOrganization(e,t={}){window.location.assign(await w({...t,organization:e}))},avatars(){return f?.[`masks:avatars`]??null},async photo(e=f?.sub){if(!e||!d)return null;let t=await n(await T(e,{style:`photo`}),{headers:{Authorization:`${d.token_type} ${d.access_token}`,Accept:`image/*`}});return t.ok?await t.blob():null},refresh:O,async fetch(e,t={}){d?.refresh_token&&E()&&await O();let r=d?.access_token,i=new Headers(t.headers);if(r&&d){i.set(`Authorization`,`${d.token_type} ${r}`);for(let[n,a]of Object.entries(await g(t.method??`GET`,e,r)))i.set(n,a)}return await n(e,{...t,headers:i})},async proof(e,t){return(await g(e,t,d?.access_token)).DPoP??null},async freshAccessToken(e=30){return d?.refresh_token&&E(e)&&await O(),d?.access_token??null},accessToken(){return d?.access_token??null},tokens(){return d},authorization(){return d?`${d.token_type} ${d.access_token}`:null},expired:E,async logout({everywhere:n=!1,postLogoutRedirectUri:i}={}){let a=d;if(_+=1,m=null,h=null,r.removeItem(We),v(),await Promise.all([e.dpop?Te():void 0,a?.refresh_token?k(a.refresh_token).catch(()=>void 0):void 0]),!n)return;let{end_session_endpoint:o}=await b();if(!o)throw je.of(`publishes_nothing`,t,`end_session_endpoint`);let c=new URLSearchParams([[`client_id`,s]]);a?.id_token&&c.append(`id_token_hint`,a.id_token),i&&c.append(`post_logout_redirect_uri`,i),window.location.assign(`${o}?${c.toString()}`)}};return A}function qe(e){try{let t=e.getItem(Ge),n=t?JSON.parse(t):null;return n?.tokens?.access_token?n:null}catch{return null}}var Je=/%\{(\w+)\}/g,Ye={},Xe=new Intl.PluralRules(`en`);function Ze(e,t=`en`){Ye=e??{},Xe=new Intl.PluralRules(t)}function Qe(e){return e.split(`.`).reduce((e,t)=>e?.[t],Ye)}function $e(e,t){return e.replace(Je,(e,n)=>t&&Object.hasOwn(t,n)?String(t[n]):e)}function Z(e,t){let n=Qe(e);if(typeof n==`string`)return $e(n,t);if(n&&typeof n==`object`&&t&&`count`in t){let e=n[Xe.select(Number(t.count))]??n.other;if(typeof e==`string`)return $e(e,t)}return e}var et=`masks:manage:client`,tt=[`openid`,`profile`,`email`,`masks:manage`,`masks:manage:security`,`masks:manage:support`,`masks:manage:read`];function nt(e){try{return JSON.parse(localStorage.getItem(et)||`null`)?.[e]||null}catch{return null}}function rt(e,t){let n=JSON.parse(localStorage.getItem(et)||`{}`);n[e]=t,localStorage.setItem(et,JSON.stringify(n))}function it(e){return nt(e.issuer)||e.clientId||null}function at(e){let t=JSON.parse(localStorage.getItem(et)||`{}`);delete t[e.issuer],localStorage.setItem(et,JSON.stringify(t))}function ot(e){return`${location.origin}${e.root}/callback`}function st(e){let t=new URLSearchParams([[`client_name`,`Manage ${e.tenant.name}`],[`resource`,e.resource],[`scope`,tt.join(` `)],[`return_to`,`${location.origin}${e.root}`],[`post_logout_redirect_uri`,`${location.origin}${e.root}`],[`token_endpoint_auth_method`,`none`],[`redirect_uris`,ot(e)]]);return`${e.issuer}/handshake?${t.toString()}`}async function ct(e,t){let n=await fetch(`${e.issuer}/register`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,Authorization:`Bearer ${t}`},body:JSON.stringify({client_name:`Manage ${e.tenant.name}`,redirect_uris:[ot(e)],token_endpoint_auth_method:`none`})}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error_description||r.error||Z(`pairing.registration_failed`));if(r.client_secret)throw Error(Z(`pairing.secret_issued`));return rt(e.issuer,r.client_id),r.client_id}function lt(e){let t=new Map,n=(e,r)=>e instanceof Blob?(t.set(r,e),null):Array.isArray(e)?e.map((e,t)=>n(e,`${r}.${t}`)):e?.constructor===Object?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,n(t,`${r}.${e}`)])):e;return{held:n(e,`variables`),files:t}}function ut(e){let t=C({ready:!1,identity:null,failure:null}),n=null,r=()=>{let t=it(e);return t?(n||=Ke({issuer:e.issuer,clientId:t,redirectUri:ot(e),scope:tt,resource:e.resource}),n):null},i=async()=>{let e=r();if(!e)throw Error(Z(`api.unregistered`));return e.expired(30)&&await e.refresh(),e.authorization()};return{state:t,paired(){return!!it(e)},signedIn(){return!!r()?.accessToken()},async authorize(e){await r().authorize({returnTo:e})},async callback(){let e=await r().callback();return t.identity=e.identity,t.ready=!0,e},async signOut(){let n=r();if(t.identity=null,!n)return null;let i=n.tokens()?.id_token,a=await n.discover().catch(()=>null);if(n.logout(),!a?.end_session_endpoint)return null;let o=new URLSearchParams({client_id:it(e),post_logout_redirect_uri:`${location.origin}${e.root}`});return i&&o.set(`id_token_hint`,i),`${a.end_session_endpoint}?${o}`},unpair(){r()?.logout(),at(e),n=null},async query(t,n={}){let{held:r,files:a}=lt(n),o={Accept:`application/json`,Authorization:await i()},s;a.size?(s=new FormData,s.append(`operations`,JSON.stringify({query:t,variables:r})),s.append(`map`,JSON.stringify(Object.fromEntries([...a.keys()].map((e,t)=>[t,[e]])))),[...a.values()].forEach((e,t)=>{s.append(String(t),e)})):(o[`Content-Type`]=`application/json`,s=JSON.stringify({query:t,variables:n}));let c=await fetch(e.graphql,{method:`POST`,headers:o,body:s}),l=await c.json().catch(()=>({}));if(c.status===401||c.status===403)throw Error(l.error_description||l.error||Z(`api.refused`));if(l.errors?.length)throw Error(l.errors.map(e=>e.message).join(`; `));return l.data}}}var dt=Symbol(`router`);function ft(e){let t=C({path:location.pathname,search:location.search}),n=()=>{t.path=location.pathname,t.search=location.search};return addEventListener(`popstate`,n),{state:t,get segments(){return t.path.slice(e.length).split(`/`).filter(Boolean)},get query(){return new URLSearchParams(t.search)},href(t){return`${e}${t}`},go(t){history.pushState({},``,`${e}${t}`),n(),scrollTo({top:0})},replace(t){history.replaceState({},``,`${e}${t}`),n()}}}function pt(e){ae(dt,e)}function mt(){return ee(dt)}var ht=f(`<div class="sheet px-6 py-14 text-center"><p class="mx-auto max-w-sm text-sm opacity-85"><!></p></div>`);function gt(t,n){var r=ht(),i=o(r),a=o(i);v(a,()=>n.children),Y(i),Y(r),e(t,r)}var _t=new Set([`$$slots`,`$$events`,`$$legacy`,`to`,`class`,`children`]),vt=f(`<a><!></a>`);function yt(t,n){U(n,!0);let r=R(n,`class`,3,`link link-hover`),i=E(n,_t),a=mt();function s(e){e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button===0&&(e.preventDefault(),e.stopPropagation(),a.go(n.to))}var c=vt();oe(c,e=>({...i,class:r(),href:e,onclick:s}),[()=>a.href(n.to)]);var l=o(c);v(l,()=>n.children),Y(c),e(t,c),D()}var bt=f(`<div class="grid place-items-center py-16" role="status"><span class="loading loading-spinner"></span> <span class="sr-only"> </span></div>`);function xt(t,n){U(n,!0);let r=R(n,`label`,19,()=>Z(`ui.loading`));var i=bt(),a=l(o(i),2),c=G(a,!0);Y(i),s(()=>B(c,r())),e(t,i),D()}var St=f(`<span role="img"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"></svg></span>`),Ct=f(`<span class="marks"></span>`);function wt(i,a){U(a,!0);let c={manager:`<path d="M10 2.75 16 5v4.6c0 3.7-2.5 6.4-6 7.65-3.5-1.25-6-3.95-6-7.65V5z"/>`,key:`<circle cx="6.75" cy="10" r="3.25"/><path d="M10 10h7.25M14.5 10v2.5M17.25 10v2"/>`,invited:`<rect x="2.75" y="4.75" width="14.5" height="10.5" rx="1.5"/><path d="m3.25 5.5 6.75 5.25 6.75-5.25"/>`,unconfirmed:`<circle cx="10" cy="10" r="7"/><path d="M10 6.25v4.5M10 13.75v.01"/>`,waiting:`<circle cx="10" cy="10" r="7"/><path d="M10 6.25V10l2.75 1.75"/>`,help:`<circle cx="10" cy="10" r="7"/><path d="M7.9 7.9a2.15 2.15 0 1 1 3 1.95c-.55.3-.9.75-.9 1.3v.35M10 13.75v.01"/>`,suspended:`<circle cx="10" cy="10" r="7"/><path d="M8.1 7.25v5.5M11.9 7.25v5.5"/>`,blocked:`<circle cx="10" cy="10" r="7"/><path d="m5.05 5.05 9.9 9.9"/>`,dynamic:`<path d="M7 3.25v3.5M13 3.25v3.5"/><rect x="4.75" y="6.75" width="10.5" height="5.5" rx="1.5"/><path d="M10 12.25v4.5"/>`,owns:`<circle cx="8" cy="7" r="3"/><path d="M2.75 16.25c.6-2.9 2.75-4.5 5.25-4.5s4.65 1.6 5.25 4.5M15.5 6.5v5M13 9h5"/>`,signals:`<circle cx="10" cy="10" r="1.5"/><path d="M6.75 13.25a4.6 4.6 0 0 1 0-6.5M13.25 6.75a4.6 4.6 0 0 1 0 6.5M4.4 15.6a7.9 7.9 0 0 1 0-11.2M15.6 4.4a7.9 7.9 0 0 1 0 11.2"/>`,delegates:`<path d="M11.5 3.75h4.75V8.5M16.25 3.75 9.5 10.5"/><path d="M14.5 11.5v3.25c0 .7-.55 1.25-1.25 1.25h-8c-.7 0-1.25-.55-1.25-1.25v-8c0-.7.55-1.25 1.25-1.25H8.5"/>`,mail:`<rect x="2.75" y="4.75" width="14.5" height="10.5" rx="1.5"/><path d="m3.25 5.5 6.75 5.25 6.75-5.25"/>`,archived:`<rect x="2.75" y="4" width="14.5" height="3.5" rx="1"/><path d="M4.25 7.5v7.25c0 .7.55 1.25 1.25 1.25h9c.7 0 1.25-.55 1.25-1.25V7.5M8.25 10.5h3.5"/>`};var l=z(),d=u(l),f=r=>{var i=Ct();X(i,21,()=>a.marks,([e,t,n])=>e,(r,i)=>{var a=J(()=>re(t(i),3));let l=()=>t(a)[0],u=()=>t(a)[1],d=()=>t(a)[2];var f=St(),p=o(f);n(p,()=>c[l()],!0),Y(p),Y(f),s(()=>{ce(f,1,`mark mark-${d()??`quiet`??``}`),P(f,`aria-label`,u()),P(f,`title`,u())}),e(r,f)}),Y(i),e(r,i)};r(d,e=>{a.marks.length&&e(f)}),e(i,l),D()}var Tt=e=>e.devices.some(e=>e.blockedAt),Et=e=>[e.scopes.some(e=>e.startsWith(`masks:`))&&[`manager`,Z(`actors.marks.manager`),`primary`],e.otpEnabled&&[`key`,Z(`actors.marks.second_factor`,{count:e.backupCodesRemaining}),`good`],!e.activated&&[`invited`,Z(`actors.marks.invited`),`info`],e.email&&!e.emailVerified&&[`unconfirmed`,Z(`actors.marks.unconfirmed`),`warn`],e.pendingApproval&&[`waiting`,Z(`actors.marks.waiting`),`warn`],e.recoveryRequestedAt&&[`help`,Z(`actors.marks.help`),`warn`],e.suspendedAt&&[`suspended`,Z(`actors.marks.suspended`),`bad`],Tt(e)&&[`blocked`,Z(`actors.marks.blocked`),`bad`]].filter(Boolean);function Dt(e=25){let t=C({cursors:[null],total:null});return{size:e,state:t,get cursor(){return t.cursors.at(-1)},get first(){return(t.cursors.length-1)*e+1},reset(){t.cursors=[null]},forward(e){t.cursors=[...t.cursors,e]},back(){t.cursors.length>1&&(t.cursors=t.cursors.slice(0,-1))},counted(e){t.total=e}}}var Ot=f(`<nav class="pager"><span class="hint"> </span> <div class="join"><button type="button" class="btn btn-sm join-item"> </button> <button type="button" class="btn btn-sm join-item"> </button></div></nav>`);function kt(n,i){U(i,!0);let a=R(i,`busy`,3,!1),c=J(()=>i.pages.first),f=J(()=>t(c)+i.shown-1),p=J(()=>i.pages.state.total),m=J(()=>i.pages.state.cursors.length>1),h=J(()=>t(p)===null?i.shown===i.pages.size:t(f)<t(p));var g=z(),_=u(g),v=n=>{var r=Ot(),u=o(r),g=G(u,!0),_=l(u,2),v=o(_),y=G(v,!0),b=l(v,2),x=G(b,!0);Y(_),Y(r),s((e,n,i,o)=>{P(r,`aria-label`,e),B(g,n),v.disabled=a()||!t(m),B(y,i),b.disabled=a()||!t(h),B(x,o)},[()=>Z(`ui.pager.label`),()=>t(p)===null?Z(`ui.pager.range`,{first:t(c).toLocaleString(),last:t(f).toLocaleString()}):Z(`ui.pager.range_of`,{first:t(c).toLocaleString(),last:t(f).toLocaleString(),total:t(p).toLocaleString()}),()=>Z(`ui.pager.previous`),()=>Z(`ui.pager.next`)]),d(`click`,v,()=>i.onpage(`back`)),d(`click`,b,()=>i.onpage(`forward`)),e(n,r)};r(_,e=>{i.shown&&(t(m)||t(h))&&e(v)}),e(n,g),D()}c([`click`]);function At(){let e=C({notice:null,failure:null}),t=()=>{e.notice=null,e.failure=null},n=t=>{e.notice=null,e.failure=t?.message??String(t)};return{state:e,clear:t,blame:n,say(t){e.failure=null,e.notice=t},async attempt(r,i=null){t();try{let t=await r()??!0;return i&&(e.notice=i),t}catch(e){return n(e),null}}}}var jt=new Map;function Mt(){return document.documentElement.lang||void 0}function Nt(e,t){let n=`${e}:${Mt()??``}`;return jt.has(n)||jt.set(n,t(Mt())),jt.get(n)}var Pt=()=>Nt(`day`,e=>new Intl.DateTimeFormat(e,{day:`numeric`,month:`short`,year:`numeric`})),Ft=()=>Nt(`moment`,e=>new Intl.DateTimeFormat(e,{day:`numeric`,month:`short`,hour:`2-digit`,minute:`2-digit`})),It=()=>Nt(`relative`,e=>new Intl.RelativeTimeFormat(e,{numeric:`auto`})),Lt=[[`year`,31536e6],[`month`,2592e6],[`week`,6048e5],[`day`,864e5],[`hour`,36e5],[`minute`,6e4]];function Rt(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function zt(e,t=`—`){let n=Rt(e);return n?Pt().format(n):t}function Bt(e,t=`—`){let n=Rt(e);return n?Ft().format(n):t}function Vt(e,t=`—`){let n=Rt(e);if(!n)return t;let r=n.getTime()-Date.now();for(let[e,t]of Lt)if(Math.abs(r)>=t)return It().format(Math.round(r/t),e);return It().format(Math.round(r/1e3),`second`)}function Ht(e,t=`—`){let n=(e??[]).filter(Boolean);return n.length?n.join(` `):t}var Ut=f(`<span class="tip"><button type="button" class="tip-mark">?</button> <span class="tip-body" role="tooltip"> </span></span>`);function Wt(t,n){let r=h();U(n,!0);let i=R(n,`label`,19,()=>Z(`ui.more_about`));var a=Ut(),c=o(a),u=l(c,2),d=G(u,!0);Y(a),s(()=>{P(c,`aria-label`,i()),P(c,`aria-describedby`,r),P(u,`id`,r),B(d,n.text)}),e(t,a),D()}var Gt=f(`<div class="flex items-center gap-2"><h2 class="subhead"> </h2> <!></div>`),Kt=f(`<p class="deck-sm"> </p>`),qt=f(`<div class="flex min-w-0 max-w-full flex-wrap items-center gap-2"><!></div>`),Jt=f(`<div class="section-head"><div class="flex min-w-0 flex-col gap-1.5"><!> <!></div> <!></div>`),Yt=f(`<section><!> <div class="section-body"><!></div></section>`);function Q(n,i){U(i,!0);let a=R(i,`title`,3,null),c=R(i,`lede`,3,null),u=R(i,`help`,3,null),d=R(i,`row`,3,!1);var f=Yt();let p;var m=o(f),h=n=>{var d=Jt(),f=o(d),p=o(f),m=n=>{var i=Gt(),c=o(i),d=G(c,!0),f=l(c,2),p=e=>{{let n=J(()=>Z(`ui.about`,{title:a().toLowerCase()}));Wt(e,{get text(){return u()},get label(){return t(n)}})}};r(f,e=>{u()&&e(p)}),Y(i),s(()=>B(d,a())),e(n,i)};r(p,e=>{a()&&e(m)});var h=l(p,2),g=t=>{var n=Kt(),r=G(n,!0);s(()=>B(r,c())),e(t,n)};r(h,e=>{c()&&e(g)}),Y(f);var _=l(f,2),y=t=>{var n=qt(),r=o(n);v(r,()=>i.actions),Y(n),e(t,n)};r(_,e=>{i.actions&&e(y)}),Y(d),e(n,d)};r(m,e=>{(a()||c()||i.actions)&&e(h)});var g=l(m,2),_=o(g);v(_,()=>i.children),Y(g),Y(f),s(()=>p=ce(f,1,`section`,null,p,{"section-row":d()})),e(n,f),D()}var Xt=f(`<tr class="hover cursor-pointer"><!></tr>`);function Zt(t,n){U(n,!0);let r=mt();function i(e){e.target.closest(`a, button, input, label`)||getSelection()?.toString()||r.go(n.to)}var a=Xt(),s=o(a);v(s,()=>n.children),Y(a),d(`click`,a,i),e(t,a),D()}c([`click`]);var Qt=f(`<div class="join w-full sm:w-auto"><input class="input input-sm join-item w-full sm:w-48 md:w-56" type="search"/> <button type="button" class="btn btn-sm join-item"> </button></div>`);function $t(t,n){U(n,!0);let r=R(n,`value`,15,``);var i=Qt(),a=o(i);j(a);var c=l(a,2),u=G(c,!0);Y(i),s(e=>{P(a,`aria-label`,n.label),P(a,`placeholder`,n.placeholder),B(u,e)},[()=>Z(`ui.search`)]),d(`keydown`,a,e=>e.key===`Enter`&&n.onsearch()),V(a,r),d(`click`,c,function(...e){n.onsearch?.apply(this,e)}),e(t,i),D()}c([`keydown`,`click`]);var en=f(`<th> </th>`),tn=f(`<div class="sheet overflow-x-auto"><table class="table"><thead><tr></tr></thead><tbody><!></tbody></table></div>`);function nn(n,i){U(i,!0);let c=J(()=>i.columns.map(e=>typeof e==`string`?{label:e}:e));var d=z(),f=u(d),p=t=>{gt(t,{children:(t,n)=>{H();var r=a();s(()=>B(r,i.empty)),e(t,r)},$$slots:{default:!0}})},m=n=>{var r=tn(),a=o(r),u=o(a),d=o(u);X(d,21,()=>t(c),y,(n,r)=>{var i=en(),a=G(i,!0);s(()=>{ce(i,1,`${t(r).right?`text-right`:``} ${t(r).hide?`hidden md:table-cell`:``}`),B(a,t(r).label??``)}),e(n,i)}),Y(d),Y(u);var f=l(u),p=o(f);v(p,()=>i.rows),Y(f),Y(a),Y(r),e(n,r)};r(f,e=>{i.count===0?e(p):e(m,-1)}),e(n,d),D()}var rn=f(`<button type="button"> </button>`),an=f(`<!> <div class="range" role="group"></div>`,1),on=f(`<div class="alert alert-warning alert-soft flex-col items-start gap-2"><p class="text-sm"> <code class="font-mono"> </code>. <button type="button" class="link"> </button></p> <label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox"/> </label> <button type="button" class="btn btn-sm btn-error btn-outline"> </button></div>`),sn=f(`<p class="text-sm opacity-85"> <code class="font-mono"> </code>. <button type="button" class="link"> </button></p>`),cn=f(`<span class="hint"> </span>`),ln=f(`<div class="flex flex-wrap items-center gap-3"><label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox"/> </label> <!> <!></div>`),un=f(`<span class="badge badge-error badge-xs"> </span>`),dn=f(`<span class="badge badge-warning badge-xs"> </span>`),fn=f(`<span class="badge badge-success badge-xs"> </span>`),pn=f(`<div class="truncate font-mono text-xs opacity-80"> </div>`),mn=f(` <!>`,1),hn=f(`<div class="truncate"></div>`),gn=f(`<span class="opacity-80"> </span>`),_n=f(`<td class="w-0"><input type="checkbox" class="checkbox"/></td> <td class="max-w-[18rem]"><!> <div class="flex flex-wrap items-center gap-1.5"><span class="truncate text-xs opacity-75"> </span> <!> <!></div> <!></td> <td class="hidden max-w-[16rem] text-xs md:table-cell"><!></td> <td class="hidden font-mono text-xs opacity-85 md:table-cell"> </td> <td class="text-xs whitespace-nowrap opacity-85"> </td>`,1),vn=f(`<!> <!> <!>`,1),yn=f(`<div id="devices" class="scroll-mt-20"><!></div>`);function bn(n,i){U(i,!0);let c=[[`allowed`,Z(`devices.lenses.allowed`),{blocked:!1}],[`blocked`,Z(`devices.lenses.blocked`),{blocked:!0}],[`unattached`,Z(`devices.lenses.unattached`),{unattached:!0}]],f=[``,Z(`devices.columns.device`),{label:Z(`devices.columns.who`),hide:!0},{label:Z(`devices.columns.ip_address`),hide:!0},Z(`devices.columns.last_seen`)],p=w(C([])),m=w(!0),h=w(`allowed`),g=w(``),_=w(``),v=w(C(new Set)),y=w(!1),b=w(!1),x=w(null),T=J(()=>c.find(([e])=>e===t(h))?.[2]??{});async function E(){S(m,!0);let e=await i.feedback.attempt(()=>i.api.query(`
|
|
2
|
+
query Devices($blocked: Boolean, $unattached: Boolean, $agent: String, $limit: Int) {
|
|
3
|
+
devices(blocked: $blocked, unattached: $unattached, agent: $agent, limit: $limit) {
|
|
4
|
+
id label category known ipAddress userAgent lastSeenAt blockedAt
|
|
5
|
+
actors { uuid identifier }
|
|
6
|
+
sessions { id }
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
`,{blocked:t(T).blocked??null,unattached:t(T).unattached??null,agent:t(_)||null,limit:100}));S(m,!1),e&&(S(p,e.devices,!0),S(v,new Set,!0))}E().then(()=>{location.hash===`#devices`&&t(x)?.scrollIntoView()});function O(e){S(h,e,!0),E()}function k(){S(_,t(g).trim(),!0),S(y,!1),E()}function A(){S(g,``),k()}function M(e){let n=new Set(t(v));n.has(e)?n.delete(e):n.add(e),S(v,n,!0)}let N=J(()=>t(p).length>0&&t(v).size===t(p).length);function F(){S(v,t(N)?new Set:new Set(t(p).map(e=>e.id)),!0)}let I=J(()=>t(h)!==`blocked`);function L(e,n){let r=Z(t(I)?`devices.blocked_count`:`devices.unblocked_count`,{count:e});return n?Z(`devices.spared`,{done:r}):r}async function R(e,n){if(!confirm(n))return;S(b,!0);let r=t(I)?`mutation Bulk($ids: [ID!], $agent: String, $refuse: Boolean) {
|
|
10
|
+
blockDevices(ids: $ids, agent: $agent, refuse: $refuse) { count spared }
|
|
11
|
+
}`:`mutation Bulk($ids: [ID!]!) { unblockDevices(ids: $ids) { count } }`,a=await i.feedback.attempt(()=>i.api.query(r,e));if(S(b,!1),!a)return;let o=a.blockDevices??a.unblockDevices;await E(),i.feedback.say(t(y)&&e.agent?Z(`devices.refused`,{done:L(o.count,o.spared),agent:e.agent}):L(o.count,o.spared))}let ee=()=>R({ids:[...t(v)]},t(I)?Z(`devices.block_chosen_question`,{count:t(v).size}):Z(`devices.unblock_chosen_question`,{count:t(v).size})),V=()=>{let e=Z(`devices.block_matching_question`,{agent:t(_)});return R({agent:t(_),refuse:t(y)},t(y)?Z(`devices.block_matching_refuse`,{question:e}):e)},te=J(()=>t(h)===`blocked`?Z(`devices.empty.blocked`):t(h)===`unattached`?Z(`devices.empty.unattached`):Z(`devices.empty.allowed`));var ie=yn(),ae=o(ie);{let n=n=>{var r=an(),i=u(r);{let e=J(()=>Z(`devices.filter_label`));$t(i,{get label(){return t(e)},placeholder:`curl, python-requests`,onsearch:k,get value(){return t(g)},set value(e){S(g,e,!0)}})}var a=l(i,2);X(a,21,()=>c,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=rn(),l=G(c,!0);s(()=>{P(c,`aria-pressed`,t(h)===a()),B(l,o())}),d(`click`,c,()=>O(a())),e(n,c)}),Y(a),s(e=>P(a,`aria-label`,e),[()=>Z(`devices.which`)]),e(n,r)},i=J(()=>Z(`devices.title`));Q(ae,{get title(){return t(i)},actions:n,children:(n,i)=>{var c=vn(),h=u(c),g=n=>{var r=on(),i=o(r),a=o(i),c=l(a),u=G(c,!0),f=l(c,2),p=G(f,!0);Y(i);var m=l(i,2),h=o(m);j(h);var g=l(h);Y(m);var v=l(m,2),x=G(v,!0);Y(r),s((e,n,r,i)=>{B(a,`${e??``} `),B(u,t(_)),B(p,n),B(g,` ${r??``}`),v.disabled=t(b),B(x,i)},[()=>Z(`devices.showing`),()=>Z(`devices.clear`),()=>Z(`devices.refuse_agent`),()=>Z(`devices.block_matching`)]),d(`click`,f,A),K(h,()=>t(y),e=>S(y,e)),d(`click`,v,V),e(n,r)},x=n=>{var r=sn(),i=o(r),a=l(i),c=G(a,!0),u=l(a,2),f=G(u,!0);Y(r),s((e,n)=>{B(i,`${e??``} `),B(c,t(_)),B(f,n)},[()=>Z(`devices.showing_blocked`),()=>Z(`devices.clear`)]),d(`click`,u,A),e(n,r)};r(h,e=>{t(_)&&t(I)?e(g):t(_)&&e(x,1)});var C=l(h,2),w=n=>{var i=ln(),a=o(i),c=o(a);j(c);var u=l(c);Y(a);var f=l(a,2),m=n=>{var r=rn(),i=G(r,!0);s(e=>{ce(r,1,`btn btn-sm ${t(I)?`btn-error btn-outline`:`btn-outline`}`),r.disabled=t(b),B(i,e)},[()=>Z(t(I)?`devices.block_count`:`devices.unblock_count`,{count:t(v).size})]),d(`click`,r,ee),e(n,r)};r(f,e=>{t(v).size&&e(m)});var h=l(f,2),g=t=>{var n=cn(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`devices.newest`,{count:100})]),e(t,n)};r(h,e=>{t(p).length===100&&e(g)}),Y(i),s(e=>{W(c,t(N)),c.indeterminate=t(v).size>0&&!t(N),B(u,` ${e??``}`)},[()=>t(v).size?Z(`devices.chosen`,{count:t(v).size}):Z(`devices.choose_all`,{count:t(p).length})]),d(`change`,c,F),e(n,i)};r(C,e=>{t(p).length&&e(w)});var T=l(C,2),E=e=>{xt(e,{})},D=n=>{nn(n,{get columns(){return f},get count(){return t(p).length},get empty(){return t(te)},rows:n=>{var i=z(),c=u(i);X(c,17,()=>t(p),e=>e.id,(n,i)=>{{let c=J(()=>`/actors/devices/${t(i).id}`);Zt(n,{get to(){return t(c)},children:(n,c)=>{var f=_n(),p=u(f),m=o(p);j(m),Y(p);var h=l(p,2),g=o(h);{let n=J(()=>`/actors/devices/${t(i).id}`);yt(g,{get to(){return t(n)},class:`link link-hover font-medium`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).label)),e(n,o)},$$slots:{default:!0}})}var y=l(g,2),b=o(y),x=G(b,!0),S=l(b,2),C=t=>{var n=un(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`devices.blocked`)]),e(t,n)},w=t=>{var n=dn(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`devices.unrecognised`)]),e(t,n)};r(S,e=>{t(i).blockedAt?e(C):t(i).known||e(w,1)});var T=l(S,2),E=t=>{var n=fn(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`devices.signed_in`)]),e(t,n)};r(T,e=>{t(i).sessions.length&&e(E)}),Y(y);var D=l(y,2),O=n=>{var r=pn(),a=G(r,!0);s(()=>{P(r,`title`,t(i).userAgent),B(a,t(i).userAgent)}),e(n,r)};r(D,e=>{t(_)&&t(i).userAgent&&e(O)}),Y(h);var k=l(h,2),A=o(k),N=n=>{var r=hn();X(r,23,()=>t(i).actors,e=>e.uuid,(n,r,i)=>{H();var o=mn(),c=u(o,!0),d=l(c);{let n=J(()=>`/actors/${t(r).uuid}`);yt(d,{get to(){return t(n)},class:`link link-hover`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).identifier)),e(n,o)},$$slots:{default:!0}})}s(()=>B(c,t(i)?`, `:``)),e(n,o)}),Y(r),e(n,r)},F=t=>{var n=gn(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`devices.nobody_yet`)]),e(t,n)};r(A,e=>{t(i).actors.length?e(N):e(F,-1)}),Y(k);var I=l(k,2),L=G(I,!0),R=l(I,2),ee=G(R,!0);s((e,n,r,a)=>{P(m,`aria-label`,e),W(m,n),B(x,t(i).category),B(L,t(i).ipAddress??`—`),P(R,`title`,r),B(ee,a)},[()=>Z(`devices.choose`,{label:t(i).label}),()=>t(v).has(t(i).id),()=>Bt(t(i).lastSeenAt),()=>Vt(t(i).lastSeenAt)]),d(`change`,m,()=>M(t(i).id)),e(n,f)},$$slots:{default:!0}})}}),e(n,i)},$$slots:{rows:!0}})};r(T,e=>{t(m)&&t(p).length===0?e(E):e(D,-1)}),e(n,c)},$$slots:{actions:!0,default:!0}})}Y(ie),ne(ie,e=>S(x,e),()=>t(x)),e(n,ie),D()}c([`click`,`change`]);var xn=f(`<span class="scope-picker-new"> </span>`),Sn=f(`<li role="option"><!> <span> </span></li>`),Cn=f(`<li class="scope-picker-more" role="presentation"> </li>`),wn=f(`<ul class="scope-picker-list" role="listbox"><!> <!></ul>`),Tn=f(`<div class="scope-picker-field"><input class="input input-sm w-full font-mono" role="combobox" aria-autocomplete="list" autocapitalize="none" autocorrect="off" spellcheck="false"/> <!></div>`),En=f(`<button type="button" class="scope-picker-remove">×</button>`),Dn=f(`<li> <!></li>`),On=f(`<li><button type="button" class="btn btn-ghost btn-xs"> </button></li>`),kn=f(`<ul class="scope-picker-held"><!> <!></ul>`),An=f(`<p class="hint"> </p>`),jn=f(`<div class="scope-picker"><!> <!></div>`);function Mn(n,i){U(i,!0);let a=R(i,`value`,19,()=>[]),c=R(i,`available`,19,()=>[]),u=R(i,`disabled`,3,!1),f=`scopes-${Math.random().toString(36).slice(2,10)}`,p=w(``),m=w(!1),h=w(0),g=w(!1),v=J(()=>[...new Set(a())].sort()),y=J(()=>t(p).trim().toLowerCase()),x=J(()=>[...new Set(c())].filter(e=>!a().includes(e)&&(!t(y)||e.toLowerCase().includes(t(y)))).sort((e,t)=>A(e)-A(t)||e.localeCompare(t))),C=J(()=>t(x).slice(0,40)),T=J(()=>t(p).trim()),E=J(()=>t(T)!==``&&!a().includes(t(T))&&!c().includes(t(T))),O=J(()=>t(E)?[...t(C),t(T)]:t(C)),k=J(()=>t(g)||t(v).length<=24?t(v):t(v).slice(0,24));b(()=>{t(h)>=t(O).length&&S(h,Math.max(t(O).length-1,0),!0)});function A(e){return t(y)&&e.toLowerCase().startsWith(t(y))?0:1}function M(e){e&&!a().includes(e)&&(i.onchange([...a(),e]),S(p,``),S(h,0))}function N(e){i.onchange(a().filter(t=>t!==e))}function F(e){e.key===`ArrowDown`?(e.preventDefault(),S(m,!0),S(h,Math.min(t(h)+1,t(O).length-1),!0)):e.key===`ArrowUp`?(e.preventDefault(),S(h,Math.max(t(h)-1,0),!0)):e.key===`Enter`?(e.preventDefault(),M(t(m)&&t(O).length?t(O)[t(h)]:t(T))):e.key===`Escape`&&S(m,!1)}var I=jn(),L=o(I),ee=n=>{var i=Tn(),a=o(i);j(a);var u=l(a,2),g=n=>{var i=wn(),a=o(i);X(a,18,()=>t(O),e=>e,(n,i,a)=>{var c=Sn();let u;var p=o(c),m=t=>{var n=xn(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`scopes_editor.add_new`)]),e(t,n)};r(p,e=>{t(E)&&t(a)===t(O).length-1&&e(m)});var g=l(p,2);let _;var v=G(g,!0);Y(c),s(e=>{P(c,`id`,`${f}-${t(a)}`),P(c,`aria-selected`,t(a)===t(h)),u=ce(c,1,`scope-picker-option`,null,u,{"scope-picker-active":t(a)===t(h)}),_=ce(g,1,`scope font-mono`,null,_,{"scope-privileged":e}),B(v,i)},[()=>i.startsWith(`masks:`)]),d(`mousedown`,c,e=>{e.preventDefault(),M(i)}),d(`mousemove`,c,()=>S(h,t(a),!0)),e(n,c)});var c=l(a,2),u=n=>{var r=Cn(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`scopes_editor.more`,{count:t(x).length-40})]),e(n,r)};r(c,e=>{t(x).length>40&&e(u)}),Y(i),s(e=>{P(i,`id`,`${f}-list`),P(i,`aria-label`,e)},[()=>Z(`scopes_editor.offered`)]),e(n,i)};r(u,e=>{t(m)&&t(O).length&&e(g)}),Y(i),s((e,n)=>{P(a,`aria-expanded`,t(m)&&t(O).length>0),P(a,`aria-controls`,`${f}-list`),P(a,`aria-activedescendant`,t(m)&&t(O).length?`${f}-${t(h)}`:void 0),P(a,`aria-label`,e),P(a,`placeholder`,n)},[()=>Z(`scopes_editor.label`),()=>Z(`scopes_editor.placeholder`,{count:c().length})]),d(`input`,a,()=>{S(m,!0),S(h,0)}),_(`focus`,a,()=>S(m,!0)),_(`blur`,a,()=>S(m,!1)),d(`keydown`,a,F),V(a,()=>t(p),e=>S(p,e)),e(n,i)};r(L,e=>{u()||e(ee)});var z=l(L,2),H=n=>{var i=kn(),a=o(i);X(a,16,()=>t(k),e=>e,(t,n)=>{var i=Dn(),a=o(i),c=l(a),f=t=>{var r=En();s(e=>P(r,`aria-label`,e),[()=>Z(`scopes_editor.remove`,{scope:n})]),d(`click`,r,()=>N(n)),e(t,r)};r(c,e=>{u()||e(f)}),Y(i),s(e=>{ce(i,1,`badge font-mono text-xs ${e??``}`),B(a,`${n??``} `)},[()=>n.startsWith(`masks:`)?`badge-error badge-soft`:`badge-neutral badge-soft`]),e(t,i)});var c=l(a,2),f=n=>{var r=On(),i=o(r),a=G(i,!0);Y(r),s(e=>B(a,e),[()=>t(g)?Z(`scopes_editor.fewer`):Z(`scopes_editor.all`,{count:t(v).length})]),d(`click`,i,()=>S(g,!t(g))),e(n,r)};r(c,e=>{t(v).length>24&&e(f)}),Y(i),s(e=>P(i,`aria-label`,e),[()=>Z(`scopes_editor.held`,{count:t(v).length})]),e(n,i)},te=t=>{var n=An(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`scopes_editor.none`)]),e(t,n)};r(z,e=>{t(v).length?e(H):e(te,-1)}),Y(I),e(n,I),D()}c([`input`,`keydown`,`mousedown`,`mousemove`,`click`]);var Nn=new Set([`$$slots`,`$$events`,`$$legacy`,`label`,`value`,`type`,`onsave`,`save`]),Pn=f(`<div class="join"><input/> <button type="button" class="btn btn-sm join-item"> </button></div>`),Fn=f(`<input/>`),In=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <!></label>`);function $(t,n){U(n,!0);let i=R(n,`value`,15,``),a=R(n,`type`,3,`text`),c=R(n,`onsave`,3,null),u=R(n,`save`,19,()=>Z(`ui.save`)),f=E(n,Nn);var p=In(),m=o(p),h=G(m,!0),g=l(m,2),_=t=>{var n=Pn(),r=o(n);oe(r,()=>({class:`input input-sm join-item w-full`,type:a(),...f}),void 0,void 0,void 0,void 0,!0);var p=l(r,2),m=G(p,!0);Y(n),s(()=>B(m,u())),V(r,i),d(`click`,p,function(...e){c()?.apply(this,e)}),e(t,n)},v=t=>{var n=Fn();oe(n,()=>({class:`input input-sm w-full`,type:a(),...f}),void 0,void 0,void 0,void 0,!0),V(n,i),e(t,n)};r(g,e=>{c()?e(_):e(v,-1)}),Y(p),s(()=>B(h,n.label)),e(t,p),D()}c([`click`]);var Ln=f(`<div class="alert alert-success alert-soft text-sm" role="status"> </div>`),Rn=f(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),zn=f(`<!> <!>`,1);function Bn(t,n){U(n,!0);var i=zn(),a=u(i),o=t=>{var r=Ln(),i=G(r,!0);s(()=>B(i,n.feedback.notice)),e(t,r)};r(a,e=>{n.feedback.notice&&e(o)});var c=l(a,2),d=t=>{var r=Rn(),i=G(r,!0);s(()=>B(i,n.feedback.failure)),e(t,r)};r(c,e=>{n.feedback.failure&&e(d)}),e(t,i),D()}var Vn=f(`<div><!></div>`),Hn=f(`<p class="stamp"> </p>`),Un=f(`<p class="deck"> </p>`),Wn=f(`<div class="flex w-full flex-wrap items-center gap-2 sm:w-auto"><!></div>`),Gn=f(`<div class="console-page"><!> <header class="flex flex-wrap items-end justify-between gap-x-6 gap-y-4"><div class="flex min-w-0 items-start gap-4"><!> <div class="flex min-w-0 flex-col gap-2"><div class="flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1"><h1 tabindex="-1"> </h1> <!></div> <!> <!></div></div> <!></header> <!></div>`);function Kn(t,n){U(n,!0);let i=R(n,`lede`,3,null),c=R(n,`id`,3,null),d=R(n,`back`,3,null),f=R(n,`hero`,3,!1),p;b(()=>{document.title=n.title}),b(()=>{p?.focus({preventScroll:!0})});var m=Gn(),h=o(m),g=t=>{var n=Vn();yt(o(n),{get to(){return d().to},class:`link link-hover text-sm opacity-85`,children:(t,n)=>{H();var r=a();s(()=>B(r,`← ${d().label??``}`)),e(t,r)},$$slots:{default:!0}}),Y(n),e(t,n)};r(h,e=>{d()&&e(g)});var _=l(h,2),y=o(_),x=o(y),S=t=>{var r=z(),i=u(r);v(i,()=>n.lead),e(t,r)};r(x,e=>{n.lead&&e(S)});var C=l(x,2),w=o(C),T=o(w);let E;var O=G(T,!0);ne(T,e=>p=e,()=>p);var k=l(T,2),A=t=>{var r=z(),i=u(r);v(i,()=>n.after),e(t,r)};r(k,e=>{n.after&&e(A)}),Y(w);var j=l(w,2),M=t=>{var n=Hn(),r=G(n,!0);s(()=>B(r,c())),e(t,n)};r(j,e=>{c()&&e(M)});var N=l(j,2),P=t=>{var n=Un(),r=G(n,!0);s(()=>B(r,i())),e(t,n)};r(N,e=>{i()&&e(P)}),Y(C),Y(y);var F=l(y,2),I=t=>{var r=Wn(),i=o(r);v(i,()=>n.actions),Y(r),e(t,r)};r(F,e=>{n.actions&&e(I)}),Y(_);var L=l(_,2);v(L,()=>n.children),Y(m),s(()=>{E=ce(T,1,`headline min-w-0 break-words outline-none`,null,E,{"headline-hero":f()}),B(O,n.title)}),e(t,m),D()}var qn=f(`<button type="button"> </button>`),Jn=f(`<div class="range" role="group"></div> <!> <button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-primary btn-sm"> </button>`,1),Yn=f(`<label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox checkbox-sm"/> </label>`),Xn=f(`<fieldset class="flex flex-col gap-1"><legend class="field-label"> </legend> <!></fieldset>`),Zn=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea w-full font-mono text-sm" rows="6"></textarea></label> <!> <div class="flex flex-wrap gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),Qn=f(`<code class="tray px-1 text-xs break-all"> </code>`),$n=f(`<li class="flex flex-wrap items-baseline gap-x-2"><span class="font-mono"> </span> <span class="opacity-80"> </span> <!></li>`),er=f(`<ul class="flex flex-col gap-1 text-sm"></ul>`),tr=f(`<p class="hint"> </p>`),nr=f(`<div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <!> <!> <div class="flex flex-col gap-2"><span class="legend"> </span> <!></div> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),rr=f(`<p class="tray px-2 py-1 font-mono text-xs break-all"> </p>`),ir=f(`<p class="text-sm opacity-85"><!></p> <!>`,1),ar=f(`<td class="w-full max-w-0 md:w-auto md:max-w-none"><div class="flex items-center gap-3"><img width="32" height="32" alt=""/> <div class="min-w-0"><div class="flex min-w-0 items-center gap-2"><!> <!></div> <div class="hint truncate text-xs"> <span class="md:hidden"> </span></div></div></div></td> <td class="hidden text-xs whitespace-nowrap opacity-85 md:table-cell"> </td> <td class="hidden text-xs whitespace-nowrap opacity-85 md:table-cell"> </td>`,1),or=f(`<!> <!>`,1),sr=f(`<!> <!> <!> <!> <!> <!> <!>`,1);function cr(n,i){U(i,!0);let c=[],f=Dt(),p=[[`everyone`,Z(`actors.lenses.everyone`),{}],[`invited`,Z(`actors.lenses.invited`),{activated:!1}],[`waiting`,Z(`actors.lenses.waiting`),{pendingApproval:!0}],[`help`,Z(`actors.lenses.help`),{recoveryRequested:!0}],[`managers`,Z(`actors.lenses.managers`),{holds:`masks:manage`}],[`suspended`,Z(`actors.lenses.suspended`),{suspended:!0}]],m=[`openid`,`profile`,`email`,`offline_access`,`identities`],h=[Z(`actors.columns.actor`),{label:Z(`actors.columns.signed_in_on`),hide:!0},{label:Z(`actors.columns.last_seen`),hide:!0}],g=At(),_=w(``),v=w(C([])),y=w(!0),b=mt(),x=w(C(p.find(([e])=>e===b.query.get(`lens`))?.[0]??`everyone`)),T=J(()=>p.find(([e])=>e===t(x))?.[2]??{}),E=w(!1),O=w(!1),A=w(``),M=w(C([])),N=w(C([])),F=w(null),I=!1,L=J(()=>t(F)?.filter(e=>e.outcome===`invited`).length??0);async function R(){if(S(O,!0),S(F,null),I)return;let e=await g.attempt(()=>i.api.query(`query Groups { groups { key name } }`));e&&(S(N,e.groups,!0),I=!0)}async function ee(){S(oe,!0);let e=await g.attempt(()=>i.api.query(`mutation Invite($emails: [String!]!, $groups: [String!]) {
|
|
12
|
+
inviteActors(emails: $emails, groups: $groups) { outcomes { email outcome url } }
|
|
13
|
+
}`,{emails:t(A).split(/[\s,;]+/).filter(Boolean),groups:t(M)}));S(oe,!1),e&&(S(F,e.inviteActors.outcomes,!0),S(O,!1),S(A,``),ue())}let te=w(``),ne=w(``),W=w(``),K=w(C([...m])),ae=w(C([])),q=w(8),oe=w(!1),se=w(null);async function le(){S(y,!0);try{let e=await i.api.query(`
|
|
14
|
+
query Actors(
|
|
15
|
+
$search: String, $activated: Boolean, $holds: String, $pendingApproval: Boolean,
|
|
16
|
+
$recoveryRequested: Boolean, $suspended: Boolean, $afterId: ID, $limit: Int
|
|
17
|
+
) {
|
|
18
|
+
actors(
|
|
19
|
+
search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,
|
|
20
|
+
recoveryRequested: $recoveryRequested, suspended: $suspended, afterId: $afterId, limit: $limit
|
|
21
|
+
) {
|
|
22
|
+
uuid identifier nickname name email emailVerified otpEnabled backupCodesRemaining
|
|
23
|
+
lastLoginAt scopes activated invitedAt pendingApproval recoveryRequestedAt suspendedAt
|
|
24
|
+
avatars { photo identicon }
|
|
25
|
+
|
|
26
|
+
sessions { id }
|
|
27
|
+
devices { id blockedAt }
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
actorCount(
|
|
31
|
+
search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,
|
|
32
|
+
recoveryRequested: $recoveryRequested, suspended: $suspended
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
`,{search:t(_).trim()||null,activated:t(T).activated??null,holds:t(T).holds??null,pendingApproval:t(T).pendingApproval??null,recoveryRequested:t(T).recoveryRequested??null,suspended:t(T).suspended??null,afterId:f.cursor,limit:f.size});S(v,e.actors,!0),f.counted(e.actorCount)}catch(e){g.blame(e)}finally{S(y,!1)}}function ue(){f.reset(),le()}function de(e){e===`forward`?f.forward(t(v).at(-1)?.uuid):f.back(),le()}function fe(e){S(x,e,!0),b.replace(e===`everyone`?`/actors`:`/actors?lens=${e}`),ue()}le();async function pe(){if(S(te,``),S(ne,``),S(W,``),S(K,[...m],!0),S(se,null),S(E,!0),g.clear(),t(ae).length)return;let e=await g.attempt(()=>i.api.query(`query Scopes { scopesSupported minimumPassword }`));e&&(S(ae,e.scopesSupported,!0),S(q,e.minimumPassword,!0))}function me(){S(E,!1),g.clear()}async function he(){S(oe,!0);let e=await g.attempt(()=>i.api.query(`
|
|
36
|
+
mutation Create($nickname: String, $email: String, $password: String, $scopes: [String!]) {
|
|
37
|
+
createActor(nickname: $nickname, email: $email, password: $password, scopes: $scopes) {
|
|
38
|
+
delivered url actor { uuid identifier activated }
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
`,{nickname:t(te).trim()||null,email:t(ne).trim()||null,password:t(W)||null,scopes:t(K)}));S(oe,!1),e&&(S(se,e.createActor,!0),S(E,!1),f.reset(),await le())}let ge=e=>[Z(`actors.sessions`,{count:e.sessions.length}),Z(`actors.devices`,{count:e.devices.length})].join(` · `);{let m=n=>{var r=Jn(),i=u(r);X(i,21,()=>p,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=qn(),l=G(c,!0);s(()=>{P(c,`aria-pressed`,t(x)===a()),B(l,o())}),d(`click`,c,()=>fe(a())),e(n,c)}),Y(i);var a=l(i,2);{let e=J(()=>Z(`actors.search`)),n=J(()=>Z(`actors.search_placeholder`));$t(a,{get label(){return t(e)},get placeholder(){return t(n)},onsearch:ue,get value(){return t(_)},set value(e){S(_,e,!0)}})}var o=l(a,2),c=G(o,!0),f=l(o,2),m=G(f,!0);s((e,t,n)=>{P(i,`aria-label`,e),B(c,t),B(m,n)},[()=>Z(`actors.who`),()=>Z(`actors.invite_many`),()=>Z(`actors.add`)]),d(`click`,o,R),d(`click`,f,pe),e(n,r)},b=J(()=>Z(`actors.title`));Kn(n,{get title(){return t(b)},actions:m,children:(n,p)=>{var m=sr(),b=u(m);Bn(b,{get feedback(){return g.state}});var C=l(b,2),w=n=>{{let i=J(()=>Z(`actors.invites.title`)),a=J(()=>Z(`actors.invites.lede`));Q(n,{get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=Zn(),f=u(a),p=o(f),m=G(p,!0),h=l(p,2);ie(h),Y(f);var g=l(f,2),_=n=>{var r=Xn(),i=o(r),a=G(i,!0),u=l(i,2);X(u,17,()=>t(N),e=>e.key,(n,r)=>{var i=Yn(),a=o(i);j(a);var u,d=l(a);Y(i),s(()=>{u!==(u=t(r).key)&&(a.value=(a.__value=u)??``),B(d,` ${t(r).name??``}`)}),k(c,[],a,()=>(t(r).key,t(M)),e=>S(M,e)),e(n,i)}),Y(r),s(e=>B(a,e),[()=>Z(`actors.invites.groups`)]),e(n,r)};r(g,e=>{t(N).length&&e(_)});var v=l(g,2),y=o(v),b=G(y,!0),x=l(y,2),C=G(x,!0);Y(v),s((e,t,n,r)=>{B(m,e),y.disabled=t,B(b,n),B(C,r)},[()=>Z(`actors.invites.addresses`),()=>t(oe)||!t(A).trim(),()=>t(oe)?Z(`actors.form.adding`):Z(`actors.invites.send`),()=>Z(`actors.form.cancel`)]),V(h,()=>t(A),e=>S(A,e)),d(`click`,y,ee),d(`click`,x,()=>S(O,!1)),e(n,a)},$$slots:{default:!0}})}};r(C,e=>{t(O)&&e(w)});var T=l(C,2),D=n=>{{let i=J(()=>Z(`actors.invites.done`,{count:t(L)}));Q(n,{get title(){return t(i)},children:(n,i)=>{var a=er();X(a,21,()=>t(F),e=>e.email,(n,i)=>{var a=$n(),c=o(a),u=G(c,!0),d=l(c,2),f=G(d,!0),p=l(d,2),m=n=>{var r=Qn(),a=G(r,!0);s(()=>B(a,t(i).url)),e(n,r)};r(p,e=>{t(i).url&&e(m)}),Y(a),s(e=>{B(u,t(i).email),B(f,e)},[()=>Z(`actors.invites.outcomes.${t(i).outcome}`)]),e(n,a)}),Y(a),e(n,a)},$$slots:{default:!0}})}};r(T,e=>{t(F)&&e(D)});var I=l(T,2),R=n=>{{let i=J(()=>Z(`actors.add`));Q(n,{get title(){return t(i)},children:(n,i)=>{var a=nr(),c=u(a),f=o(c);{let e=J(()=>Z(`actors.form.nickname`));$(f,{get label(){return t(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`ada`,get value(){return t(te)},set value(e){S(te,e,!0)}})}var p=l(f,2);{let e=J(()=>Z(`actors.form.email`));$(p,{get label(){return t(e)},type:`email`,placeholder:`ada@example.com`,get value(){return t(ne)},set value(e){S(ne,e,!0)}})}Y(c);var m=l(c,2);{let e=J(()=>Z(`actors.form.password`)),n=J(()=>Z(`actors.form.password_placeholder`));$(m,{get label(){return t(e)},type:`password`,autocomplete:`new-password`,get placeholder(){return t(n)},get value(){return t(W)},set value(e){S(W,e,!0)}})}var h=l(m,2),g=n=>{var r=tr(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`actors.form.minimum`,{count:t(q)})]),e(n,r)};r(h,e=>{t(W)&&e(g)});var _=l(h,2),v=o(_),y=G(v,!0);Mn(l(v,2),{get value(){return t(K)},get available(){return t(ae)},onchange:e=>S(K,e,!0)}),Y(_);var b=l(_,2),x=o(b),C=G(x,!0),w=l(x,2),T=G(w,!0);Y(b),s((e,t,n,r)=>{B(y,e),x.disabled=t,B(C,n),B(T,r)},[()=>Z(`actors.form.scopes`),()=>t(oe)||!(t(te).trim()||t(ne).trim()),()=>t(oe)?Z(`actors.form.adding`):t(W)?Z(`actors.form.create`):Z(`actors.form.invite`),()=>Z(`actors.form.cancel`)]),d(`click`,x,he),d(`click`,w,me),e(n,a)},$$slots:{default:!0}})}};r(I,e=>{t(E)&&e(R)});var U=l(I,2),re=n=>{{let i=J(()=>t(se).actor.activated?Z(`actors.created.account`):Z(`actors.created.invitation`));Q(n,{get title(){return t(i)},children:(n,i)=>{var c=ir(),d=u(c),f=o(d),p=n=>{var r=a();s((e,t)=>B(r,`${e??``}${t??``}`),[()=>Z(`actors.created.can_sign_in`,{identifier:t(se).actor.identifier}),()=>t(se).url?` ${Z(`actors.created.confirm_link`)}`:``]),e(n,r)},m=t=>{var n=a();s(e=>B(n,e),[()=>Z(`actors.created.emailed`)]),e(t,n)},h=t=>{var n=a();s(e=>B(n,e),[()=>Z(`actors.created.pass_along`)]),e(t,n)};r(f,e=>{t(se).actor.activated?e(p):t(se).delivered?e(m,1):e(h,-1)}),Y(d);var g=l(d,2),_=n=>{var r=rr(),i=G(r,!0);s(()=>B(i,t(se).url)),e(n,r)};r(g,e=>{t(se).url&&e(_)}),e(n,c)},$$slots:{default:!0}})}};r(U,e=>{t(se)&&e(re)});var le=l(U,2),ue=e=>{xt(e,{})},fe=n=>{var r=or(),i=u(r);{let n=n=>{var r=z(),i=u(r);X(i,17,()=>t(v),e=>e.uuid,(n,r)=>{{let i=J(()=>`/actors/${t(r).uuid}`);Zt(n,{get to(){return t(i)},children:(n,i)=>{var c=ar(),d=u(c),f=o(d),p=o(f);let m;var h=l(p,2),g=o(h),_=o(g);{let n=J(()=>`/actors/${t(r).uuid}`);yt(_,{get to(){return t(n)},class:`link link-hover truncate font-medium`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).identifier)),e(n,o)},$$slots:{default:!0}})}var v=l(_,2);{let e=J(()=>Et(t(r)));wt(v,{get marks(){return t(e)}})}Y(g);var y=l(g,2),b=o(y),x=l(b),S=G(x);Y(y),Y(h),Y(f),Y(d);var C=l(d,2),w=G(C,!0),T=l(C,2),E=G(T,!0);s((e,n,i,a)=>{P(p,`src`,`${t(r).avatars.photo??t(r).avatars.identicon}?size=32`),m=ce(p,1,`size-8 shrink-0 rounded object-cover`,null,m,{drawn:!t(r).avatars.photo}),B(b,`${t(r).name?`${t(r).name} · `:``}${e??``}`),B(S,` · ${n??``}`),B(w,i),B(E,a)},[()=>t(r).email??Z(`actors.no_email`),()=>t(r).activated?zt(t(r).lastLoginAt,Z(`actors.never`)):Z(`actors.never`),()=>ge(t(r)),()=>t(r).activated?zt(t(r).lastLoginAt,Z(`actors.never`)):Z(`actors.never`)]),e(n,c)},$$slots:{default:!0}})}}),e(n,r)},r=J(()=>t(_).trim()?Z(`actors.empty.search`,{search:t(_).trim()}):Z(`actors.empty.${t(x)}`));nn(i,{get columns(){return h},get count(){return t(v).length},get empty(){return t(r)},rows:n,$$slots:{rows:!0}})}kt(l(i,2),{get pages(){return f},get shown(){return t(v).length},get busy(){return t(y)},onpage:de}),e(n,r)};r(le,e=>{t(y)&&t(v).length===0?e(ue):e(fe,-1)}),bn(l(le,2),{get api(){return i.api},get feedback(){return g}}),e(n,m)},$$slots:{actions:!0,default:!0}})}D()}c([`click`]);var lr=f(`<p class="text-sm opacity-85"> </p>`),ur=f(`<span class="text-sm font-medium"> </span>`),dr=f(`<span class="badge badge-success badge-xs"> </span>`),fr=f(`<span class="badge badge-warning badge-xs"> </span>`),pr=f(`<span class="badge badge-info badge-xs"> </span>`),mr=f(`<span> </span>`),hr=f(`<div class="flex flex-wrap items-baseline justify-between gap-x-3 border-l-2 border-base-300 pl-2 text-xs"><span><!> <span class="opacity-80"> </span></span> <button type="button" class="link text-error"> </button></div>`),gr=f(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><!> <!> <!> <!></span> <button type="button" class="link text-xs text-error"> </button></div> <span class="truncate text-xs opacity-75"> </span> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span> </span> <!></div> <!></li>`),_r=f(`<ul class="slats"></ul>`);function vr(n,i){U(i,!0);let c=R(i,`showActor`,3,!1);async function f(e,t){confirm(Z(`connections.stop_confirm`,{client:t.client.name,provider:e.provider.name}))&&await i.feedback.attempt(()=>i.api.query(`
|
|
42
|
+
mutation Stop($id: ID!) {
|
|
43
|
+
revokeDelegation(id: $id) { delegation { id revokedAt } }
|
|
44
|
+
}
|
|
45
|
+
`,{id:t.id}),Z(`connections.stopped`,{client:t.client.name}))&&await i.onchange()}async function p(e){let t=c()?e.actor.identifier:e.provider.name;confirm(Z(`connections.disconnect_confirm`,{held:t}))&&await i.feedback.attempt(()=>i.api.query(`
|
|
46
|
+
mutation Revoke($id: ID!) {
|
|
47
|
+
revokeConnection(id: $id) { connection { id revokedAt } }
|
|
48
|
+
}
|
|
49
|
+
`,{id:e.id}),Z(`connections.disconnected`))&&await i.onchange()}var m=z(),h=u(m),g=t=>{var n=lr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`connections.empty`)]),e(t,n)},_=n=>{var u=_r();X(u,21,()=>i.rows,e=>e.id,(n,i)=>{var u=gr(),m=o(u),h=o(m),g=o(h),_=n=>{{let r=J(()=>`/actors/${t(i).actor.uuid}`);yt(n,{get to(){return t(r)},class:`link link-hover text-sm font-medium`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).actor.identifier)),e(n,o)},$$slots:{default:!0}})}},v=n=>{var r=ur(),a=G(r,!0);s(()=>B(a,t(i).provider.name)),e(n,r)};r(g,e=>{c()?e(_):e(v,-1)});var y=l(g,2),b=t=>{var n=dr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`connections.badges.signs_in`)]),e(t,n)};r(y,e=>{t(i).signedInAt&&e(b)});var x=l(y,2),S=t=>{var n=fr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`connections.badges.unconfirmed`)]),e(t,n)};r(x,e=>{t(i).email&&!t(i).emailVerified&&e(S)});var C=l(x,2),w=t=>{var n=pr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`connections.badges.delegable`)]),e(t,n)};r(C,e=>{t(i).delegable&&e(w)}),Y(h);var T=l(h,2),E=G(T,!0);Y(m);var D=l(m,2),O=G(D,!0),k=l(D,2),A=o(k),j=G(A,!0),M=l(A,2),N=n=>{var r=mr(),a=G(r,!0);s((e,t)=>{P(r,`title`,e),B(a,t)},[()=>Bt(t(i).signedInAt),()=>Z(`connections.signed_in`,{when:Vt(t(i).signedInAt)})]),e(n,r)};r(M,e=>{t(i).signedInAt&&e(N)}),Y(k);var F=l(k,2);X(F,17,()=>t(i).delegations??[],e=>e.id,(n,r)=>{var c=hr(),u=o(c),p=o(u);{let n=J(()=>`/clients/${t(r).client.clientId}`);yt(p,{get to(){return t(n)},class:`link link-hover`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).client.name)),e(n,o)},$$slots:{default:!0}})}var m=l(p,2),h=G(m,!0);Y(u);var g=l(u,2),_=G(g,!0);Y(c),s((e,t)=>{B(h,e),B(_,t)},[()=>t(r).releasedAt?Z(`connections.can_use_last`,{when:Vt(t(r).releasedAt)}):Z(`connections.can_use`),()=>Z(`connections.stop`)]),d(`click`,g,()=>f(t(i),t(r))),e(n,c)}),Y(u),s((e,n,r)=>{B(E,e),B(O,t(i).label??t(i).email??t(i).subject),P(A,`title`,n),B(j,r)},[()=>Z(`connections.disconnect`),()=>Bt(t(i).connectedAt),()=>Z(`connections.connected`,{when:Vt(t(i).connectedAt)})]),d(`click`,T,()=>p(t(i))),e(n,u)}),Y(u),e(n,u)};r(h,e=>{i.rows.length===0?e(g):e(_,-1)}),e(n,m),D()}c([`click`]);var yr=f(`<p class="text-sm opacity-85"> </p>`),br=f(`<span> </span>`),xr=f(`<span class="truncate font-mono"> </span>`),Sr=f(`<li class="flex flex-wrap gap-x-2"><span class="scope"> </span> <span class="truncate font-mono opacity-80"> </span> <span class="opacity-80"> </span></li>`),Cr=f(`<ul class="flex flex-col gap-0.5 text-xs"></ul>`),wr=f(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><!> <button type="button" class="link text-xs text-error"> </button></div> <div class="flex flex-wrap gap-x-2 font-mono text-xs"></div> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><!> <span> </span> <!></div> <!></li>`),Tr=f(`<ul class="slats"></ul>`);function Er(n,i){U(i,!0);let c=R(i,`showActor`,3,!1);async function f(e){let t=c()?e.actor.identifier:e.client.name;confirm(Z(`consents.revoke_confirm`,{held:t}))&&await i.feedback.attempt(()=>i.api.query(`
|
|
50
|
+
mutation Revoke($id: ID!) {
|
|
51
|
+
revokeConsent(id: $id) { consent { id revokedAt } }
|
|
52
|
+
}
|
|
53
|
+
`,{id:e.id}),Z(`consents.revoked`))&&await i.onchange()}var p=z(),m=u(p),h=t=>{var n=yr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`consents.empty`)]),e(t,n)},g=n=>{var u=Tr();X(u,21,()=>i.rows,e=>e.id,(n,i)=>{var u=wr(),p=o(u),m=o(p),h=n=>{{let r=J(()=>`/actors/${t(i).actor.uuid}`);yt(n,{get to(){return t(r)},class:`link link-hover text-sm font-medium`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).actor.identifier)),e(n,o)},$$slots:{default:!0}})}},g=n=>{{let r=J(()=>`/clients/${t(i).client.clientId}`);yt(n,{get to(){return t(r)},class:`link link-hover text-sm font-medium`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).client.name)),e(n,o)},$$slots:{default:!0}})}};r(m,e=>{c()?e(h):e(g,-1)});var _=l(m,2),v=G(_,!0);Y(p);var b=l(p,2);X(b,20,()=>t(i).scopes,e=>e,(t,n)=>{var r=br();let i;var a=G(r,!0);s(e=>{i=ce(r,1,`scope`,null,i,{"scope-privileged":e}),B(a,n)},[()=>n.startsWith(`masks:`)]),e(t,r)}),Y(b);var x=l(b,2),S=o(x),C=n=>{var r=xr(),a=G(r,!0);s((e,t)=>{P(r,`title`,e),B(a,t)},[()=>Ht(t(i).audience),()=>Ht(t(i).audience)]),e(n,r)};r(S,e=>{t(i).audience.length&&e(C)});var w=l(S,2),T=G(w,!0),E=l(w,2),D=n=>{var r=br(),a=G(r,!0);s((e,t)=>{P(r,`title`,e),B(a,t)},[()=>Bt(t(i).expiresAt),()=>Z(`consents.asks_again`,{when:Bt(t(i).expiresAt)})]),e(n,r)};r(E,e=>{t(i).expiresAt&&e(D)}),Y(x);var O=l(x,2),k=n=>{var r=Cr();X(r,21,()=>t(i).authorizationDetails,y,(n,r)=>{var i=Sr(),a=o(i),c=G(a,!0),u=l(a,2),d=G(u,!0),f=l(u,2),p=G(f,!0);Y(i),s((e,n)=>{B(c,t(r).entry.type),B(d,e),B(p,n)},[()=>JSON.stringify(t(r).entry),()=>Z(`consents.until`,{when:Bt(t(r).expires_at)})]),e(n,i)}),Y(r),e(n,r)};r(O,e=>{t(i).authorizationDetails?.length&&e(k)}),Y(u),s((e,t,n)=>{B(v,e),P(w,`title`,t),B(T,n)},[()=>Z(`consents.revoke`),()=>Bt(t(i).updatedAt),()=>Z(`consents.last_asked`,{when:Vt(t(i).updatedAt)})]),d(`click`,_,()=>f(t(i))),e(n,u)}),Y(u),e(n,u)};r(m,e=>{i.rows.length===0?e(h):e(g,-1)}),e(n,p),D()}c([`click`]);var Dr=new Set([`job.failed`,`logout.undelivered`,`login.refused`,`login.throttled`,`refresh.reused`,`device.blocked`,`actor.deleted`,`authenticator.disabled`,`connection.refused`,`delegation.refused`]),Or=new Set([`password.changed`,`password.reset_completed`,`actor.scopes_changed`,`actor.suspended`,`provisioning_token.issued`,`provisioning_token.revoked`,`ldap_credential.issued`,`ldap_credential.revoked`,`client.secret_rotated`,`client.logo_refused`,`client.enrolled`,`client.unenrolled`,`signing_key.rotated`,`signing_key.activated`,`backup_code.spent`,`connection.unlinked`,`consent.revoked`,`delegation.granted`,`delegation.revoked`]);function kr(e){return Dr.has(e)?`bad`:Or.has(e)?`watch`:`plain`}function Ar(e){return Object.entries(e??{}).filter(([,e])=>e!==null&&e!==``&&!(Array.isArray(e)&&!e.length)).map(([e,t])=>[e.replace(/_/g,` `),jr(t)])}function jr(e){return Array.isArray(e)?e.join(` `):typeof e==`boolean`?Z(e?`event_labels.yes`:`event_labels.no`):String(e)}var Mr=f(`<p class="text-sm opacity-80"> </p>`),Nr=f(`<span class="event-count"> </span>`),Pr=f(`<span class="hint"> <!></span>`),Fr=f(`<span class="event-trail"> </span>`),Ir=f(`<li class="event"><span class="event-what"><span> </span> <!> <!> <!> <!></span> <time class="event-when"> </time> <!></li>`),Lr=f(`<button type="button" class="btn btn-ghost btn-sm self-start"> </button>`),Rr=f(`<ol class="slats"></ol> <!>`,1);function zr(n,i){U(i,!0);let c=R(i,`showActor`,3,!0),f=R(i,`empty`,19,()=>Z(`events.empty`)),p=R(i,`limit`,3,5),m=R(i,`collapse`,3,!1),h=w(!1),g=(e,t)=>e.action===t.action&&e.actor?.uuid===t.actor?.uuid&&e.client?.clientId===t.client?.clientId,_=J(()=>i.events.reduce((e,t)=>{let n=e.at(-1);return m()&&n&&g(n.event,t)?n.count+=1:e.push({event:t,count:1}),e},[])),v=J(()=>t(h)?t(_):t(_).slice(0,p())),y=/\b([0-9a-f]{8})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,b=e=>[...Ar(e.details).map(([e,t])=>`${e} ${t.replace(y,`$1…`)}`),e.ipAddress,e.device?.label].filter(Boolean);var x=z(),C=u(x),T=t=>{var n=Mr(),r=G(n,!0);s(()=>B(r,f())),e(t,n)},E=n=>{var i=Rr(),f=u(i);X(f,21,()=>t(v),({event:e,count:t})=>e.id,(n,i)=>{let u=()=>t(i).event,d=()=>t(i).count;var f=Ir(),p=o(f),m=o(p);let h;var g=G(m,!0),_=l(m,2),v=t=>{var n=Nr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`events.repeated`,{count:d()})]),e(t,n)};r(_,e=>{d()>1&&e(v)});var y=l(_,2),x=n=>{{let r=J(()=>`/actors/${u().actor.uuid}`);yt(n,{get to(){return t(r)},class:`link link-hover`,children:(t,n)=>{H();var r=a();s(()=>B(r,u().actor.identifier)),e(t,r)},$$slots:{default:!0}})}};r(y,e=>{c()&&u().actor&&e(x)});var S=l(y,2),C=n=>{var r=Pr(),i=o(r),c=l(i);{let n=J(()=>`/actors/${u().by.uuid}`);yt(c,{get to(){return t(n)},class:`link link-hover`,children:(t,n)=>{H();var r=a();s(()=>B(r,u().by.identifier)),e(t,r)},$$slots:{default:!0}})}Y(r),s(e=>B(i,`${e??``} `),[()=>Z(`events.by`)]),e(n,r)};r(S,e=>{u().by&&u().by.uuid!==u().actor?.uuid&&e(C)});var w=l(S,2),T=n=>{{let r=J(()=>`/clients/${u().client.clientId}`);yt(n,{get to(){return t(r)},class:`badge badge-ghost badge-xs`,children:(t,n)=>{H();var r=a();s(()=>B(r,u().client.name)),e(t,r)},$$slots:{default:!0}})}};r(w,e=>{u().client&&e(T)}),Y(p);var E=l(p,2),D=G(E,!0),O=l(E,2),k=t=>{var n=Fr(),r=G(n,!0);s((e,t)=>{P(n,`title`,e),B(r,t)},[()=>JSON.stringify(u().details),()=>b(u()).join(` · `)]),e(t,n)},A=J(()=>b(u()).length);r(O,e=>{t(A)&&e(k)}),Y(f),s((e,t,n,r)=>{h=ce(m,1,`event-label`,null,h,{"text-error":e,"text-warning":t}),P(m,`title`,u().action),B(g,u().label),P(E,`datetime`,u().createdAt),P(E,`title`,n),B(D,r)},[()=>kr(u().action)===`bad`,()=>kr(u().action)===`watch`,()=>Bt(u().createdAt),()=>Vt(u().createdAt)]),e(n,f)}),Y(f);var m=l(f,2),g=n=>{var r=Lr(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`events.more`,{count:t(_).length-p()})]),d(`click`,r,()=>S(h,!0)),e(n,r)};r(m,e=>{!t(h)&&t(_).length>p()&&e(g)}),e(n,i)};r(C,e=>{i.events.length===0?e(T):e(E,-1)}),e(n,x),D()}c([`click`]);var Br=f(`<p class="text-sm opacity-75"> </p>`),Vr=f(`<li class="slat"><div class="flex items-baseline justify-between gap-3"><span class="font-mono text-sm"> </span> <button type="button" class="link text-xs text-error"> </button></div> <span class="truncate text-xs opacity-75"> </span> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span> </span> <span> </span></div></li>`),Hr=f(`<button type="button" class="btn btn-ghost btn-sm self-start"> </button>`),Ur=f(`<ul class="slats"></ul> <!>`,1),Wr=f(`<span class="badge badge-error badge-xs"> </span>`),Gr=f(`<span class="badge badge-warning badge-xs"> </span>`),Kr=f(`<button type="button" class="link text-xs"> </button>`),qr=f(`<button type="button" class="link text-xs text-error"> </button>`),Jr=f(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><!> <!></span> <span class="flex items-baseline gap-3"><button type="button" class="link text-xs"> </button> <!></span></div> <span class="truncate text-xs opacity-75"> </span> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span class="font-mono"> </span> <span> </span></div></li>`),Yr=f(`<div class="flex flex-col gap-5"><div><section class="flex min-w-0 flex-col gap-2.5"><h3 class="legend"> </h3> <!></section> <section class="flex min-w-0 flex-col gap-2.5"><h3 class="legend"> </h3> <!></section></div> <button type="button" class="btn btn-sm btn-error btn-outline self-start"> </button></div>`);function Xr(n,i){U(i,!0);let c=R(i,`columns`,3,!1);async function f(e,t,n,r=null){(!r||confirm(r))&&await i.feedback.attempt(()=>i.api.query(e,t),n)&&await i.onchange()}let p=e=>f(`mutation Revoke($id: ID!) { revokeSession(id: $id) { session { revokedAt } } }`,{id:e.id},Z(`presence.session_revoked`),Z(`presence.revoke_question`)),m=(e,t,n,r=null)=>f(`mutation Act($id: ID!) { ${e}(id: $id) { device { id } } }`,{id:t.id},n,r),h=e=>m(`signOutDevice`,e,Z(`presence.device_signed_out`,{label:e.label})),g=e=>m(`blockDevice`,e,Z(`presence.device_blocked`,{label:e.label}),Z(`presence.block_question`,{label:e.label})),_=e=>m(`unblockDevice`,e,Z(`presence.device_unblocked`,{label:e.label})),v=()=>f(`mutation SignOut($uuid: ID!) { signOutActor(uuid: $uuid) { actor { uuid } } }`,{uuid:i.actor.uuid},Z(`presence.signed_out_everywhere`),Z(`presence.sign_out_everywhere_question`,{identifier:i.actor.identifier})),y=w(!1),b=w(!1),x=J(()=>t(y)?i.actor.sessions:i.actor.sessions.slice(0,4)),C=J(()=>t(b)?i.actor.devices:i.actor.devices.slice(0,4));var T=Yr(),E=o(T),O=o(E),k=o(O),A=G(k,!0),j=l(k,2),M=t=>{var n=Br(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`presence.no_sessions`)]),e(t,n)},N=n=>{var a=Ur(),c=u(a);X(c,21,()=>t(x),e=>e.id,(n,r)=>{var i=Vr(),a=o(i),c=o(a),u=G(c,!0),f=l(c,2),m=G(f,!0);Y(a);var h=l(a,2),g=G(h,!0),_=l(h,2),v=o(_),y=G(v,!0),b=l(v,2),x=G(b,!0);Y(_),Y(i),s((e,n,i,a)=>{B(u,t(r).ipAddress??`—`),B(m,e),B(g,t(r).userAgent??``),P(v,`title`,n),B(y,i),B(x,a)},[()=>Z(`presence.revoke`),()=>Bt(t(r).authenticatedAt),()=>Z(`presence.signed_in`,{when:Vt(t(r).authenticatedAt)}),()=>Z(`presence.expires`,{when:zt(t(r).expiresAt)})]),d(`click`,f,()=>p(t(r))),e(n,i)}),Y(c);var f=l(c,2),m=t=>{var n=Hr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`presence.show_more`,{count:i.actor.sessions.length-4})]),d(`click`,n,()=>S(y,!0)),e(t,n)};r(f,e=>{!t(y)&&i.actor.sessions.length>4&&e(m)}),e(n,a)};r(j,e=>{i.actor.sessions.length===0?e(M):e(N,-1)}),Y(O);var F=l(O,2),I=o(F),L=G(I,!0),ee=l(I,2),z=t=>{var n=Br(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`presence.no_devices`)]),e(t,n)},V=n=>{var c=Ur(),f=u(c);X(f,21,()=>t(C),e=>e.id,(n,i)=>{var c=Jr(),u=o(c),f=o(u),p=o(f);{let n=J(()=>`/actors/devices/${t(i).id}`);yt(p,{get to(){return t(n)},class:`link link-hover text-sm font-medium`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).label)),e(n,o)},$$slots:{default:!0}})}var m=l(p,2),v=t=>{var n=Wr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`presence.blocked`)]),e(t,n)},y=t=>{var n=Gr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`presence.unrecognised`)]),e(t,n)};r(m,e=>{t(i).blockedAt?e(v):t(i).known||e(y,1)}),Y(f);var b=l(f,2),x=o(b),S=G(x,!0),C=l(x,2),w=n=>{var r=Kr(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`presence.unblock`)]),d(`click`,r,()=>_(t(i))),e(n,r)},T=n=>{var r=qr(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`presence.block`)]),d(`click`,r,()=>g(t(i))),e(n,r)};r(C,e=>{t(i).blockedAt?e(w):e(T,-1)}),Y(b),Y(u);var E=l(u,2),D=G(E,!0),O=l(E,2),k=o(O),A=G(k,!0),j=l(k,2),M=G(j,!0);Y(O),Y(c),s((e,n,r)=>{B(S,e),B(D,t(i).userAgent??t(i).category),B(A,t(i).ipAddress??`—`),P(j,`title`,n),B(M,r)},[()=>Z(`presence.sign_out`),()=>Bt(t(i).lastSeenAt),()=>Z(`presence.last_seen`,{when:Vt(t(i).lastSeenAt)})]),d(`click`,x,()=>h(t(i))),e(n,c)}),Y(f);var p=l(f,2),m=t=>{var n=Hr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`presence.show_more`,{count:i.actor.devices.length-4})]),d(`click`,n,()=>S(b,!0)),e(t,n)};r(p,e=>{!t(b)&&i.actor.devices.length>4&&e(m)}),e(n,c)};r(ee,e=>{i.actor.devices.length===0?e(z):e(V,-1)}),Y(F),Y(E);var te=l(E,2),ne=G(te,!0);Y(T),s((e,t,n)=>{ce(E,1,`grid items-start gap-5 ${c()?`lg:grid-cols-2`:``}`),B(A,e),B(L,t),B(ne,n)},[()=>Z(`presence.sessions`),()=>Z(`presence.devices`),()=>Z(`presence.sign_out_everywhere`)]),d(`click`,te,v),e(n,T),D()}c([`click`]);var Zr=f(`<p class="text-sm opacity-85"> </p>`),Qr=f(`<span class="text-xs opacity-75"> </span>`),$r=f(`<button type="button" class="link text-xs text-error"> </button>`),ei=f(`<span> </span>`),ti=f(`<span class="truncate font-mono"> </span>`),ni=f(`<span class="truncate"> </span>`),ri=f(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><span> </span> <!> <!></span> <span class="flex items-baseline gap-3"><button type="button" class="link text-xs text-error"> </button> <!></span></div> <div class="flex flex-wrap gap-1"></div> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><!> <!> <span> </span> <span> </span></div></li>`),ii=f(`<button type="button" class="btn btn-ghost btn-sm self-start"> </button>`),ai=f(`<ul class="slats"></ul> <!>`,1);function oi(n,i){U(i,!0);let c=R(i,`showActor`,3,!1),f=R(i,`limit`,3,5),p=w(!1),m=J(()=>t(p)?i.rows:i.rows.slice(0,f())),h={access:`badge-ghost`,refresh:`badge-info`,code:`badge-warning`};function g(e){let t=`tokens.kinds.${e}`,n=Z(t);return n===t?e:n}async function _(e,t){let n=c()?e.actor?.identifier:e.client?.name,r=t?Z(`tokens.revoke_chain_confirm`,{held:n}):Z(`tokens.revoke_confirm`,{kind:g(e.kind)});if(!confirm(r))return;let a=await i.feedback.attempt(()=>i.api.query(`
|
|
54
|
+
mutation Revoke($id: ID!, $family: Boolean) {
|
|
55
|
+
revokeToken(id: $id, family: $family) { revoked }
|
|
56
|
+
}
|
|
57
|
+
`,{id:e.id,family:t}));if(!a)return;let o=a.revokeToken.revoked;i.feedback.say(Z(`tokens.revoked`,{count:o})),await i.onchange()}var v=z(),y=u(v),b=t=>{var n=Zr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`tokens.empty`)]),e(t,n)},x=n=>{var v=ai(),y=u(v);X(y,21,()=>t(m),e=>e.id,(n,i)=>{var u=ri(),f=o(u),p=o(f),m=o(p),v=G(m,!0),y=l(m,2),b=n=>{{let r=J(()=>`/actors/${t(i).actor.uuid}`);yt(n,{get to(){return t(r)},class:`link link-hover text-sm font-medium`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).actor.identifier)),e(n,o)},$$slots:{default:!0}})}},x=n=>{{let r=J(()=>`/clients/${t(i).client.clientId}`);yt(n,{get to(){return t(r)},class:`link link-hover text-sm font-medium`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).client.name)),e(n,o)},$$slots:{default:!0}})}};r(y,e=>{c()&&t(i).actor?e(b):t(i).client&&e(x,1)});var S=l(y,2),C=t=>{var n=Qr(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`tokens.rotated`)]),e(t,n)};r(S,e=>{t(i).parentId&&e(C)}),Y(p);var w=l(p,2),T=o(w),E=G(T,!0),D=l(T,2),O=n=>{var r=$r(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`tokens.revoke_chain`)]),d(`click`,r,()=>_(t(i),!0)),e(n,r)};r(D,e=>{t(i).kind===`refresh`&&e(O)}),Y(w),Y(f);var k=l(f,2);X(k,20,()=>t(i).scopes,e=>e,(t,n)=>{var r=ei();let i;var a=G(r,!0);s(e=>{i=ce(r,1,`scope`,null,i,{"scope-privileged":e}),B(a,n)},[()=>n.startsWith(`masks:`)]),e(t,r)}),Y(k);var A=l(k,2),j=o(A),M=n=>{var r=ti(),a=G(r,!0);s((e,t)=>{P(r,`title`,e),B(a,t)},[()=>Ht(t(i).audience),()=>Ht(t(i).audience)]),e(n,r)};r(j,e=>{t(i).audience.length&&e(M)});var N=l(j,2),F=n=>{var r=ni(),a=G(r,!0);s(()=>B(a,t(i).device.label)),e(n,r)};r(N,e=>{t(i).device&&e(F)});var I=l(N,2),L=G(I,!0),R=l(I,2),ee=G(R,!0);Y(A),Y(u),s((e,n,r,a,o,s)=>{ce(m,1,`badge badge-sm ${h[t(i).kind]??`badge-ghost`??``}`),B(v,e),B(E,n),P(I,`title`,r),B(L,a),P(R,`title`,o),B(ee,s)},[()=>g(t(i).kind),()=>Z(`tokens.revoke`),()=>Bt(t(i).createdAt),()=>Z(`tokens.issued`,{when:Vt(t(i).createdAt)}),()=>Bt(t(i).expiresAt),()=>Z(`tokens.expires`,{when:Vt(t(i).expiresAt)})]),d(`click`,T,()=>_(t(i),!1)),e(n,u)}),Y(y);var b=l(y,2),x=t=>{var n=ii(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`tokens.more`,{count:i.rows.length-f()})]),d(`click`,n,()=>S(p,!0)),e(t,n)};r(b,e=>{!t(p)&&i.rows.length>f()&&e(x)}),e(n,v)};r(y,e=>{i.rows.length===0?e(b):e(x,-1)}),e(n,v),D()}c([`click`]);var si=f(`<nav class="settings-tabs"></nav>`);function ci(n,r){let i=R(r,`part`,3,null);var o=si();X(o,21,()=>r.parts,([e,t,n])=>t,(n,o)=>{var c=J(()=>re(t(o),3));let l=()=>t(c)[0],u=()=>t(c)[1],d=()=>t(c)[2];{let o=J(()=>`${r.base}${u()}`),c=J(()=>(i()??null)===l()?`settings-tab-on`:``),f=J(()=>(i()??null)===l()?`page`:void 0);yt(n,{get to(){return t(o)},get class(){return`settings-tab ${t(c)??``}`},get"aria-current"(){return t(f)},children:(t,n)=>{H();var r=a();s(()=>B(r,d())),e(t,r)},$$slots:{default:!0}})}}),Y(o),s(()=>P(o,`aria-label`,r.label)),e(n,o)}var li=f(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),ui=f(`<img width="64" height="64" alt=""/>`),di=f(`<div class="alert alert-info alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <code class="font-mono text-xs break-all"> </code></div>`),fi=f(`<span> </span>`),pi=f(`<div class="alert alert-warning alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <div class="grid grid-cols-2 gap-2 font-mono text-sm md:grid-cols-5"></div></div>`),mi=f(`<div class="callout callout-warn" role="status"><div class="callout-words"><strong> </strong> <span> </span></div> <div class="callout-actions"><button type="button" class="btn btn-primary btn-sm"> </button></div></div>`),hi=f(`<div class="callout callout-warn" role="status"><div class="callout-words"><strong> </strong> <span> </span> <span class="hint"> </span></div> <div class="callout-actions"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div>`),gi=f(`<div class="callout callout-bad" role="status"><div class="callout-words"><strong> </strong></div> <div class="callout-actions"><button type="button" class="btn btn-sm"> </button></div></div>`),_i=f(`<div class="callout callout-info" role="status"><div class="callout-words"><strong> </strong></div> <div class="callout-actions"><button type="button" class="btn btn-sm"> </button></div></div>`),vi=f(`<div class="callout callout-warn" role="status"><div class="callout-words"><strong> </strong></div> <div class="callout-actions"><button type="button" class="btn btn-sm"> </button></div></div>`),yi=f(`<span class="hint"> </span>`),bi=f(`<label class="flex flex-wrap items-center gap-2 text-sm"><input type="checkbox" class="checkbox checkbox-sm"/> <code class="hint font-mono"> </code> <!></label>`),xi=f(`<div class="flex flex-col gap-1"></div>`),Si=f(`<p class="text-sm opacity-85"> <!>.</p>`),Ci=f(`<p class="hint"> </p>`),wi=f(`<!> <!>`,1),Ti=f(`<p class="text-sm"> <span class="font-mono"> </span> </p>`),Ei=f(`<!> <!> <!> <!> <!>`,1),Di=f(`<button type="button" class="btn btn-sm self-start"> </button>`),Oi=f(`<div class="sheet flex flex-col gap-1 px-4 py-3"><span class="text-sm font-medium"> </span> <span class="hint"> </span> <div class="flex flex-wrap gap-2 pt-2"><button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-sm btn-error btn-outline"> </button></div></div>`),ki=f(`<div class="sheet flex flex-wrap items-center justify-between gap-2 px-4 py-3"><span class="text-sm font-medium"> </span> <button type="button" class="btn btn-sm btn-error btn-outline"> </button></div>`),Ai=f(`<p class="text-sm opacity-85"> </p>`),ji=f(`<!> <!> <!>`,1),Mi=f(`<span class="badge badge-success badge-xs"> </span>`),Ni=f(`<span class="badge badge-ghost badge-xs"> </span>`),Pi=f(`<span class="text-xs text-error"> </span>`),Fi=f(`<li class="sheet flex flex-col gap-1 px-4 py-3"><div class="flex items-baseline justify-between gap-3"><span class="text-sm font-medium"> </span> <span class="flex items-baseline gap-2"><!> <!> <button type="button" class="link text-xs text-error"> </button></span></div> <!> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span class="font-mono"> </span> <span> </span></div></li>`),Ii=f(`<ul class="flex flex-col gap-2"></ul>`),Li=f(`<div class="grid gap-3"></div> <details class="more"><summary> </summary> <div class="grid gap-3 pt-3 sm:grid-cols-2"></div></details> <button type="button" class="btn btn-primary btn-sm self-start"> </button>`,1),Ri=f(`<div class="flex flex-col items-start gap-2"><img width="64" height="64" alt=""/> <span class="hint"> </span></div>`),zi=f(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),Bi=f(`<div class="flex flex-wrap gap-5"></div> <div class="flex flex-wrap items-center gap-2"><label> <input type="file" class="sr-only" accept="image/png,image/jpeg,image/gif,image/webp"/></label> <!> <!></div>`,1),Vi=f(`<button type="button" class="btn btn-sm btn-warning btn-outline"> </button>`),Hi=f(`<div class="flex flex-wrap gap-2"><!> <button type="button" class="btn btn-sm btn-error btn-outline"> </button></div>`),Ui=f(`<!> <!> <!> <!> <!> <!> <!> <!> <!> <div class="grid gap-4"><!></div>`,1);function Wi(n,i){U(i,!0);let c=R(i,`part`,3,null),f=mt(),p=[[`nickname`,Z(`actor.fields.nickname`)],[`name`,Z(`actor.fields.name`)],[`email`,Z(`actor.fields.email`)]],m=[[`givenName`,Z(`actor.fields.given_name`)],[`familyName`,Z(`actor.fields.family_name`)],[`middleName`,Z(`actor.fields.middle_name`)],[`profileUrl`,Z(`actor.fields.profile_url`)],[`pictureUrl`,Z(`actor.fields.picture_url`)],[`websiteUrl`,Z(`actor.fields.website_url`)],[`gender`,Z(`actor.fields.gender`)],[`birthdate`,Z(`actor.fields.birthdate`)],[`zoneinfo`,Z(`actor.fields.zoneinfo`)],[`locale`,Z(`actor.fields.locale`)]],h=[...p,...m],g=At(),_=w(null),v=w(null),y=w(C([])),b=w(C([])),x=w(C({})),T=w(!0),E=w(null),O=w(null),k=w(!1),A=J(()=>!!(t(_)&&t(v)&&t(_).uuid===t(v).uuid)),M=[[null,``,Z(`actor.parts.profile`)],[`access`,`/access`,Z(`actor.parts.access`)],[`sign-in`,`/sign-in`,Z(`actor.parts.sign_in`)],[`activity`,`/activity`,Z(`actor.parts.activity`)]],N=J(()=>t(_)?[t(_).name,t(_).email??Z(`actors.no_email`),t(_).activated?Z(`actor.signed_in_lede`,{when:Vt(t(_).lastLoginAt,Z(`actor.never`))}):Z(`actor.invited_lede`)].filter(Boolean).join(` · `):``),F=()=>V(`mutation Approve($uuid: ID!) { approveActor(uuid: $uuid) { actor { uuid } } }`,{uuid:i.uuid},Z(`actor.approval.approved`)),I=()=>confirm(Z(`actor.recovery.question`,{identifier:t(_).identifier}))&&V(`mutation Reset($uuid: ID!) { resetSecondFactors(uuid: $uuid) { actor { uuid } } }`,{uuid:i.uuid},Z(`actor.recovery.done`)),L=()=>V(`mutation Dismiss($uuid: ID!) { dismissRecovery(uuid: $uuid) { actor { uuid } } }`,{uuid:i.uuid},Z(`actor.recovery.dismissed`));async function ee(){S(T,!0);try{let e=await i.api.query(`
|
|
58
|
+
query Actor($uuid: ID!) {
|
|
59
|
+
actor(uuid: $uuid) {
|
|
60
|
+
uuid identifier nickname email emailVerified phone phoneVerified signedUpAt pendingApproval
|
|
61
|
+
recoveryRequestedAt
|
|
62
|
+
groupMemberships { group { key } sourcedBy }
|
|
63
|
+
groupLabels
|
|
64
|
+
suspendedAt externalId
|
|
65
|
+
memberships { externalId organization { key name } }
|
|
66
|
+
scopes otpEnabled emailCodesEnabled textCodesEnabled backupCodesRemaining
|
|
67
|
+
backupCodesGeneratedAt lastLoginAt createdAt activated invitedAt
|
|
68
|
+
passkeys { id label aaguid certification compromise userVerified lastUsedAt }
|
|
69
|
+
name givenName familyName middleName profileUrl pictureUrl websiteUrl
|
|
70
|
+
gender birthdate zoneinfo locale
|
|
71
|
+
photoUploaded avatars { photo identicon initials }
|
|
72
|
+
sessions { id ipAddress userAgent authenticatedAt expiresAt }
|
|
73
|
+
devices { id label category known ipAddress userAgent lastSeenAt blockedAt }
|
|
74
|
+
connections {
|
|
75
|
+
id subject label email emailVerified connectedAt signedInAt delegable
|
|
76
|
+
provider { key name }
|
|
77
|
+
delegations { id releasedAt client { clientId name } }
|
|
78
|
+
}
|
|
79
|
+
consents {
|
|
80
|
+
id scopes audience updatedAt expiresAt authorizationDetails
|
|
81
|
+
client { clientId name }
|
|
82
|
+
}
|
|
83
|
+
tokens {
|
|
84
|
+
id kind scopes audience parentId createdAt expiresAt
|
|
85
|
+
client { clientId name }
|
|
86
|
+
device { id label }
|
|
87
|
+
}
|
|
88
|
+
events(limit: 25) {
|
|
89
|
+
id action label createdAt ipAddress details
|
|
90
|
+
actor { uuid identifier }
|
|
91
|
+
by { uuid identifier }
|
|
92
|
+
client { clientId name }
|
|
93
|
+
device { id label }
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
groups { key name source }
|
|
97
|
+
viewer { uuid }
|
|
98
|
+
scopesSupported
|
|
99
|
+
}
|
|
100
|
+
`,{uuid:i.uuid});S(_,e.actor,!0),S(v,e.viewer,!0),S(y,e.groups,!0),S(b,e.scopesSupported,!0),S(x,Object.fromEntries(h.map(([t])=>[t,e.actor?.[t]??``])),!0)}catch(e){g.blame(e)}finally{S(T,!1)}}ee();async function V(e,t,n){let r=await g.attempt(()=>i.api.query(e,t),n);return r&&await ee(),r}let te=e=>t(_).groupMemberships.find(t=>t.group.key===e.key),ne=e=>!!te(e),ie=e=>te(e)?.sourcedBy??null,K=e=>V(ne(e)?`mutation Leave($key: String!, $uuid: ID!) { removeGroupMember(key: $key, uuid: $uuid) { group { key } } }`:`mutation Join($key: String!, $uuid: ID!) { addGroupMember(key: $key, uuid: $uuid) { group { key } } }`,{key:e.key,uuid:i.uuid},ne(e)?Z(`actor.left_group`,{group:e.name}):Z(`actor.joined_group`,{group:e.name})),ae=()=>V(`mutation Save($uuid: ID!, ${h.map(([e])=>`$${e}: String`).join(`, `)}) {
|
|
101
|
+
updateActor(uuid: $uuid, ${h.map(([e])=>`${e}: $${e}`).join(`, `)}) { actor { uuid } }
|
|
102
|
+
}`,{uuid:i.uuid,...Object.fromEntries(Object.entries(t(x)).map(([e,t])=>[e,t===``?null:t]))},Z(`actor.profile_saved`)),q=e=>V(`mutation Scopes($uuid: ID!, $scopes: [String!]!) {
|
|
103
|
+
setActorScopes(uuid: $uuid, scopes: $scopes) { actor { scopes } }
|
|
104
|
+
}`,{uuid:i.uuid,scopes:e},Z(`actor.scopes_updated`));async function oe(){S(E,null);let e=await V(`mutation Codes($uuid: ID!) { generateBackupCodes(uuid: $uuid) { codes } }`,{uuid:i.uuid},Z(`actor.codes_generated`));e&&S(E,e.generateBackupCodes.codes,!0)}async function se(e,t){if(!confirm(t))return;S(O,null);let n=await V(e,{uuid:i.uuid},null);if(!n)return;let r=Object.values(n)[0];r.delivered?g.say(Z(`actor.emailed`)):(g.say(Z(`actor.no_mailer`)),S(O,r.url,!0))}let le=()=>se(`mutation Reset($uuid: ID!) { resetPassword(uuid: $uuid) { delivered url } }`,Z(`actor.reset_question`)),ue=()=>se(`mutation Resend($uuid: ID!) { resendInvitation(uuid: $uuid) { delivered url } }`,Z(`actor.resend_question`)),de=()=>se(`mutation Verify($uuid: ID!) { verifyEmail(uuid: $uuid) { delivered url } }`,Z(`actor.confirm_question`));function fe(e){confirm(Z(`actor.remove_passkey_question`,{label:e.label}))&&V(`mutation Revoke($uuid: ID!, $id: ID!) { revokePasskey(uuid: $uuid, id: $id) { actor { uuid } } }`,{uuid:i.uuid,id:e.id},Z(`actor.passkey_removed`))}async function pe(e){let t=e.currentTarget,n=t.files?.[0];n&&(S(k,!0),await V(`mutation Upload($uuid: ID!, $photo: Upload!) {
|
|
105
|
+
uploadAvatar(uuid: $uuid, photo: $photo) { actor { uuid } }
|
|
106
|
+
}`,{uuid:i.uuid,photo:n},Z(`actor.photo_updated`)),S(k,!1),t.value=``)}function me(){confirm(Z(`actor.remove_photo_question`))&&V(`mutation Remove($uuid: ID!) { removeAvatar(uuid: $uuid) { actor { uuid } } }`,{uuid:i.uuid},Z(`actor.photo_removed`))}function he(){confirm(Z(`actor.disable_question`))&&V(`mutation Disable($uuid: ID!) { disableAuthenticator(uuid: $uuid) { actor { otpEnabled } } }`,{uuid:i.uuid},Z(`actor.authenticator_removed`))}let ge=[[`email`,`emailCodesEnabled`,Z(`actor.factors.email.name`),Z(`actor.factors.email.lower`)],[`sms`,`textCodesEnabled`,Z(`actor.factors.sms.name`),Z(`actor.factors.sms.lower`)]];function _e(e,t,n){confirm(Z(`actor.turn_off_question`,{name:n}))&&V(`mutation TurnOff($uuid: ID!, $factor: String!) {
|
|
107
|
+
disableCodeFactor(uuid: $uuid, factor: $factor) { actor { uuid } }
|
|
108
|
+
}`,{uuid:i.uuid,factor:e},Z(`actor.turned_off`,{name:t}))}function ve(){confirm(Z(`actor.suspend_question`,{identifier:t(_).identifier}))&&V(`mutation Suspend($uuid: ID!) { suspendActor(uuid: $uuid) { actor { suspendedAt } } }`,{uuid:i.uuid},Z(`actor.suspended`))}function ye(){V(`mutation Restore($uuid: ID!) { restoreActor(uuid: $uuid) { actor { suspendedAt } } }`,{uuid:i.uuid},Z(`actor.restored`))}async function be(){confirm(Z(`actor.delete_question`,{identifier:t(_).identifier}))&&await g.attempt(()=>i.api.query(`mutation Delete($uuid: ID!) { deleteActor(uuid: $uuid) { identifier } }`,{uuid:i.uuid}))&&f.go(`/actors`)}var xe=z(),Se=u(xe),Ce=e=>{xt(e,{})},we=t=>{var n=li(),r=G(n,!0);s(e=>B(r,e),[()=>g.state.failure??Z(`actor.missing`)]),e(t,n)},Te=n=>{{let f=n=>{var r=ui();let i;s(()=>{P(r,`src`,`${t(_).avatars.photo??t(_).avatars.identicon}?size=128`),i=ce(r,1,`size-14 shrink-0 rounded-lg object-cover sm:size-16`,null,i,{drawn:!t(_).avatars.photo})}),e(n,r)},h=e=>{{let n=J(()=>Et(t(_)));wt(e,{get marks(){return t(n)}})}},v=J(()=>({to:`/actors`,label:Z(`actor.back`)}));Kn(n,{get title(){return t(_).identifier},get id(){return t(_).uuid},get back(){return t(v)},get lede(){return t(N)},lead:f,after:h,children:(n,f)=>{var h=Ui(),v=u(h);Bn(v,{get feedback(){return g.state}});var S=l(v,2),C=n=>{var r=di(),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0);Y(r),s(e=>{B(a,e),B(u,t(O))},[()=>Z(`actor.link_once`)]),e(n,r)};r(S,e=>{t(O)&&e(C)});var w=l(S,2),T=n=>{var r=pi(),i=o(r),a=G(i,!0),c=l(i,2);X(c,20,()=>t(E),e=>e,(t,n)=>{var r=fi(),i=G(r,!0);s(()=>B(i,n)),e(t,r)}),Y(c),Y(r),s(e=>B(a,e),[()=>Z(`actor.write_down`)]),e(n,r)};r(w,e=>{t(E)&&e(T)});var D=l(w,2),N=t=>{var n=mi(),r=o(n),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0);Y(r);var f=l(r,2),p=o(f),m=G(p,!0);Y(f),Y(n),s((e,t,n)=>{B(a,e),B(u,t),B(m,n)},[()=>Z(`actor.approval.title`),()=>Z(`actor.approval.lede`),()=>Z(`actor.approval.approve`)]),d(`click`,p,F),e(t,n)};r(D,e=>{t(_).pendingApproval&&e(N)});var R=l(D,2),V=n=>{var r=hi(),i=o(r),a=o(i),c=G(a,!0),u=l(a,2),f=G(u,!0),p=l(u,2),m=G(p,!0);Y(i);var h=l(i,2),g=o(h),v=G(g,!0),y=l(g,2),b=G(y,!0);Y(h),Y(r),s((e,t,n,r,i)=>{B(c,e),B(f,t),B(m,n),B(v,r),B(b,i)},[()=>Z(`actor.recovery.title`),()=>Z(`actor.recovery.lede`,{when:Vt(t(_).recoveryRequestedAt)}),()=>Z(`actor.recovery.explain`),()=>Z(`actor.recovery.reset`),()=>Z(`actor.recovery.dismiss`)]),d(`click`,g,I),d(`click`,y,L),e(n,r)};r(R,e=>{t(_).recoveryRequestedAt&&e(V)});var te=l(R,2),U=n=>{var r=gi(),i=o(r),a=o(i),c=G(a,!0);Y(i);var u=l(i,2),f=o(u),p=G(f,!0);Y(u),Y(r),s((e,t)=>{B(c,e),B(p,t)},[()=>Z(`actor.suspended_on`,{day:zt(t(_).suspendedAt)}),()=>Z(`actor.restore`)]),d(`click`,f,ye),e(n,r)};r(te,e=>{t(_).suspendedAt&&e(U)});var se=l(te,2),xe=n=>{var r=_i(),i=o(r),a=o(i),c=G(a,!0);Y(i);var u=l(i,2),f=o(u),p=G(f,!0);Y(u),Y(r),s((e,t)=>{B(c,e),B(p,t)},[()=>t(_).invitedAt?Z(`actor.invited_on`,{day:zt(t(_).invitedAt)}):Z(`actor.invited`),()=>Z(`actor.resend`)]),d(`click`,f,ue),e(n,r)};r(se,e=>{t(_).activated||e(xe)});var Se=l(se,2),Ce=n=>{var r=vi(),i=o(r),a=o(i),c=G(a,!0);Y(i);var u=l(i,2),f=o(u),p=G(f,!0);Y(u),Y(r),s((e,t)=>{B(c,e),B(p,t)},[()=>Z(`actor.unconfirmed`,{email:t(_).email}),()=>Z(`actor.send_confirmation`)]),d(`click`,f,de),e(n,r)};r(Se,e=>{t(_).email&&!t(_).emailVerified&&e(Ce)});var we=l(Se,2);{let e=J(()=>`/actors/${t(_).uuid}`),n=J(()=>Z(`actor.parts.label`));ci(we,{get base(){return t(e)},get part(){return c()},get parts(){return M},get label(){return t(n)}})}var Te=l(we,2),Ee=o(Te),De=n=>{var c=Ei(),f=u(c);{let e=J(()=>Z(`actor.scopes`)),n=J(()=>Z(`actor.scopes_lede`));Q(f,{row:!0,get title(){return t(e)},get lede(){return t(n)},children:(e,n)=>{Mn(e,{get value(){return t(_).scopes},get available(){return t(b)},onchange:q})},$$slots:{default:!0}})}var p=l(f,2);{let n=J(()=>Z(`actor.groups`)),i=J(()=>Z(`actor.groups_lede`));Q(p,{row:!0,get title(){return t(n)},get lede(){return t(i)},children:(n,i)=>{var c=wi(),f=u(c),p=n=>{var i=xi();X(i,21,()=>t(y),e=>e.key,(n,i)=>{var a=bi(),c=o(a);j(c);var u=l(c),f=l(u),p=G(f,!0),m=l(f,2),h=n=>{var r=yi(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`group_sources.from.${ie(t(i))}`)]),e(n,r)},g=J(()=>ie(t(i))),_=t=>{var n=yi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`group_sources.by_hand`)]),e(t,n)},v=J(()=>ne(t(i))&&t(i).source!==`manual`);r(m,e=>{t(g)?e(h):t(v)&&e(_,1)}),Y(a),s((e,n)=>{W(c,e),c.disabled=n,B(u,` ${t(i).name??``} `),B(p,t(i).key)},[()=>ne(t(i)),()=>!!ie(t(i))]),d(`change`,c,()=>K(t(i))),e(n,a)}),Y(i),e(n,i)},m=t=>{var n=Si(),r=o(n);yt(l(r),{to:`/settings`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`actor.add_group`)]),e(t,r)},$$slots:{default:!0}}),H(),Y(n),s(e=>B(r,`${e??``} `),[()=>Z(`actor.no_groups`)]),e(t,n)};r(f,e=>{t(y).length?e(p):e(m,-1)});var h=l(f,2),g=n=>{var r=Ci(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`actor.group_labels`,{labels:t(_).groupLabels.join(`, `)})]),e(n,r)};r(h,e=>{t(_).groupLabels.length&&e(g)}),e(n,c)},$$slots:{default:!0}})}var m=l(p,2),h=n=>{{let i=J(()=>Z(`actor.provisioned`));Q(n,{row:!0,get title(){return t(i)},children:(n,i)=>{var a=wi(),c=u(a),d=n=>{var r=Ti(),i=o(r),a=l(i),c=G(a,!0),u=l(a);Y(r),s((e,n)=>{B(i,`${e??``} `),B(c,t(_).externalId),B(u,`.
|
|
109
|
+
${n??``}`)},[()=>Z(`actor.provisioned_as`),()=>Z(`actor.provider_may_change`)]),e(n,r)};r(c,e=>{t(_).externalId&&e(d)});var f=l(c,2);X(f,17,()=>t(_).memberships.filter(e=>e.externalId),e=>e.organization.key,(n,r,i,a)=>{var c=Ti(),u=o(c),d=l(u),f=G(d,!0),p=l(d);Y(c),s((e,n)=>{B(u,`${e??``} `),B(f,t(r).externalId),B(p,`, ${n??``}`)},[()=>Z(`actor.directory_provisioned`,{organization:t(r).organization.name}),()=>Z(`actor.directory_may_change`)]),e(n,c)}),e(n,a)},$$slots:{default:!0}})}},v=J(()=>t(_).externalId||t(_).memberships.some(e=>e.externalId));r(m,e=>{t(v)&&e(h)});var x=l(m,2);{let e=J(()=>Z(`actor.consents`)),n=J(()=>Z(`actor.consents_lede`));Q(x,{row:!0,get title(){return t(e)},get lede(){return t(n)},children:(e,n)=>{Er(e,{get api(){return i.api},get feedback(){return g},get rows(){return t(_).consents},onchange:ee})},$$slots:{default:!0}})}var S=l(x,2);{let e=J(()=>Z(`actor.connections`)),n=J(()=>Z(`actor.connections_lede`));Q(S,{row:!0,get title(){return t(e)},get lede(){return t(n)},children:(e,n)=>{vr(e,{get api(){return i.api},get feedback(){return g},get rows(){return t(_).connections},onchange:ee})},$$slots:{default:!0}})}e(n,c)},Oe=n=>{var a=Ei(),c=u(a);{let n=J(()=>Z(`actor.password`)),i=J(()=>t(_).activated?Z(`actor.password_lede`):Z(`actor.password_invited`));Q(c,{row:!0,get title(){return t(n)},get lede(){return t(i)},children:(n,i)=>{var a=z(),o=u(a),c=t=>{var n=Di(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`actor.reset_password`)]),d(`click`,n,le),e(t,n)},l=t=>{var n=Di(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`actor.resend`)]),d(`click`,n,ue),e(t,n)};r(o,e=>{t(_).activated?e(c):e(l,-1)}),e(n,a)},$$slots:{default:!0}})}var f=l(c,2);{let n=J(()=>Z(`actor.second_factor`));Q(f,{row:!0,get title(){return t(n)},children:(n,i)=>{var a=ji(),c=u(a),f=n=>{var r=Oi(),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0),f=l(c,2),p=o(f),m=G(p,!0),h=l(p,2),g=G(h,!0);Y(f),Y(r),s((e,t,n,r)=>{B(a,e),B(u,t),B(m,n),B(g,r)},[()=>Z(`actor.authenticator`),()=>Z(`actor.backup_codes`,{count:t(_).backupCodesRemaining}),()=>Z(`actor.generate`),()=>Z(`actor.remove_authenticator`)]),d(`click`,p,oe),d(`click`,h,he),e(n,r)};r(c,e=>{t(_).otpEnabled&&e(f)});var p=l(c,2);X(p,17,()=>ge.filter(([,e])=>t(_)[e]),([e,,t,n])=>e,(n,r)=>{var i=J(()=>re(t(r),4));let a=()=>t(i)[0],c=()=>t(i)[2],u=()=>t(i)[3];var f=ki(),p=o(f),m=G(p,!0),h=l(p,2),g=G(h,!0);Y(f),s(e=>{B(m,c()),B(g,e)},[()=>Z(`actor.turn_off`,{name:u()})]),d(`click`,h,()=>_e(a(),c(),u())),e(n,f)});var m=l(p,2),h=t=>{var n=Ai(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`actor.password_only`)]),e(t,n)};r(m,e=>{!t(_).otpEnabled&&!t(_).emailCodesEnabled&&!t(_).textCodesEnabled&&e(h)}),e(n,a)},$$slots:{default:!0}})}var p=l(f,2);{let n=J(()=>Z(`actor.passkeys`));Q(p,{row:!0,get title(){return t(n)},children:(n,i)=>{var a=z(),c=u(a),f=t=>{var n=Ai(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`actor.no_passkeys`)]),e(t,n)},p=n=>{var i=Ii();X(i,21,()=>t(_).passkeys,e=>e.id,(n,i)=>{var a=Fi(),c=o(a),u=o(c),f=G(u,!0),p=l(u,2),m=o(p),h=t=>{var n=Mi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`actor.verifying`)]),e(t,n)};r(m,e=>{t(i).userVerified&&e(h)});var g=l(m,2),_=n=>{var r=Ni(),a=G(r,!0);s(()=>B(a,t(i).certification)),e(n,r)};r(g,e=>{t(i).certification&&e(_)});var v=l(g,2),y=G(v,!0);Y(p),Y(c);var b=l(c,2),x=n=>{var r=Pi(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`actor.compromise`,{compromise:t(i).compromise.toLowerCase().replaceAll(`_`,` `)})]),e(n,r)};r(b,e=>{t(i).compromise&&e(x)});var S=l(b,2),C=o(S),w=G(C,!0),T=l(C,2),E=G(T,!0);Y(S),Y(a),s((e,n,r)=>{B(f,t(i).label),B(y,e),B(w,n),B(E,r)},[()=>Z(`actor.remove`),()=>t(i).aaguid??Z(`actor.no_aaguid`),()=>Z(`actor.last_used`,{when:Vt(t(i).lastUsedAt,Z(`actor.never`))})]),d(`click`,v,()=>fe(t(i))),e(n,a)}),Y(i),e(n,i)};r(c,e=>{t(_).passkeys.length===0?e(f):e(p,-1)}),e(n,a)},$$slots:{default:!0}})}var m=l(p,2);{let e=J(()=>Z(`actor.signed_in`)),n=J(()=>t(A)?Z(`actor.signed_in_yourself`):null);Q(m,{row:!0,get title(){return t(e)},get lede(){return t(n)},children:(e,n)=>{Xr(e,{get api(){return i.api},get feedback(){return g},get actor(){return t(_)},onchange:ee})},$$slots:{default:!0}})}var h=l(m,2);{let e=J(()=>Z(`actor.tokens`)),n=J(()=>Z(`actor.tokens_lede`));Q(h,{row:!0,get title(){return t(e)},get lede(){return t(n)},children:(e,n)=>{oi(e,{get api(){return i.api},get feedback(){return g},get rows(){return t(_).tokens},onchange:ee})},$$slots:{default:!0}})}e(n,a)},ke=n=>{Q(n,{actions:n=>{{let r=J(()=>`/activity?actor=${t(_).uuid}`);yt(n,{get to(){return t(r)},class:`btn btn-ghost btn-sm`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`actor.all_activity`)]),e(t,r)},$$slots:{default:!0}})}},children:(e,n)=>{{let n=J(()=>Z(`actor.no_activity`));zr(e,{get events(){return t(_).events},showActor:!1,get empty(){return t(n)},limit:25,collapse:!0})}},$$slots:{actions:!0,default:!0}})},Ae=n=>{var i=ji(),a=u(i);{let n=J(()=>Z(`actor.profile`));Q(a,{row:!0,get title(){return t(n)},children:(n,r)=>{var i=Li(),a=u(i);X(a,21,()=>p,([e,t])=>e,(e,n)=>{var r=J(()=>re(t(n),2));let i=()=>t(r)[0],a=()=>t(r)[1];$(e,{get label(){return a()},get value(){return t(x)[i()]},set value(e){t(x)[i()]=e}})}),Y(a);var c=l(a,2),f=o(c),h=G(f,!0),g=l(f,2);X(g,21,()=>m,([e,t])=>e,(e,n)=>{var r=J(()=>re(t(n),2));let i=()=>t(r)[0],a=()=>t(r)[1];$(e,{get label(){return a()},get value(){return t(x)[i()]},set value(e){t(x)[i()]=e}})}),Y(g),Y(c);var _=l(c,2),v=G(_,!0);s((e,t,n)=>{c.open=e,B(h,t),B(v,n)},[()=>m.some(([e])=>t(x)[e]),()=>Z(`actor.more_fields`),()=>Z(`actor.save_profile`)]),d(`click`,_,ae),e(n,i)},$$slots:{default:!0}})}var c=l(a,2);{let n=J(()=>Z(`actor.photo`)),i=J(()=>Z(`actor.photo_lede`));Q(c,{row:!0,get title(){return t(n)},get lede(){return t(i)},children:(n,i)=>{var a=Bi(),c=u(a);X(c,20,()=>[`photo`,`identicon`,`initials`].filter(e=>t(_).avatars[e]),e=>e,(n,r)=>{var i=Ri(),a=o(i);let c;var u=l(a,2),d=G(u,!0);Y(i),s(e=>{P(a,`src`,`${t(_).avatars[r]}?size=128`),c=ce(a,1,`size-16 rounded-lg object-cover`,null,c,{drawn:r!==`photo`}),B(d,e)},[()=>Z(`actor.styles.${r}`)]),e(n,i)}),Y(c);var f=l(c,2),p=o(f);let m;var h=o(p),g=l(h);Y(p);var v=l(p,2),y=t=>{var n=zi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`actor.remove_photo`)]),d(`click`,n,me),e(t,n)};r(v,e=>{t(_).photoUploaded&&e(y)});var b=l(v,2),x=t=>{var n=yi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`actor.uploading`)]),e(t,n)};r(b,e=>{t(k)&&e(x)}),Y(f),s(e=>{m=ce(p,1,`btn btn-sm`,null,m,{"btn-disabled":t(k)}),B(h,`${e??``} `),g.disabled=t(k)},[()=>t(_).photoUploaded?Z(`actor.change_photo`):Z(`actor.upload_photo`)]),d(`change`,g,pe),e(n,a)},$$slots:{default:!0}})}var f=l(c,2);{let n=J(()=>Z(`actor.danger`)),i=J(()=>t(A)?Z(`actor.yourself`):Z(`actor.danger_lede`));Q(f,{row:!0,get title(){return t(n)},get lede(){return t(i)},children:(n,i)=>{var a=z(),c=u(a),f=n=>{var i=Hi(),a=o(i),c=n=>{var r=Vi(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`actor.suspend`,{identifier:t(_).identifier})]),d(`click`,r,ve),e(n,r)};r(a,e=>{t(_).suspendedAt||e(c)});var u=l(a,2),f=G(u,!0);Y(i),s(e=>B(f,e),[()=>Z(`actor.delete`,{identifier:t(_).identifier})]),d(`click`,u,be),e(n,i)};r(c,e=>{t(A)||e(f)}),e(n,a)},$$slots:{default:!0}})}e(n,i)};r(Ee,e=>{c()===`access`?e(De):c()===`sign-in`?e(Oe,1):c()===`activity`?e(ke,2):e(Ae,-1)}),Y(Te),e(n,h)},$$slots:{lead:!0,after:!0,default:!0}})}};r(Se,e=>{t(T)&&!t(_)?e(Ce):t(_)?e(Te,-1):e(we,1)}),e(n,xe),D()}c([`click`,`change`]);var Gi=f(`<dt class="opacity-80"> </dt> <dd> </dd>`,1),Ki=f(`<dl class="grid gap-x-4 gap-y-0.5 text-sm sm:grid-cols-3 sm:gap-y-2"></dl>`);function qi(n,r){var i=Ki();X(i,21,()=>r.rows,({term:e,value:t,mono:n})=>e,(n,r)=>{let i=()=>t(r).term,a=()=>t(r).value,o=()=>t(r).mono;var c=Gi(),d=u(c),f=G(d,!0),p=l(d,2),m=G(p,!0);s(()=>{B(f,i()),ce(p,1,`pb-2 sm:col-span-2 sm:pb-0 ${o()?`font-mono text-xs break-all`:``}`),B(m,a()||`—`)}),e(n,c)}),Y(i),e(n,i)}var Ji=f(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),Yi=f(`<button type="button" class="btn btn-sm"> </button>`),Xi=f(`<button type="button" class="btn btn-sm btn-error btn-outline"> </button>`),Zi=f(`<!> <div class="flex flex-wrap gap-2 pt-1"><!> <!></div>`,1),Qi=f(`<p class="text-sm opacity-85"> </p>`),$i=f(`<li class="slat"><!></li>`),ea=f(`<ul class="slats"></ul>`),ta=f(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><!> <span class="font-mono text-xs opacity-80"> </span></div> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span> </span> <span> </span></div></li>`),na=f(`<!> <div class="grid items-start gap-4 md:grid-cols-2"><!> <div class="flex flex-col gap-4"><!> <!> <!></div></div>`,1);function ra(n,i){U(i,!0);let c=At(),f=w(null),p=w(C([])),m=w(!0);async function h(){S(m,!0);try{let e=await i.api.query(`
|
|
110
|
+
query Device($id: ID!) {
|
|
111
|
+
device(id: $id) {
|
|
112
|
+
id label name category known ipAddress userAgent lastSeenAt blockedAt createdAt
|
|
113
|
+
actors { uuid identifier }
|
|
114
|
+
sessions {
|
|
115
|
+
id ipAddress userAgent authenticatedAt expiresAt
|
|
116
|
+
actor { uuid identifier }
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
events(device: $id, limit: 25) {
|
|
120
|
+
id action label createdAt ipAddress details
|
|
121
|
+
actor { uuid identifier }
|
|
122
|
+
by { uuid identifier }
|
|
123
|
+
client { clientId name }
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
`,{id:i.id});S(f,e.device,!0),S(p,e.events,!0)}catch(e){c.blame(e)}finally{S(m,!1)}}h();async function g(e,t,n=null){(!n||confirm(n))&&await c.attempt(()=>i.api.query(`mutation Act($id: ID!) { ${e}(id: $id) { device { id } } }`,{id:i.id}),t)&&await h()}let _=()=>g(`blockDevice`,Z(`device.blocked`,{label:t(f).label}),Z(`device.block_question`,{label:t(f).label})),v=()=>g(`unblockDevice`,Z(`device.unblocked`,{label:t(f).label})),y=()=>g(`signOutDevice`,Z(`device.signed_out`,{label:t(f).label}),Z(`device.sign_out_question`,{label:t(f).label})),b=J(()=>t(f)?[{term:Z(`device.facts.kind`),value:t(f).category},{term:Z(`device.facts.ip_address`),value:t(f).ipAddress,mono:!0},{term:Z(`device.facts.user_agent`),value:t(f).userAgent,mono:!0},{term:Z(`device.facts.first_seen`),value:zt(t(f).createdAt)},{term:Z(`device.facts.last_seen`),value:Bt(t(f).lastSeenAt)}]:[]);var x=z(),T=u(x),E=e=>{xt(e,{})},O=t=>{var n=Ji(),r=G(n,!0);s(e=>B(r,e),[()=>c.state.failure??Z(`device.missing`)]),e(t,n)},k=n=>{{let i=J(()=>({to:`/actors#devices`,label:Z(`device.back`)})),m=J(()=>t(f).blockedAt?Z(`device.blocked_lede`,{day:zt(t(f).blockedAt)}):Z(`device.seen_lede`,{when:Vt(t(f).lastSeenAt)}));Kn(n,{get title(){return t(f).label},get id(){return t(f).id},get back(){return t(i)},get lede(){return t(m)},children:(n,i)=>{var m=na(),h=u(m);Bn(h,{get feedback(){return c.state}});var g=l(h,2),x=o(g);{let n=J(()=>Z(`device.what`));Q(x,{get title(){return t(n)},children:(n,i)=>{var a=Zi(),c=u(a);qi(c,{get rows(){return t(b)}});var p=l(c,2),m=o(p),h=t=>{var n=Yi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`device.sign_out_everywhere`)]),d(`click`,n,y),e(t,n)};r(m,e=>{t(f).sessions.length&&e(h)});var g=l(m,2),x=t=>{var n=Yi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`device.unblock`)]),d(`click`,n,v),e(t,n)},S=t=>{var n=Xi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`device.block`)]),d(`click`,n,_),e(t,n)};r(g,e=>{t(f).blockedAt?e(x):e(S,-1)}),Y(p),e(n,a)},$$slots:{default:!0}})}var S=l(x,2),C=o(S);{let n=J(()=>Z(`device.who`));Q(C,{get title(){return t(n)},children:(n,i)=>{var c=z(),l=u(c),d=t=>{var n=Qi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`device.nobody`)]),e(t,n)},p=n=>{var r=ea();X(r,21,()=>t(f).actors,e=>e.uuid,(n,r)=>{var i=$i(),c=o(i);{let n=J(()=>`/actors/${t(r).uuid}`);yt(c,{get to(){return t(n)},class:`link link-hover text-sm font-medium`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).identifier)),e(n,o)},$$slots:{default:!0}})}Y(i),e(n,i)}),Y(r),e(n,r)};r(l,e=>{t(f).actors.length===0?e(d):e(p,-1)}),e(n,c)},$$slots:{default:!0}})}var w=l(C,2);{let n=J(()=>Z(`device.live_sessions`));Q(w,{get title(){return t(n)},children:(n,i)=>{var c=z(),d=u(c),p=t=>{var n=Qi(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`device.no_sessions`)]),e(t,n)},m=n=>{var r=ea();X(r,21,()=>t(f).sessions,e=>e.id,(n,r)=>{var i=ta(),c=o(i),u=o(c);{let n=J(()=>`/actors/${t(r).actor.uuid}`);yt(u,{get to(){return t(n)},class:`link link-hover text-sm font-medium`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).actor.identifier)),e(n,o)},$$slots:{default:!0}})}var d=l(u,2),f=G(d,!0);Y(c);var p=l(c,2),m=o(p),h=G(m,!0),g=l(m,2),_=G(g,!0);Y(p),Y(i),s((e,n,i)=>{B(f,t(r).ipAddress??`—`),P(m,`title`,e),B(h,n),B(_,i)},[()=>Bt(t(r).authenticatedAt),()=>Z(`device.signed_in`,{when:Vt(t(r).authenticatedAt)}),()=>Z(`device.expires`,{when:zt(t(r).expiresAt)})]),e(n,i)}),Y(r),e(n,r)};r(d,e=>{t(f).sessions.length===0?e(p):e(m,-1)}),e(n,c)},$$slots:{default:!0}})}var T=l(w,2);{let e=J(()=>Z(`device.activity`));Q(T,{get title(){return t(e)},children:(e,n)=>{{let n=J(()=>Z(`device.no_activity`));zr(e,{get events(){return t(p)},get empty(){return t(n)}})}},$$slots:{default:!0}})}Y(S),Y(g),e(n,m)},$$slots:{default:!0}})}};r(T,e=>{t(m)&&!t(f)?e(E):t(f)?e(k,-1):e(O,1)}),e(n,x),D()}c([`click`]);var ia=f(`<img alt=""/>`),aa=f(`<span aria-hidden="true"> </span>`);function oa(t,n){U(n,!0);let i=R(n,`class`,3,`size-8 rounded`);var a=z(),o=u(a),c=t=>{var r=ia();s(()=>{P(r,`src`,n.client.logoUrl),ce(r,1,`shrink-0 ${i()??``}`)}),e(t,r)},l=t=>{var r=aa(),a=G(r,!0);s(e=>{ce(r,1,`grid shrink-0 place-items-center bg-base-200 font-semibold ${i()??``}`),B(a,e)},[()=>q(n.client.name)]),e(t,r)};r(o,e=>{n.client.logoUrl?e(c):e(l,-1)}),e(t,a),D()}var sa=f(`<span class="field-label"> </span>`),ca=f(`<option> </option>`),la=f(`<label class="flex min-w-0 flex-col gap-1.5"><!> <select class="select select-sm w-full"></select></label>`);function ua(n,i){U(i,!0);let a=R(i,`label`,3,null),c=R(i,`disabled`,3,!1),u=R(i,`name`,3,null);var f=la(),p=o(f),m=t=>{var n=sa(),r=G(n,!0);s(()=>B(r,a())),e(t,n)};r(p,e=>{a()&&e(m)});var h=l(p,2);X(h,21,()=>i.options,([e,t,n=!1])=>e,(n,r)=>{var i=J(()=>re(t(r),3));let a=()=>t(i)[0],o=()=>t(i)[1],c=N(()=>M(t(i)[2],!1));var l=ca(),u=G(l,!0),d={};s(()=>{l.disabled=t(c),B(u,o()),d!==(d=a())&&(l.value=(l.__value=d)??``)}),e(n,l)}),Y(h);var g;I(h),Y(f),s(()=>{h.disabled=c(),P(h,`aria-label`,a()?null:u()),g!==(g=i.value)&&(h.value=(h.__value=g)??``,T(h,g))}),d(`change`,h,e=>i.onchange(e.currentTarget.value)),e(n,f),D()}c([`change`]);var da=f(`<label class="flex cursor-pointer items-center gap-2 text-sm"><input type="checkbox" class="toggle toggle-sm"/> </label>`);function fa(t,n){U(n,!0);let r=R(n,`checked`,15,!1),i=R(n,`onchange`,3,null);var a=da(),c=o(a);j(c);var u=l(c);Y(a),s(()=>B(u,` ${n.label??``}`)),d(`change`,c,function(...e){(i()?e=>i()(e.currentTarget.checked):void 0)?.apply(this,e)}),K(c,r),e(t,a),D()}c([`change`]);var pa=f(`<!> <!> <button type="button" class="btn btn-primary btn-sm"> </button>`,1),ma=f(`<button type="button"> </button>`),ha=f(`<!> <!> <!>`,1),ga=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="3" spellcheck="false" placeholder="<md:EntityDescriptor …"></textarea></label> <button type="button" class="btn btn-sm self-start"> </button> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" spellcheck="false" placeholder="https://wiki.example.com/saml/acs"></textarea></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" spellcheck="false"></textarea></label> <!> <!>`,1),_a=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="https://app.example.com/callback"></textarea></label>`),va=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="https://api.example.com/mcp"></textarea></label> <div class="flex flex-col gap-2"><span class="legend"> </span> <!></div>`,1),ya=f(`<!> <div class="range" role="group"></div> <!> <p class="hint"> </p> <!> <!> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),ba=f(`<p class="tray px-2 py-1 font-mono text-xs break-all"> </p>`),xa=f(`<a class="link" target="_blank" rel="noreferrer"> </a>.`,1),Sa=f(`<dt class="font-mono text-xs opacity-80"> </dt> <dd class="tray m-0 px-2 py-1 font-mono text-xs break-all whitespace-pre-wrap"> </dd>`,1),Ca=f(`<p class="text-sm opacity-85"> <!></p> <dl class="grid gap-x-4 gap-y-2 text-sm md:grid-cols-[auto_1fr]"></dl>`,1),wa=f(`<p class="text-sm opacity-85"> </p> <p class="tray px-2 py-1 font-mono text-xs break-all"> </p> <!> <!> <!>`,1),Ta=f(`<td class="w-full max-w-0 md:w-auto md:max-w-none"><div class="flex items-center gap-3"><!> <div class="min-w-0"><div class="flex min-w-0 items-center gap-2"><!> <!></div> <div class="hint truncate font-mono text-xs"> </div></div></div></td> <td class="hidden md:table-cell"><div class="hint max-w-[18rem] truncate font-mono text-xs"> </div></td> <td class="hidden text-xs whitespace-nowrap opacity-85 md:table-cell"> </td>`,1),Ea=f(`<!> <!>`,1),Da=f(`<!> <!> <!> <!>`,1);function Oa(n,i){U(i,!0);let c=Dt(),f=[[`service`,[`client_credentials`]],[`app`,[`authorization_code`,`refresh_token`]],[`saml`,[]],[`preset`,[]]],p=[Z(`clients.columns.name`),{label:Z(`clients.columns.resources`),hide:!0},{label:Z(`clients.columns.registered`),hide:!0}],m=At(),h=w(!1),g=w(!1),_=w(null),v=w(C([])),y=w(C([])),b=w(C(x()));function x(){return{name:``,kind:`service`,redirects:``,resources:``,scopes:[],metadata:``,entityId:``,certificate:``,sloUrl:``,requestsSigned:!1,preset:``,baseUrl:``,slug:``}}let T=J(()=>t(y).find(e=>e.key===t(b).preset)),E=e=>e.split(`
|
|
127
|
+
`).map(e=>e.trim()).filter(Boolean);async function O(){if(S(b,x(),!0),S(_,null),S(h,!0),m.clear(),t(v).length)return;let e=await m.attempt(()=>i.api.query(`query Scopes { scopesSupported appPresets { key name asks guide } }`));e&&(S(v,e.scopesSupported,!0),S(y,e.appPresets,!0))}async function k(){let e=await m.attempt(()=>i.api.query(`mutation Read($xml: String!) {
|
|
128
|
+
readSamlApplicationMetadata(xml: $xml) { entityId acsUrls certificate requestsSigned sloUrl }
|
|
129
|
+
}`,{xml:t(b).metadata}));if(!e)return;let n=e.readSamlApplicationMetadata;t(b).entityId=n.entityId??t(b).entityId,t(b).redirects=n.acsUrls.join(`
|
|
130
|
+
`)||t(b).redirects,t(b).certificate=n.certificate??t(b).certificate,t(b).sloUrl=n.sloUrl??t(b).sloUrl,t(b).requestsSigned=n.requestsSigned}function A(){return t(b).kind===`preset`?[`
|
|
131
|
+
mutation AddApp($preset: ID!, $baseUrl: String!, $name: String, $slug: String) {
|
|
132
|
+
addApp(preset: $preset, baseUrl: $baseUrl, name: $name, slug: $slug) {
|
|
133
|
+
client { clientId name } secret guide settings { label value }
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
`,{preset:t(b).preset,baseUrl:t(b).baseUrl.trim(),name:t(b).name.trim()||null,slug:t(b).slug.trim()||null},`addApp`]:t(b).kind===`saml`?[`
|
|
137
|
+
mutation Saml(
|
|
138
|
+
$name: String!, $entityId: String!, $acsUrls: [String!]!, $certificate: String, $requestsSigned: Boolean,
|
|
139
|
+
$sloUrl: String
|
|
140
|
+
) {
|
|
141
|
+
createSamlApplication(
|
|
142
|
+
name: $name, entityId: $entityId, acsUrls: $acsUrls, certificate: $certificate, requestsSigned: $requestsSigned,
|
|
143
|
+
sloUrl: $sloUrl
|
|
144
|
+
) {
|
|
145
|
+
client { clientId name }
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
`,{name:t(b).name.trim(),entityId:t(b).entityId.trim(),acsUrls:E(t(b).redirects),certificate:t(b).certificate.trim()||null,requestsSigned:t(b).requestsSigned,sloUrl:t(b).sloUrl.trim()||null},`createSamlApplication`]:[`
|
|
149
|
+
mutation Create(
|
|
150
|
+
$name: String!, $grantTypes: [String!], $redirectUris: [String!],
|
|
151
|
+
$resources: [String!], $allowedScopes: [String!]
|
|
152
|
+
) {
|
|
153
|
+
createClient(
|
|
154
|
+
name: $name, grantTypes: $grantTypes, redirectUris: $redirectUris,
|
|
155
|
+
resources: $resources, allowedScopes: $allowedScopes
|
|
156
|
+
) {
|
|
157
|
+
secret client { clientId name }
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
`,{name:t(b).name.trim(),grantTypes:f.find(([e])=>e===t(b).kind)[1],redirectUris:t(b).kind===`app`?E(t(b).redirects):[],resources:E(t(b).resources),allowedScopes:t(b).scopes},`createClient`]}async function j(){let[e,t,n]=A();S(g,!0);let r=await m.attempt(()=>i.api.query(e,t));S(g,!1),r&&(S(_,r[n],!0),S(h,!1),te())}let M=w(``),N=w(``),F=w(!1),I=w(C([])),L=w(!0);async function R(){S(L,!0);let e=await m.attempt(()=>i.api.query(`
|
|
161
|
+
query Clients($search: String, $archived: Boolean, $afterId: ID, $limit: Int) {
|
|
162
|
+
clients(search: $search, archived: $archived, afterId: $afterId, limit: $limit) {
|
|
163
|
+
clientId name dynamic approvedAt archivedAt logoUrl(size: 64)
|
|
164
|
+
resources createdAt
|
|
165
|
+
}
|
|
166
|
+
clientCount(search: $search, archived: $archived)
|
|
167
|
+
}
|
|
168
|
+
`,{search:t(N)||null,archived:t(F),afterId:c.cursor,limit:c.size}));S(L,!1),e&&(S(I,e.clients,!0),c.counted(e.clientCount))}function ee(e){e===`forward`?c.forward(t(I).at(-1)?.clientId):c.back(),R()}R();function te(){c.reset(),R()}function ne(){S(N,t(M),!0),te()}function W(e){S(F,e,!0),te()}let K=J(()=>t(N)?Z(t(F)?`clients.empty.archived_matches`:`clients.empty.matches`,{query:t(N)}):t(F)?Z(`clients.empty.archived`):Z(`clients.empty.none`));{let i=n=>{var r=pa(),i=u(r);{let e=J(()=>Z(`clients.archived`));fa(i,{get label(){return t(e)},onchange:W,get checked(){return t(F)},set checked(e){S(F,e,!0)}})}var a=l(i,2);{let e=J(()=>Z(`clients.search`)),n=J(()=>Z(`clients.search_placeholder`));$t(a,{get label(){return t(e)},get placeholder(){return t(n)},onsearch:ne,get value(){return t(M)},set value(e){S(M,e,!0)}})}var o=l(a,2),c=G(o,!0);s(e=>B(c,e),[()=>Z(`clients.add`)]),d(`click`,o,O),e(n,r)},x=J(()=>Z(`clients.title`));Kn(n,{get title(){return t(x)},actions:i,children:(n,i)=>{var x=Da(),C=u(x);Bn(C,{get feedback(){return m.state}});var w=l(C,2),E=n=>{{let i=J(()=>Z(`clients.add`));Q(n,{get title(){return t(i)},children:(n,i)=>{var a=ya(),c=u(a);{let e=J(()=>Z(`clients.name`)),n=J(()=>Z(`clients.name_placeholder`));$(c,{get label(){return t(e)},get placeholder(){return t(n)},get value(){return t(b).name},set value(e){t(b).name=e}})}var p=l(c,2);X(p,21,()=>f,([e])=>e,(n,r)=>{var i=J(()=>re(t(r),1));let a=()=>t(i)[0];var o=ma(),c=G(o,!0);s(e=>{P(o,`aria-pressed`,t(b).kind===a()),B(c,e)},[()=>Z(`clients.kinds.${a()}`)]),d(`click`,o,()=>t(b).kind=a()),e(n,o)}),Y(p);var m=l(p,2),_=n=>{var i=ha(),a=u(i);{let e=J(()=>Z(`clients.app`)),n=J(()=>[[``,Z(`clients.choose`)],...t(y).map(e=>[e.key,e.name])]);ua(a,{get label(){return t(e)},get value(){return t(b).preset},get options(){return t(n)},onchange:e=>{t(b).preset=e,t(b).slug=t(y).find(t=>t.key===e)?.asks?.name??``}})}var o=l(a,2);{let e=J(()=>Z(`clients.address`));$(o,{get label(){return t(e)},placeholder:`https://grafana.example.com`,get value(){return t(b).baseUrl},set value(e){t(b).baseUrl=e}})}var s=l(o,2),c=e=>{{let n=J(()=>Z(`clients.slug`));$(e,{get label(){return t(n)},get placeholder(){return t(T).asks.name},get value(){return t(b).slug},set value(e){t(b).slug=e}})}};r(s,e=>{t(T)?.asks?.name&&e(c)}),e(n,i)};r(m,e=>{t(b).kind===`preset`&&e(_)});var x=l(m,2),C=G(x,!0),w=l(x,2),E=n=>{var r=ga(),i=u(r),a=o(i),c=G(a,!0),f=l(a,2);ie(f),Y(i);var p=l(i,2),m=G(p,!0),h=l(p,2);{let e=J(()=>Z(`clients.entity_id`));$(h,{get label(){return t(e)},placeholder:`https://wiki.example.com/saml`,get value(){return t(b).entityId},set value(e){t(b).entityId=e}})}var g=l(h,2),_=o(g),v=G(_,!0),y=l(_,2);ie(y),Y(g);var x=l(g,2),S=o(x),C=G(S,!0),w=l(S,2);ie(w),Y(x);var T=l(x,2);{let e=J(()=>Z(`clients.slo_url`));$(T,{get label(){return t(e)},placeholder:`https://wiki.example.com/saml/slo`,get value(){return t(b).sloUrl},set value(e){t(b).sloUrl=e}})}var E=l(T,2);{let e=J(()=>Z(`clients.requests_signed`));fa(E,{get label(){return t(e)},get checked(){return t(b).requestsSigned},set checked(e){t(b).requestsSigned=e}})}s((e,t,n,r,i)=>{B(c,e),p.disabled=t,B(m,n),B(v,r),B(C,i)},[()=>Z(`clients.metadata`),()=>!t(b).metadata.trim(),()=>Z(`clients.read`),()=>Z(`clients.acs`),()=>Z(`clients.certificate`)]),V(f,()=>t(b).metadata,e=>t(b).metadata=e),d(`click`,p,k),V(y,()=>t(b).redirects,e=>t(b).redirects=e),V(w,()=>t(b).certificate,e=>t(b).certificate=e),e(n,r)};r(w,e=>{t(b).kind===`saml`&&e(E)});var D=l(w,2),O=n=>{var r=_a(),i=o(r),a=G(i,!0),c=l(i,2);ie(c),Y(r),s(e=>B(a,e),[()=>Z(`clients.redirect_uris`)]),V(c,()=>t(b).redirects,e=>t(b).redirects=e),e(n,r)};r(D,e=>{t(b).kind===`app`&&e(O)});var A=l(D,2),M=n=>{var r=va(),i=u(r),a=o(i),c=G(a,!0),d=l(a,2);ie(d),Y(i);var f=l(i,2),p=o(f),m=G(p,!0);Mn(l(p,2),{get value(){return t(b).scopes},get available(){return t(v)},onchange:e=>t(b).scopes=e}),Y(f),s((e,t)=>{B(c,e),B(m,t)},[()=>Z(`clients.resources`),()=>Z(`clients.scopes`)]),V(d,()=>t(b).resources,e=>t(b).resources=e),e(n,r)};r(A,e=>{t(b).kind!==`saml`&&e(M)});var N=l(A,2),F=o(N),I=G(F,!0),L=l(F,2),R=G(L,!0);Y(N),s((e,t,n,r,i)=>{P(p,`aria-label`,e),B(C,t),F.disabled=n,B(I,r),B(R,i)},[()=>Z(`clients.kind`),()=>t(b).kind===`preset`?Z(`clients.hints.preset`):t(b).kind===`service`?Z(`clients.hints.service`):t(b).kind===`saml`?Z(`clients.hints.saml`):Z(`clients.hints.app`),()=>t(g)||(t(b).kind===`preset`?!t(b).preset||!t(b).baseUrl.trim():!t(b).name.trim()||t(b).kind===`saml`&&!t(b).entityId.trim()),()=>t(g)?Z(`clients.adding`):Z(`clients.submit`),()=>Z(`clients.cancel`)]),d(`click`,F,j),d(`click`,L,()=>S(h,!1)),e(n,a)},$$slots:{default:!0}})}};r(w,e=>{t(h)&&e(E)});var D=l(w,2),O=n=>{{let i=J(()=>Z(`clients.created.title`,{name:t(_).client.name}));Q(n,{get title(){return t(i)},children:(n,i)=>{var c=wa(),d=u(c),f=G(d,!0),p=l(d,2),m=G(p,!0),h=l(p,2),g=n=>{var r=ba(),i=G(r,!0);s(()=>B(i,t(_).secret)),e(n,r)};r(h,e=>{t(_).secret&&e(g)});var v=l(h,2),y=n=>{var i=Ca(),a=u(i),c=o(a),d=l(c),f=n=>{var r=xa(),i=u(r),a=G(i,!0);H(),s(e=>{P(i,`href`,t(_).guide),B(a,e)},[()=>Z(`clients.created.guide`)]),e(n,r)};r(d,e=>{t(_).guide&&e(f)}),Y(a);var p=l(a,2);X(p,21,()=>t(_).settings,e=>e.label,(n,r)=>{var i=Sa(),a=u(i),o=G(a,!0),c=l(a,2),d=G(c,!0);s(()=>{B(o,t(r).label),B(d,t(r).value)}),e(n,i)}),Y(p),s(e=>B(c,`${e??``} `),[()=>Z(`clients.created.settings`,{name:t(_).client.name})]),e(n,i)};r(v,e=>{t(_).settings&&e(y)});var b=l(v,2);{let n=J(()=>`/clients/${t(_).client.clientId}`);yt(b,{get to(){return t(n)},class:`btn btn-sm self-start`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`clients.created.open`)]),e(t,r)},$$slots:{default:!0}})}s(e=>{B(f,e),B(m,t(_).client.clientId)},[()=>Z(t(_).secret?`clients.created.client_id_and_secret`:`clients.created.client_id`)]),e(n,c)},$$slots:{default:!0}})}};r(D,e=>{t(_)&&e(O)});var A=l(D,2),M=e=>{xt(e,{})},N=n=>{var r=Ea(),i=u(r);nn(i,{get columns(){return p},get count(){return t(I).length},get empty(){return t(K)},rows:n=>{var r=z(),i=u(r);X(i,17,()=>t(I),e=>e.clientId,(n,r)=>{{let i=J(()=>`/clients/${t(r).clientId}`);Zt(n,{get to(){return t(i)},children:(n,i)=>{var c=Ta(),d=u(c),f=o(d),p=o(f);oa(p,{get client(){return t(r)},class:`size-8 shrink-0 rounded text-sm`});var m=l(p,2),h=o(m),g=o(h);{let n=J(()=>`/clients/${t(r).clientId}`);yt(g,{get to(){return t(n)},class:`link link-hover truncate font-medium`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).name)),e(n,o)},$$slots:{default:!0}})}var _=l(g,2);{let e=J(()=>[t(r).archivedAt&&[`archived`,Z(`clients.marks.archived`),`quiet`],t(r).dynamic&&!t(r).approvedAt&&[`dynamic`,Z(`clients.marks.dynamic`),`warn`],t(r).dynamic&&t(r).approvedAt&&[`dynamic`,Z(`clients.marks.dynamic_approved`),`quiet`]].filter(Boolean));wt(_,{get marks(){return t(e)}})}Y(h);var v=l(h,2),y=G(v,!0);Y(m),Y(f),Y(d);var b=l(d,2),x=o(b),S=G(x,!0);Y(b);var C=l(b,2),w=G(C,!0);s((e,n,i)=>{P(v,`title`,t(r).clientId),B(y,t(r).clientId),P(x,`title`,e),B(S,n),B(w,i)},[()=>Ht(t(r).resources),()=>Ht(t(r).resources)||`—`,()=>zt(t(r).createdAt)]),e(n,c)},$$slots:{default:!0}})}}),e(n,r)},$$slots:{rows:!0}}),kt(l(i,2),{get pages(){return c},get shown(){return t(I).length},get busy(){return t(L)},onpage:ee}),e(n,r)};r(A,e=>{t(L)&&t(I).length===0?e(M):e(N,-1)}),e(n,x)},$$slots:{actions:!0,default:!0}})}D()}c([`click`]);var ka=`
|
|
169
|
+
key name signup nickname email emailVerified phone phoneVerified
|
|
170
|
+
passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork
|
|
171
|
+
emailDomains providers confirmation hidden signupScopes archivedAt
|
|
172
|
+
`,Aa=[`password`,`passkey`,`provider`,`email_code`,`otp`,`backup_codes`],ja=[`none`,`code`,`link`,`approval`],Ma=[`off`,`optional`,`required`],Na=(e,t,n)=>e.includes(n)?Z(`policy_rules.${t}.${n}`):n,Pa=(e,t)=>e?.length?e.map(e=>Na(Aa,`factors`,e)).join(`, `):Z(`policy_rules.values.${t}`),Fa=e=>Z(e?`policy_rules.answers.yes`:`policy_rules.answers.no`),Ia=e=>Z(`policy_rules.values.${e}`),La=[[86400,`day`],[3600,`hour`],[60,`minute`]];function Ra(e){let[t,n]=La.find(([t])=>e%t===0)??[1,`second`];return Z(`policy_rules.units.${n}`,{count:e/t})}var za=e=>Z(`policy_rules.terms.${e}`);function Ba(e){return[[za(`signup`),e.signup?Ia(`open`):Ia(`invitation_only`)],[za(`email_domains`),Pa(e.emailDomains,`any`)],[za(`proof_of_work`),e.proofOfWork?Z(`policy_rules.values.bits`,{bits:e.proofOfWork}):Ia(`off`)],[za(`hidden`),Fa(e.hidden)],[za(`nickname`),Na(Ma,`presence`,e.nickname)],[za(`email`),Na(Ma,`presence`,e.email)],[za(`email_verified`),Fa(e.emailVerified)],[za(`phone`),Na(Ma,`presence`,e.phone)],[za(`phone_verified`),Fa(e.phoneVerified)],[za(`first_factors`),Pa(e.firstFactors,`nothing`)],[za(`providers`),e.providers===null?Ia(`every_one`):Pa(e.providers,`none`)],[za(`password`),Z(e.refuseCommonPasswords?`policy_rules.values.not_common`:`policy_rules.values.password`,{minimum:e.passwordMinimum})],[za(`password_required`),Fa(e.passwordRequired)],[za(`second_factors`),Pa(e.secondFactors,`none`)],[za(`second_factor_required`),Fa(e.secondFactorRequired)],[za(`apps_require_second_factor`),Fa(e.appsRequireSecondFactor)],[za(`session_lifetime`),e.sessionLifetime?Ra(e.sessionLifetime):Ia(`default_lifetime`)],[za(`refuse_breached`),Fa(e.refuseBreachedPasswords)],[za(`risk_step_up`),e.riskStepUpAt?Z(`policy_rules.values.at`,{score:e.riskStepUpAt}):Ia(`never`)],[za(`risk_refuse`),e.riskRefuseAt?Z(`policy_rules.values.at`,{score:e.riskRefuseAt}):Ia(`never`)],[za(`idle_timeout`),e.sessionIdleTimeout?Ra(e.sessionIdleTimeout):Ia(`never`)],[za(`confirmation`),Na(ja,`confirmations`,e.confirmation)],[za(`signup_scopes`),Pa(e.signupScopes,`none`)]]}function Va(e,t){let n=new Map(Ba(t));return Ba(e).filter(([e,t])=>n.get(e)!==t).map(([e,t])=>({term:e,value:t,instead:n.get(e)}))}var Ha=f(`<label class="flex min-w-0 flex-col gap-1.5"><span class="field-label"> </span> <input class="input input-sm w-full font-mono text-xs" autocapitalize="none" autocorrect="off" spellcheck="false"/> <span class="hint"> </span></label>`),Ua=f(`<li class="flex flex-col gap-2 rounded-box border border-base-300 p-3"><div class="flex flex-wrap items-center justify-between gap-2"><span class="field-label"> </span> <div class="flex gap-1"><button type="button" class="btn btn-ghost btn-xs"> </button> <button type="button" class="btn btn-ghost btn-xs"> </button> <button type="button" class="btn btn-ghost btn-xs"> </button></div></div> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" spellcheck="false" placeholder="/admin/**"></textarea> <span class="hint"> </span></label> <div class="grid gap-2 sm:grid-cols-3"></div> <!></li>`),Wa=f(`<ol class="flex flex-col gap-4"></ol>`),Ga=f(`<p class="text-sm opacity-85"> </p>`),Ka=f(`<!> <p class="hint"> </p> <div class="flex flex-wrap gap-2"><button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-sm btn-primary"> </button></div>`,1);function qa(n,i){U(i,!0);let a=R(i,`rules`,19,()=>[]),c=[`one_factor`,`two_factor`,`token`,`open`,`deny`].map(e=>[e,Z(`forward_auth_rules.outcomes.${e}`)]),f=[`paths`,`methods`,`networks`,`groups`],p=e=>e.map(e=>({...Object.fromEntries(f.map(t=>[t,(e[t]??[]).join(t===`paths`?`
|
|
173
|
+
`:`, `)])),outcome:e.outcome})),m=w(C(x(()=>p(a()))));b(()=>{S(m,p(a()),!0)});let h=(e,t)=>e.split(t===`paths`?/\n/:/[\s,]+/).map(e=>e.trim()).filter(Boolean),g=()=>t(m).map(e=>({...Object.fromEntries(f.map(t=>[t,h(e[t],t)])),outcome:e.outcome}));function _(){S(m,[...t(m),{paths:``,methods:``,networks:``,groups:``,outcome:`one_factor`}],!0)}function v(e){S(m,t(m).filter((t,n)=>n!==e),!0)}function T(e,n){let r=[...t(m)];[r[e],r[e+n]]=[r[e+n],r[e]],S(m,r,!0)}{let a=J(()=>Z(`forward_auth_rules.title`)),f=J(()=>Z(`forward_auth_rules.lede`));Q(n,{row:!0,get title(){return t(a)},get lede(){return t(f)},children:(n,a)=>{var f=Ka(),p=u(f),h=n=>{var r=Wa();X(r,21,()=>t(m),y,(n,r,i)=>{var a=Ua(),u=o(a),f=o(u),p=G(f,!0),h=l(f,2),g=o(h);g.disabled=i===0;var _=G(g,!0),y=l(g,2),b=G(y,!0),x=l(y,2),S=G(x,!0);Y(h),Y(u);var C=l(u,2),w=o(C),E=G(w,!0),D=l(w,2);ie(D);var O=l(D,2),k=G(O,!0);Y(C);var A=l(C,2);X(A,20,()=>[`methods`,`networks`,`groups`],e=>e,(n,i)=>{var a=Ha(),c=o(a),u=G(c,!0),d=l(c,2);j(d);var f=l(d,2),p=G(f,!0);Y(a),s((e,t)=>{B(u,e),B(p,t)},[()=>Z(`forward_auth_rules.${i}`),()=>Z(`forward_auth_rules.${i}_hint`)]),V(d,()=>t(r)[i],e=>t(r)[i]=e),e(n,a)}),Y(A);var M=l(A,2);{let e=J(()=>Z(`forward_auth_rules.outcome`));ua(M,{get label(){return t(e)},get value(){return t(r).outcome},get options(){return c},onchange:e=>t(r).outcome=e})}Y(a),s((e,n,r,a,o,s)=>{B(p,e),B(_,n),y.disabled=i===t(m).length-1,B(b,r),B(S,a),B(E,o),B(k,s)},[()=>Z(`forward_auth_rules.rule`,{number:i+1}),()=>Z(`forward_auth_rules.up`),()=>Z(`forward_auth_rules.down`),()=>Z(`forward_auth_rules.remove`),()=>Z(`forward_auth_rules.paths`),()=>Z(`forward_auth_rules.paths_hint`)]),d(`click`,g,()=>T(i,-1)),d(`click`,y,()=>T(i,1)),d(`click`,x,()=>v(i)),V(D,()=>t(r).paths,e=>t(r).paths=e),e(n,a)}),Y(r),e(n,r)},b=t=>{var n=Ga(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`forward_auth_rules.empty`)]),e(t,n)};r(p,e=>{t(m).length?e(h):e(b,-1)});var x=l(p,2),S=G(x,!0),C=l(x,2),w=o(C),E=G(w,!0),D=l(w,2),O=G(D,!0);Y(C),s((e,t,n)=>{B(S,e),B(E,t),B(O,n)},[()=>Z(`forward_auth_rules.trust`),()=>Z(`forward_auth_rules.add`),()=>Z(`forward_auth_rules.save`)]),d(`click`,w,_),d(`click`,D,()=>i.onsave(g())),e(n,f)},$$slots:{default:!0}})}D()}c([`click`]);var Ja=f(`<li class="flex-wrap"><div class="flex min-w-0 flex-col"><span class="text-sm"><!></span> <span class="hint truncate text-xs"><span class="font-mono"> </span> </span></div> <div class="ml-auto"><button type="button" class="btn btn-xs btn-error btn-outline"> </button></div></li>`),Ya=f(`<ul class="compact-list"></ul>`),Xa=f(`<p class="text-sm opacity-85"> </p>`),Za=f(`<!> <!>`,1);function Qa(n,i){U(i,!0);let c=At();async function f(e){confirm(Z(`machines.revoke_confirm`,{name:e.name}))&&await c.attempt(()=>i.api.query(`
|
|
174
|
+
mutation Unenroll($clientId: ID!) {
|
|
175
|
+
unenrollClient(clientId: $clientId) { client { archivedAt } }
|
|
176
|
+
}
|
|
177
|
+
`,{clientId:e.clientId}),Z(`machines.revoked`,{name:e.name}))&&await i.onrevoked()}{let p=J(()=>Z(`machines.title`)),m=J(()=>Z(`machines.lede`));Q(n,{get title(){return t(p)},get lede(){return t(m)},children:(n,p)=>{var m=Za(),h=u(m);Bn(h,{get feedback(){return c.state}});var g=l(h,2),_=n=>{var r=Ya();X(r,21,()=>i.rows,e=>e.clientId,(n,r)=>{var i=Ja(),c=o(i),u=o(c),p=o(u);{let n=J(()=>`/clients/${t(r).clientId}`);yt(p,{get to(){return t(n)},class:`link link-hover`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).name)),e(n,o)},$$slots:{default:!0}})}Y(u);var m=l(u,2),h=o(m),g=G(h,!0),_=l(h);Y(m),Y(c);var v=l(c,2),y=o(v),b=G(y,!0);Y(v),Y(i),s((e,n,i)=>{B(g,t(r).clientId),B(_,` · ${e??``}
|
|
178
|
+
· ${n??``}`),B(b,i)},[()=>t(r).lastSeenAt?Z(`machines.last_seen`,{day:zt(t(r).lastSeenAt)}):Z(`machines.never`),()=>Z(`machines.enrolled`,{day:zt(t(r).createdAt)}),()=>Z(`machines.revoke`)]),d(`click`,y,()=>f(t(r))),e(n,i)}),Y(r),e(n,r)},v=t=>{var n=Xa(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`machines.empty`)]),e(t,n)};r(g,e=>{i.rows.length?e(_):e(v,-1)}),e(n,m)},$$slots:{default:!0}})}D()}c([`click`]);var $a=f(`<option> </option>`),eo=f(`<select class="select select-xs"></select>`),to=f(`<li class="flex-wrap"><div class="flex min-w-0 flex-col"><span class="text-sm"><!></span> <span class="hint text-xs"> </span></div> <div class="ml-auto flex flex-wrap items-center gap-2"><!> <button type="button" class="btn btn-xs btn-primary"> </button> <button type="button" class="btn btn-xs btn-outline"> </button></div></li>`),no=f(`<ul class="compact-list"></ul>`),ro=f(`<p class="text-sm opacity-85"> </p>`),io=f(`<!> <!>`,1);function ao(n,i){U(i,!0);let c=At(),f=C({});async function p(e){let t=f[e.id]??i.labels[0];await c.attempt(()=>i.api.query(`
|
|
179
|
+
mutation GrantAccess($id: ID!, $label: String) {
|
|
180
|
+
grantAccess(id: $id, label: $label) { accessRequest { id label } }
|
|
181
|
+
}
|
|
182
|
+
`,{id:e.id,label:t}),Z(`access_requests.granted`,{identifier:e.actor.identifier,label:t}))&&await i.ondecided()}async function m(e){await c.attempt(()=>i.api.query(`
|
|
183
|
+
mutation DeclineAccess($id: ID!) {
|
|
184
|
+
declineAccess(id: $id) { accessRequest { id } }
|
|
185
|
+
}
|
|
186
|
+
`,{id:e.id}),Z(`access_requests.declined`,{identifier:e.actor.identifier}))&&await i.ondecided()}{let h=J(()=>Z(`access_requests.title`)),g=J(()=>Z(`access_requests.lede`));Q(n,{row:!0,get title(){return t(h)},get lede(){return t(g)},children:(n,h)=>{var g=io(),_=u(g);Bn(_,{get feedback(){return c.state}});var v=l(_,2),y=n=>{var c=no();X(c,21,()=>i.rows,e=>e.id,(n,c)=>{var u=to(),h=o(u),g=o(h),_=o(g);{let n=J(()=>`/actors/${t(c).actor.uuid}`);yt(_,{get to(){return t(n)},class:`link link-hover`,children:(n,r)=>{H();var i=a();s(()=>B(i,t(c).actor.identifier)),e(n,i)},$$slots:{default:!0}})}Y(g);var v=l(g,2),y=G(v,!0);Y(h);var b=l(h,2),x=o(b),S=n=>{var r=eo();X(r,20,()=>i.labels,e=>e,(t,n)=>{var r=$a(),i=G(r,!0),a={};s(()=>{B(i,n),a!==(a=n)&&(r.value=(r.__value=a)??``)}),e(t,r)}),Y(r);var a;I(r),s(e=>{P(r,`aria-label`,e),a!==(a=f[t(c).id]??i.labels[0])&&(r.value=(r.__value=a)??``,T(r,a))},[()=>Z(`access_requests.as`)]),d(`change`,r,e=>f[t(c).id]=e.currentTarget.value),e(n,r)};r(x,e=>{i.labels.length>1&&e(S)});var C=l(x,2),w=G(C,!0),E=l(C,2),D=G(E,!0);Y(b),Y(u),s((e,t,n)=>{B(y,e),B(w,t),B(D,n)},[()=>Z(`access_requests.asked`,{day:zt(t(c).createdAt)}),()=>Z(`access_requests.grant`),()=>Z(`access_requests.decline`)]),d(`click`,C,()=>p(t(c))),d(`click`,E,()=>m(t(c))),e(n,u)}),Y(c),e(n,c)},b=t=>{var n=ro(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`access_requests.empty`)]),e(t,n)};r(v,e=>{i.rows.length?e(y):e(b,-1)}),e(n,g)},$$slots:{default:!0}})}D()}c([`change`,`click`]);var oo=f(`<span class="hint">· <!></span>`),so=f(`<button type="button" class="btn btn-xs btn-error btn-outline"> </button>`),co=f(`<span class="hint text-xs"> </span>`),lo=f(`<li class="flex-wrap"><div class="flex min-w-0 flex-col"><span class="text-sm"><code class="font-mono"> </code> <!></span> <span class="hint truncate text-xs"><span class="font-mono"> </span> </span></div> <div class="ml-auto"><!></div></li>`),uo=f(`<!> <ul class="compact-list"></ul>`,1);function fo(n,i){U(i,!0);let c=R(i,`showClient`,3,!1),f=R(i,`row`,3,!1),p=At();async function m(e){confirm(Z(`namespaces.release_confirm`,{name:e.name}))&&await p.attempt(()=>i.api.query(`
|
|
187
|
+
mutation Release($name: String!) {
|
|
188
|
+
releaseNamespace(name: $name) { released }
|
|
189
|
+
}
|
|
190
|
+
`,{name:e.name}),Z(`namespaces.released`,{name:e.name}))&&await i.onreleased()}{let h=J(()=>Z(`namespaces.title`));Q(n,{get row(){return f()},get title(){return t(h)},children:(n,f)=>{var h=uo(),g=u(h);Bn(g,{get feedback(){return p.state}});var _=l(g,2);X(_,21,()=>i.rows,e=>e.name,(n,i)=>{var u=lo(),f=o(u),p=o(f),h=o(p),g=G(h,!0),_=l(h,2),v=n=>{var c=oo(),u=l(o(c)),d=n=>{{let r=J(()=>`/clients/${t(i).client.clientId}`);yt(n,{get to(){return t(r)},class:`link link-hover`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).client.name)),e(n,o)},$$slots:{default:!0}})}},f=t=>{var n=a();s(e=>B(n,e),[()=>Z(`namespaces.nothing`)]),e(t,n)};r(u,e=>{t(i).client?e(d):e(f,-1)}),Y(c),e(n,c)};r(_,e=>{c()&&e(v)}),Y(p);var y=l(p,2),b=o(y),x=G(b,!0),S=l(b);Y(y),Y(f);var C=l(f,2),w=o(C),T=n=>{var r=so(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`namespaces.release`)]),d(`click`,r,()=>m(t(i))),e(n,r)},E=t=>{var n=co(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`namespaces.archive_to_release`)]),e(t,n)};r(w,e=>{t(i).releasable?e(T):e(E,-1)}),Y(C),Y(u),s(e=>{B(g,t(i).name),P(b,`title`,t(i).resource),B(x,t(i).resource),B(S,` · ${e??``}`)},[()=>zt(t(i).claimedAt)]),e(n,u)}),Y(_),e(n,h)},$$slots:{default:!0}})}D()}c([`click`]);var po=f(`<span class="hint"> </span>`),mo=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" autocapitalize="none" autocorrect="off" spellcheck="false"></textarea> <!> <button type="button" class="btn btn-sm self-start"> </button></label>`);function ho(n,i){U(i,!0);let a=R(i,`hint`,3,null),c=R(i,`value`,19,()=>[]),u=R(i,`save`,19,()=>Z(`ui.save`)),f=R(i,`rows`,3,3),p=w(C(x(()=>c().join(`
|
|
191
|
+
`)))),m=w(C(x(()=>c().join(`
|
|
192
|
+
`))));b(()=>{let e=c().join(`
|
|
193
|
+
`);e!==t(m)&&(S(m,e,!0),S(p,e,!0))});let h=J(()=>t(p)!==t(m)),g=()=>t(p).split(`
|
|
194
|
+
`).map(e=>e.trim()).filter(Boolean);var _=mo(),v=o(_),y=G(v,!0),T=l(v,2);ie(T);var E=l(T,2),O=t=>{var n=po(),r=G(n,!0);s(()=>B(r,a())),e(t,n)};r(E,e=>{a()&&e(O)});var k=l(E,2),A=G(k,!0);Y(_),s(()=>{B(y,i.label),P(T,`rows`,f()),k.disabled=!t(h),B(A,u())}),V(T,()=>t(p),e=>S(p,e)),d(`click`,k,()=>i.onsave(g())),e(n,_),D()}c([`click`]);var go=f(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),_o=f(`<p class="hint text-sm"> <!></p>`),vo=f(`<div class="alert alert-warning alert-soft flex-wrap items-center gap-3 text-sm" role="status"><span> </span> <button type="button" class="btn btn-sm"> </button></div>`),yo=f(`<div class="alert alert-warning alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <code class="font-mono text-sm break-all"> </code></div>`),bo=f(`<label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox checkbox-sm"/> <code class="hint font-mono"> </code></label>`),xo=f(`<div class="flex flex-col gap-1"></div>`),So=f(`<p class="text-sm opacity-85"> <!> </p>`),Co=f(`<!> <!> <p class="hint"> </p>`,1),wo=f(`<div class="flex flex-col gap-1.5"><span class="field-label"> </span> <!></div> <div class="flex flex-col gap-1.5"><span class="field-label"> </span> <!></div>`,1),To=f(`<!> <!> <!> <!>`,1),Eo=f(`<!> <!> <!>`,1),Do=f(`<p class="hint"> </p> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="4" spellcheck="false"></textarea> <button type="button" class="btn btn-sm self-start"> </button></label> <!>`,1),Oo=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="6" spellcheck="false"></textarea> <button type="button" class="btn btn-sm self-start"> </button></label>`),ko=f(`<p class="hint"> </p> <!> <!>`,1),Ao=f(`<!> <!> <!> <!> <!>`,1),jo=f(`<p class="hint"> </p>`),Mo=f(`<option> </option>`),No=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label>`),Po=f(`<p class="text-xs text-warning"> </p>`),Fo=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label> <!> <!>`,1),Io=f(`<span role="status"> </span>`),Lo=f(`<button type="button" class="btn btn-sm"> </button> <!>`,1),Ro=f(`<button type="button" class="btn btn-sm btn-error btn-outline"> </button>`),zo=f(`<!> <!> <!> <!> <!> <!> <div class="flex flex-wrap gap-2 pt-1"><!> <!></div>`,1),Bo=f(`<!> <div class="flex flex-col gap-1.5"><!> <span class="hint"> </span></div> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="3" spellcheck="false"></textarea> <button type="button" class="btn btn-sm self-start"> </button></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="5" spellcheck="false"></textarea> <span class="hint"> </span> <button type="button" class="btn btn-sm self-start"> </button></label> <!> <!>`,1),Vo=f(`<div class="flex items-center gap-3"><!> <p class="hint"><!></p></div> <form class="flex flex-col gap-3"><!> <button type="submit" class="btn btn-sm self-start"> </button></form>`,1),Ho=f(`<dt class="opacity-80"> </dt> <dd> <span class="opacity-75 line-through"> </span></dd>`,1),Uo=f(`<div class="flex flex-col gap-1.5"><span class="field-label"> </span> <dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm"></dl></div>`),Wo=f(`<!> <!>`,1),Go=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"><option> </option><!></select></label> <!> <!> <!> <p class="hint"> </p> <!> <form class="flex flex-col gap-3"><div class="grid gap-3 sm:grid-cols-2"><!> <!> <!> <!></div> <button type="submit" class="btn btn-sm self-start"> </button></form> <!> <!>`,1),Ko=f(`<!> <!> <!> <!> <!> <div class="grid gap-4"><!></div>`,1);function qo(n,i){U(i,!0);let c=R(i,`part`,3,null),f=`
|
|
195
|
+
query Client($clientId: ID!) {
|
|
196
|
+
client(clientId: $clientId) {
|
|
197
|
+
clientId name dynamic approvedAt archivedAt secretExpiresAt createdAt
|
|
198
|
+
tokenEndpointAuthMethod applicationType clientUri logoUri tosUri policyUri logoUrl(size: 128)
|
|
199
|
+
subjectType sectorIdentifierUri
|
|
200
|
+
redirectUris postLogoutRedirectUris grantTypes responseTypes resources
|
|
201
|
+
requiredScopes allowedScopes allowedGroups forwardAuthRules
|
|
202
|
+
backchannelLogoutUri backchannelLogoutSessionRequired
|
|
203
|
+
requirePushedAuthorizationRequests requireSignedRequestObject consentRequired appPasswords jwks jwksUri
|
|
204
|
+
authorizationDetailsTypes authorizationDetailsSchemas consentLifetime
|
|
205
|
+
accessTokenLifetime refreshTokenLifetime refreshTokenAbsoluteLifetime
|
|
206
|
+
protocol samlEntityId samlCertificate samlNameIdFormat samlRequestsSigned samlIdpInitiated samlAttributes samlSloUrl
|
|
207
|
+
signInPolicy { ${ka} }
|
|
208
|
+
events(limit: 25) {
|
|
209
|
+
id action label createdAt ipAddress details
|
|
210
|
+
actor { uuid identifier }
|
|
211
|
+
by { uuid identifier }
|
|
212
|
+
device { id label }
|
|
213
|
+
}
|
|
214
|
+
approvedBy { identifier }
|
|
215
|
+
enrolledBy { clientId name }
|
|
216
|
+
enrolled { clientId name lastSeenAt createdAt }
|
|
217
|
+
accessRequests { id createdAt actor { uuid identifier } }
|
|
218
|
+
namespaces { name resource claimedAt releasable }
|
|
219
|
+
consents(limit: 25) {
|
|
220
|
+
id scopes audience updatedAt expiresAt authorizationDetails
|
|
221
|
+
actor { uuid identifier }
|
|
222
|
+
}
|
|
223
|
+
tokens(limit: 25) {
|
|
224
|
+
id kind scopes audience parentId createdAt expiresAt
|
|
225
|
+
actor { uuid identifier }
|
|
226
|
+
device { id label }
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
scopesSupported
|
|
230
|
+
groups { key name }
|
|
231
|
+
samlMetadataUrl
|
|
232
|
+
signInPolicies { key name }
|
|
233
|
+
defaultSignInPolicy { ${ka} }
|
|
234
|
+
}
|
|
235
|
+
`,p=At(),m=w(null),h=w(C([])),g=w(C([])),v=w(``),y=w(C([])),b=w(null),x=w(``),E=w(``),O=w(``),k=w(``),A=w(``),M=w(``),N=w(``),F=w(``),L=w(``),ee=w(``),te=w(``),ne=w(``),K=w(``),ae=w(``),q=w(``),oe=w(C({})),se=w(``),le=w(!0),ue=w(null),de=J(()=>!!t(m)?.secretExpiresAt&&new Date(t(m).secretExpiresAt)<new Date),fe=[[`urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`,Z(`client.name_ids.persistent`)],[`urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`,Z(`client.name_ids.email`)]],pe=J(()=>t(m)?.protocol===`saml`),me=J(()=>t(m)?[{term:Z(`client.facts.origin`),value:t(m).dynamic?Z(`client.facts.self_registered`):Z(`client.facts.approved`)},{term:Z(`client.facts.approved_by`),value:t(m).approvedBy?.identifier},{term:Z(`client.facts.registered`),value:zt(t(m).createdAt)},{term:Z(`client.facts.grants`),value:Ht(t(m).grantTypes),mono:!0},{term:Z(`client.facts.response_types`),value:Ht(t(m).responseTypes),mono:!0}]:[]),he=[[`public`,Z(`client.subjects.public`)],[`pairwise`,Z(`client.subjects.pairwise`)]],ge=[[`refresh_token`,Z(`client.grants.refresh_token`)],[`urn:ietf:params:oauth:grant-type:device_code`,Z(`client.grants.device_code`)],[`urn:ietf:params:oauth:grant-type:token-exchange`,Z(`client.grants.token_exchange`)]],_e=[[`logoUri`,`logo_uri`,`https://app.example.com/logo.png`],[`clientUri`,`client_uri`,`https://app.example.com`],[`tosUri`,`tos_uri`,`https://app.example.com/terms`],[`policyUri`,`policy_uri`,`https://app.example.com/privacy`]].map(([e,t,n])=>[e,Z(`client.links.${t}.label`),n]);async function ve(){let e=Object.fromEntries(_e.map(([e])=>[e,t(oe)[e].trim()||null])),n=e.logoUri&&e.logoUri!==t(m).logoUri;await Te(e,Z(`client.notices.saved`)),n&&setTimeout(Ce,3e3)}function ye(){return Te({accessTokenLifetime:t(N)?Number(t(N))*60:0,refreshTokenLifetime:t(F)?Number(t(F))*86400:0,refreshTokenAbsoluteLifetime:t(L)?Number(t(L))*86400:0,consentLifetime:t(M)?Number(t(M))*86400:0},Z(`client.notices.saved`))}let be=J(()=>t(m)?.signInPolicy&&t(b)?Va(t(m).signInPolicy,t(b)):[]),xe=J(()=>!!(t(m)?.jwks||t(m)?.jwksUri)),Se=e=>Object.entries(e??{}).map(([e,t])=>`${e} = ${t}`).join(`
|
|
236
|
+
`);async function Ce(){S(le,!0);try{let e=await i.api.query(f,{clientId:i.clientId});S(m,e.client,!0),S(h,e.scopesSupported,!0),S(g,e.groups,!0),S(v,(e.client?.allowedGroups??[]).filter(e=>e.includes(`:`)).join(`, `),!0),S(y,e.signInPolicies,!0),S(b,e.defaultSignInPolicy,!0),S(x,e.client?.name??``,!0),S(E,e.client?.backchannelLogoutUri??``,!0),S(O,e.client?.jwksUri??``,!0),S(k,e.client?.jwks?JSON.stringify(e.client.jwks,null,2):``,!0),S(M,e.client?.consentLifetime?String(Math.round(e.client.consentLifetime/86400)):``,!0),S(N,e.client?.accessTokenLifetime?String(Math.round(e.client.accessTokenLifetime/60)):``,!0),S(F,e.client?.refreshTokenLifetime?String(Math.round(e.client.refreshTokenLifetime/86400)):``,!0),S(L,e.client?.refreshTokenAbsoluteLifetime?String(Math.round(e.client.refreshTokenAbsoluteLifetime/86400)):``,!0),S(A,Object.keys(e.client?.authorizationDetailsSchemas??{}).length?JSON.stringify(e.client.authorizationDetailsSchemas,null,2):``,!0),S(ee,e.client?.tokenEndpointAuthMethod??``,!0),S(te,e.client?.sectorIdentifierUri??``,!0),S(ne,e.samlMetadataUrl,!0),S(K,e.client?.samlCertificate??``,!0),S(ae,e.client?.samlEntityId??``,!0),S(q,e.client?.samlSloUrl??``,!0),S(oe,Object.fromEntries(_e.map(([t])=>[t,e.client?.[t]??``])),!0),S(se,Se(e.client?.samlAttributes),!0)}catch(e){p.blame(e)}finally{S(le,!1)}}Ce();async function we(e,t,n){let r=await p.attempt(()=>i.api.query(e,t),n);return r&&await Ce(),r}let Te=(e,t)=>we(`mutation Update(
|
|
237
|
+
$clientId: ID!, $name: String, $requiredScopes: [String!], $allowedScopes: [String!],
|
|
238
|
+
$backchannelLogoutUri: String, $redirectUris: [String!],
|
|
239
|
+
$postLogoutRedirectUris: [String!], $resources: [String!],
|
|
240
|
+
$requirePushedAuthorizationRequests: Boolean, $consentRequired: Boolean,
|
|
241
|
+
$signInPolicy: ID, $grantTypes: [String!], $jwksUri: String,
|
|
242
|
+
$tokenEndpointAuthMethod: String, $requireSignedRequestObject: Boolean,
|
|
243
|
+
$samlCertificate: String, $samlRequestsSigned: Boolean, $samlIdpInitiated: Boolean,
|
|
244
|
+
$samlNameIdFormat: String, $samlEntityId: String, $samlAttributes: JSON, $samlSloUrl: String, $jwks: JSON,
|
|
245
|
+
$subjectType: String, $sectorIdentifierUri: String, $dpopBoundAccessTokens: Boolean,
|
|
246
|
+
$backchannelLogoutSessionRequired: Boolean, $clientUri: String, $logoUri: String,
|
|
247
|
+
$tosUri: String, $policyUri: String, $authorizationDetailsTypes: [String!],
|
|
248
|
+
$authorizationDetailsSchemas: JSON, $consentLifetime: Int, $allowedGroups: [String!],
|
|
249
|
+
$accessTokenLifetime: Int, $refreshTokenLifetime: Int, $refreshTokenAbsoluteLifetime: Int,
|
|
250
|
+
$forwardAuthRules: JSON
|
|
251
|
+
) {
|
|
252
|
+
updateClient(
|
|
253
|
+
clientId: $clientId, name: $name, requiredScopes: $requiredScopes,
|
|
254
|
+
allowedScopes: $allowedScopes, backchannelLogoutUri: $backchannelLogoutUri,
|
|
255
|
+
redirectUris: $redirectUris, postLogoutRedirectUris: $postLogoutRedirectUris,
|
|
256
|
+
resources: $resources,
|
|
257
|
+
requirePushedAuthorizationRequests: $requirePushedAuthorizationRequests,
|
|
258
|
+
consentRequired: $consentRequired,
|
|
259
|
+
signInPolicy: $signInPolicy,
|
|
260
|
+
grantTypes: $grantTypes,
|
|
261
|
+
jwksUri: $jwksUri,
|
|
262
|
+
tokenEndpointAuthMethod: $tokenEndpointAuthMethod,
|
|
263
|
+
requireSignedRequestObject: $requireSignedRequestObject,
|
|
264
|
+
samlCertificate: $samlCertificate,
|
|
265
|
+
samlRequestsSigned: $samlRequestsSigned,
|
|
266
|
+
samlIdpInitiated: $samlIdpInitiated,
|
|
267
|
+
samlNameIdFormat: $samlNameIdFormat,
|
|
268
|
+
samlEntityId: $samlEntityId,
|
|
269
|
+
samlAttributes: $samlAttributes,
|
|
270
|
+
samlSloUrl: $samlSloUrl,
|
|
271
|
+
jwks: $jwks,
|
|
272
|
+
subjectType: $subjectType,
|
|
273
|
+
sectorIdentifierUri: $sectorIdentifierUri,
|
|
274
|
+
dpopBoundAccessTokens: $dpopBoundAccessTokens,
|
|
275
|
+
backchannelLogoutSessionRequired: $backchannelLogoutSessionRequired,
|
|
276
|
+
clientUri: $clientUri,
|
|
277
|
+
logoUri: $logoUri,
|
|
278
|
+
tosUri: $tosUri,
|
|
279
|
+
policyUri: $policyUri,
|
|
280
|
+
authorizationDetailsTypes: $authorizationDetailsTypes,
|
|
281
|
+
authorizationDetailsSchemas: $authorizationDetailsSchemas,
|
|
282
|
+
consentLifetime: $consentLifetime
|
|
283
|
+
accessTokenLifetime: $accessTokenLifetime
|
|
284
|
+
refreshTokenLifetime: $refreshTokenLifetime
|
|
285
|
+
refreshTokenAbsoluteLifetime: $refreshTokenAbsoluteLifetime
|
|
286
|
+
allowedGroups: $allowedGroups
|
|
287
|
+
forwardAuthRules: $forwardAuthRules
|
|
288
|
+
) {
|
|
289
|
+
client { clientId }
|
|
290
|
+
}
|
|
291
|
+
}`,{clientId:i.clientId,...e},t),Ee=e=>e.split(/[\s,]+/).map(e=>e.trim()).filter(e=>e.includes(`:`));function De(e,n){let r=t(m).allowedGroups.filter(t=>t!==e);Te({allowedGroups:n?[...r,e]:r},Z(`client.notices.groups`))}function Oe(){let e=t(m).allowedGroups.filter(e=>!e.includes(`:`));Te({allowedGroups:[...e,...Ee(t(v))]},Z(`client.notices.groups`))}let ke=J(()=>t(m)?.grantTypes.includes(`client_credentials`)??!1),Ae=(e,n)=>n?[...new Set([...t(m).grantTypes,e])]:t(m).grantTypes.filter(t=>t!==e);function je(e){Te({grantTypes:Ae(`client_credentials`,e)},Z(e?`client.notices.unattended_on`:`client.notices.unattended_off`))}function Me(e){let n=Z(`client.confirm.subject`);e===t(m).subjectType||!confirm(n)?Ce():Te({subjectType:e},Z(`client.notices.subject`))}function Ne(e){let n=t(ee)===`private_key_jwt`&&t(m).tokenEndpointAuthMethod!==`private_key_jwt`,r=n?{...e,tokenEndpointAuthMethod:t(ee)}:e;Te(r,Z(n?`client.notices.keys_signing`:`client.notices.keys`))}function Pe(){let e=t(k).trim();if(!e)Ne({jwks:null});else try{Ne({jwks:JSON.parse(e),jwksUri:null})}catch{p.blame(Error(Z(`client.errors.jwks`)))}}function Fe(){let e=t(A).trim();try{Te({authorizationDetailsSchemas:e?JSON.parse(e):{}},Z(`client.notices.declared`))}catch{p.blame(Error(Z(`client.errors.declared`)))}}function Ie(){let e=t(se).split(`
|
|
292
|
+
`).map(e=>e.trim()).filter(Boolean).map(e=>e.split(`=`).map(e=>e.trim()));e.some(e=>e.length!==2||!e[0]||!e[1])?p.blame(Error(Z(`client.errors.attributes`))):Te({samlAttributes:Object.fromEntries(e)},e.length?Z(`client.notices.attributes`):Z(`client.notices.attributes_default`))}let Le=[[`client_secret_basic`,Z(`client.methods.client_secret_basic`)],[`client_secret_post`,Z(`client.methods.client_secret_post`)],[`private_key_jwt`,Z(`client.methods.private_key_jwt`)]];function Re(e){if(S(ee,e,!0),e===`private_key_jwt`&&!t(xe))return;let n=e===`private_key_jwt`?Z(`client.notices.signs_assertions`):t(m).tokenEndpointAuthMethod===`private_key_jwt`?Z(`client.notices.uses_secret`):Z(`client.notices.saved`);Te({tokenEndpointAuthMethod:e},n)}function ze(){confirm(Z(`client.confirm.restore`))&&we(`mutation Restore($clientId: ID!) {
|
|
293
|
+
restoreClient(clientId: $clientId) { client { archivedAt } }
|
|
294
|
+
}`,{clientId:i.clientId},Z(`client.notices.restored`))}async function Be(){if(!confirm(Z(`client.confirm.rotate`)))return;let e=await we(`mutation Rotate($clientId: ID!) { rotateClientSecret(clientId: $clientId) { secret } }`,{clientId:i.clientId},Z(`client.notices.rotated`));e&&S(ue,e.rotateClientSecret.secret,!0)}function Ve(){confirm(Z(`client.confirm.archive`))&&we(`mutation Archive($clientId: ID!) { archiveClient(clientId: $clientId) { client { archivedAt } } }`,{clientId:i.clientId},Z(`client.notices.archived`))}var He=z(),Ue=u(He),We=e=>{xt(e,{})},Ge=t=>{var n=go(),r=G(n,!0);s(e=>B(r,e),[()=>p.state.failure??Z(`client.missing`)]),e(t,n)},Ke=n=>{{let f=J(()=>({to:`/clients`,label:Z(`client.back`)}));Kn(n,{get title(){return t(m).name},get id(){return t(m).clientId},get back(){return t(f)},children:(n,f)=>{var C=Ko(),w=u(C);Bn(w,{get feedback(){return p.state}});var D=l(w,2),R=n=>{var r=_o(),i=o(r),c=l(i);{let n=J(()=>`/clients/${t(m).enrolledBy.clientId}`);yt(c,{get to(){return t(n)},class:`link link-hover`,children:(n,r)=>{H();var i=a();s(()=>B(i,t(m).enrolledBy.name)),e(n,i)},$$slots:{default:!0}})}Y(r),s(e=>B(i,`${e??``} `),[()=>Z(`machines.enrolled_by`)]),e(n,r)};r(D,e=>{t(m).enrolledBy&&e(R)});var U=l(D,2),le=n=>{var r=vo(),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0);Y(r),s((e,t)=>{B(a,e),B(u,t)},[()=>Z(`client.archived_on`,{day:zt(t(m).archivedAt)}),()=>Z(`client.restore`)]),d(`click`,c,ze),e(n,r)};r(U,e=>{t(m).archivedAt&&e(le)});var Se=l(U,2),we=n=>{var r=yo(),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0);Y(r),s(e=>{B(a,e),B(u,t(ue))},[()=>Z(`client.secret_once`)]),e(n,r)};r(Se,e=>{t(ue)&&e(we)});var Ee=l(Se,2);{let e=J(()=>`/clients/${i.clientId}`),n=J(()=>Z(`client.parts.label`)),r=J(()=>[[null,``,Z(`client.parts.general`)],[`access`,`/access`,Z(`client.parts.access`)],[`endpoints`,`/endpoints`,Z(`client.parts.endpoints`)],[`usage`,`/usage`,Z(`client.parts.usage`)]]);ci(Ee,{get base(){return t(e)},get part(){return c()},get label(){return t(n)},get parts(){return t(r)}})}var He=l(Ee,2),Ue=o(He),We=n=>{var c=To(),f=u(c);{let n=J(()=>Z(`client.groups.title`)),i=J(()=>Z(`client.groups.lede`));Q(f,{row:!0,get title(){return t(n)},get lede(){return t(i)},children:(n,i)=>{var c=Co(),f=u(c),p=n=>{var r=xo();X(r,21,()=>t(g),e=>e.key,(n,r)=>{var i=bo(),a=o(i);j(a);var c=l(a),u=l(c),f=G(u,!0);Y(i),s(e=>{W(a,e),B(c,` ${t(r).name??``} `),B(f,t(r).key)},[()=>t(m).allowedGroups.includes(t(r).key)]),d(`change`,a,e=>De(t(r).key,e.currentTarget.checked)),e(n,i)}),Y(r),e(n,r)},h=t=>{var n=So(),r=o(n),i=l(r);yt(i,{to:`/settings`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`client.groups.add`)]),e(t,r)},$$slots:{default:!0}});var c=l(i);Y(n),s((e,t)=>{B(r,`${e??``} `),B(c,` ${t??``}`)},[()=>Z(`client.groups.none`),()=>Z(`client.groups.limit`)]),e(t,n)};r(f,e=>{t(g).length?e(p):e(h,-1)});var _=l(f,2);{let e=J(()=>Z(`client.groups.roles`));$(_,{get label(){return t(e)},placeholder:`acme:owner, acme:billing`,onsave:Oe,get value(){return t(v)},set value(e){S(v,e,!0)}})}var y=l(_,2),b=G(y,!0);s(e=>B(b,e),[()=>t(m).allowedGroups.length?Z(`client.groups.only`,{groups:t(m).allowedGroups.join(`, `)}):Z(`client.groups.everyone`)]),e(n,c)},$$slots:{default:!0}})}var p=l(f,2),_=e=>{ao(e,{get api(){return i.api},get rows(){return t(m).accessRequests},get labels(){return t(m).allowedGroups},ondecided:Ce})};r(p,e=>{t(m).allowedGroups.length&&e(_)});var y=l(p,2),b=e=>{qa(e,{get rules(){return t(m).forwardAuthRules},onsave:e=>Te({forwardAuthRules:e},Z(`forward_auth_rules.saved`))})};r(y,e=>{t(m).protocol===`forward`&&e(b)});var x=l(y,2);{let n=J(()=>Z(`client.scopes.title`));Q(x,{row:!0,get title(){return t(n)},children:(n,r)=>{var i=wo(),a=u(i),c=o(a),d=G(c,!0);Mn(l(c,2),{get value(){return t(m).requiredScopes},get available(){return t(h)},onchange:e=>Te({requiredScopes:e},Z(`client.notices.scopes`))}),Y(a);var f=l(a,2),p=o(f),g=G(p,!0);Mn(l(p,2),{get value(){return t(m).allowedScopes},get available(){return t(h)},onchange:e=>Te({allowedScopes:e},Z(`client.notices.scopes`))}),Y(f),s((e,t)=>{B(d,e),B(g,t)},[()=>Z(`client.scopes.always`),()=>Z(`client.scopes.on_request`)]),e(n,i)},$$slots:{default:!0}})}e(n,c)},Ge=n=>{var i=Eo(),a=u(i);{let n=J(()=>Z(`client.uris.title`));Q(a,{row:!0,get title(){return t(n)},children:(n,r)=>{var i=Eo(),a=u(i);{let e=J(()=>t(pe)?Z(`client.uris.acs`):Z(`client.uris.redirect`));ho(a,{get label(){return t(e)},get value(){return t(m).redirectUris},onsave:e=>Te({redirectUris:e},Z(`client.notices.redirects`))})}var o=l(a,2);{let e=J(()=>Z(`client.uris.post_logout`));ho(o,{get label(){return t(e)},get value(){return t(m).postLogoutRedirectUris},onsave:e=>Te({postLogoutRedirectUris:e},Z(`client.notices.post_logout`))})}var s=l(o,2);{let e=J(()=>Z(`client.uris.resources`));ho(s,{get label(){return t(e)},get value(){return t(m).resources},onsave:e=>Te({resources:e},Z(`client.notices.resources`))})}e(n,i)},$$slots:{default:!0}})}var c=l(a,2),f=n=>{{let i=J(()=>Z(`client.keys.title`));Q(n,{row:!0,get title(){return t(i)},children:(n,i)=>{var a=Do(),c=u(a),f=G(c,!0),p=l(c,2);{let e=J(()=>Z(`client.keys.jwks_uri`));$(p,{get label(){return t(e)},placeholder:`https://app.example.com/.well-known/jwks.json`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Ne(t(O).trim()?{jwksUri:t(O).trim(),jwks:null}:{jwksUri:null}),get value(){return t(O)},set value(e){S(O,e,!0)}})}var h=l(p,2),g=o(h),_=G(g,!0),v=l(g,2);ie(v),P(v,`placeholder`,`{ "keys": [ ... ] }`);var y=l(v,2),b=G(y,!0);Y(h);var x=l(h,2),C=e=>{{let n=J(()=>Z(`client.keys.jar`));fa(e,{get checked(){return t(m).requireSignedRequestObject},get label(){return t(n)},onchange:e=>Te({requireSignedRequestObject:e},Z(e?`client.notices.jar_on`:`client.notices.jar_off`))})}};r(x,e=>{t(xe)&&e(C)}),s((e,t,n)=>{B(f,e),B(_,t),B(b,n)},[()=>Z(`client.keys.hint`),()=>Z(`client.keys.jwks`),()=>Z(`client.save`)]),V(v,()=>t(k),e=>S(k,e)),d(`click`,y,Pe),e(n,a)},$$slots:{default:!0}})}};r(c,e=>{t(pe)||e(f)});var p=l(c,2),h=n=>{{let i=J(()=>Z(`client.details.title`));Q(n,{row:!0,get title(){return t(i)},children:(n,i)=>{var a=ko(),c=u(a),f=G(c,!0),p=l(c,2);{let e=J(()=>Z(`client.details.types`));ho(p,{get label(){return t(e)},get value(){return t(m).authorizationDetailsTypes},onsave:e=>Te({authorizationDetailsTypes:e},Z(`client.notices.types`))})}var h=l(p,2),g=n=>{var r=Oo(),i=o(r),a=G(i,!0),c=l(i,2);ie(c),P(c,`placeholder`,`{ "payment_initiation": { "label": "Send a payment", "schema": { "type": "object" } } }`);var u=l(c,2),f=G(u,!0);Y(r),s((e,t)=>{B(a,e),B(f,t)},[()=>Z(`client.details.accepts`),()=>Z(`client.save`)]),V(c,()=>t(A),e=>S(A,e)),d(`click`,u,Fe),e(n,r)};r(h,e=>{t(m).approvedAt&&e(g)}),s(e=>B(f,e),[()=>Z(`client.details.hint`)]),e(n,a)},$$slots:{default:!0}})}};r(p,e=>{t(pe)||e(h)}),e(n,i)},Ke=n=>{var o=Ao(),c=u(o);{let e=J(()=>Z(`client.consents`));Q(c,{get title(){return t(e)},children:(e,n)=>{Er(e,{get api(){return i.api},get feedback(){return p},get rows(){return t(m).consents},onchange:Ce,showActor:!0})},$$slots:{default:!0}})}var d=l(c,2);{let e=J(()=>Z(`client.tokens`));Q(d,{get title(){return t(e)},children:(e,n)=>{oi(e,{get api(){return i.api},get feedback(){return p},get rows(){return t(m).tokens},onchange:Ce,showActor:!0})},$$slots:{default:!0}})}var f=l(d,2);{let n=n=>{{let r=J(()=>`/activity?client=${t(m).clientId}`);yt(n,{get to(){return t(r)},class:`btn btn-ghost btn-sm`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`client.activity.all`)]),e(t,r)},$$slots:{default:!0}})}},r=J(()=>Z(`client.activity.title`));Q(f,{get title(){return t(r)},actions:n,children:(e,n)=>{{let n=J(()=>Z(`client.activity.empty`));zr(e,{get events(){return t(m).events},get empty(){return t(n)}})}},$$slots:{actions:!0,default:!0}})}var h=l(f,2),g=e=>{fo(e,{get api(){return i.api},get rows(){return t(m).namespaces},onreleased:Ce})};r(h,e=>{t(m).namespaces.length&&e(g)});var _=l(h,2),v=e=>{Qa(e,{get api(){return i.api},get rows(){return t(m).enrolled},onrevoked:Ce})};r(_,e=>{(t(m).namespaces.length||t(m).enrolled.length)&&e(v)}),e(n,o)},qe=n=>{var i=To(),c=u(i);{let n=J(()=>Z(`client.registration.title`));Q(c,{row:!0,get title(){return t(n)},children:(n,i)=>{var a=zo(),c=u(a);{let e=J(()=>Z(`client.registration.name`));$(c,{get label(){return t(e)},onsave:()=>Te({name:t(x)},Z(`client.notices.renamed`)),get value(){return t(x)},set value(e){S(x,e,!0)}})}var f=l(c,2);qi(f,{get rows(){return t(me)}});var p=l(f,2),h=t=>{var n=jo(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`client.registration.saml`)]),e(t,n)},g=t=>{var n=jo(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`client.registration.public`)]),e(t,n)},_=n=>{var r=No(),i=o(r),a=G(i,!0),c=l(i,2);X(c,21,()=>Le,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=Mo(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(c);var u;I(c),Y(r),s(e=>{B(a,e),u!==(u=t(ee))&&(c.value=(c.__value=u)??``,T(c,u))},[()=>Z(`client.registration.authenticates`)]),d(`change`,c,e=>Re(e.currentTarget.value)),e(n,r)};r(p,e=>{t(pe)?e(h):t(m).tokenEndpointAuthMethod===`none`?e(g,1):e(_,-1)});var v=l(p,2),y=t=>{var n=Po(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`client.registration.needs_keys`)]),e(t,n)};r(v,e=>{t(ee)===`private_key_jwt`&&!t(xe)&&e(y)});var b=l(v,2),C=n=>{var i=Fo(),a=u(i),c=o(a),f=G(c,!0),p=l(c,2);X(p,21,()=>he,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=Mo(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(p);var h;I(p),Y(a);var g=l(a,2),_=e=>{{let n=J(()=>Z(`client.registration.sector`)),r=J(()=>Z(`client.registration.sector_placeholder`));$(e,{get label(){return t(n)},get placeholder(){return t(r)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Te({sectorIdentifierUri:t(te).trim()||null},t(te).trim()?Z(`client.notices.saved`):Z(`client.notices.cleared`)),get value(){return t(te)},set value(e){S(te,e,!0)}})}};r(g,e=>{(t(m).subjectType===`pairwise`||t(m).sectorIdentifierUri)&&e(_)});var v=l(g,2);X(v,17,()=>ge,([e,t])=>e,(e,n)=>{var r=J(()=>re(t(n),2));let i=()=>t(r)[0],a=()=>t(r)[1];{let n=J(()=>t(m).grantTypes.includes(i()));fa(e,{get checked(){return t(n)},get label(){return a()},onchange:e=>Te({grantTypes:Ae(i(),e)},Z(`client.notices.grants`))})}}),s(e=>{B(f,e),h!==(h=t(m).subjectType)&&(p.value=(p.__value=h)??``,T(p,h))},[()=>Z(`client.registration.knows_as`)]),d(`change`,p,e=>Me(e.currentTarget.value)),e(n,i)};r(b,e=>{t(pe)||e(C)});var w=l(b,2),E=e=>{{let n=J(()=>Z(`client.registration.unattended`));fa(e,{get checked(){return t(ke)},get label(){return t(n)},onchange:je})}};r(w,e=>{t(m).approvedAt&&t(m).tokenEndpointAuthMethod!==`none`&&e(E)});var D=l(w,2),O=o(D),k=n=>{var i=Lo(),a=u(i),o=G(a,!0),c=l(a,2),f=n=>{var r=Io(),i=G(r,!0);s(e=>{ce(r,1,`self-center text-sm ${t(de)?`text-error`:`opacity-70`}`),B(i,e)},[()=>Z(t(de)?`client.registration.secret_expired`:`client.registration.secret_expires`,{day:zt(t(m).secretExpiresAt)})]),e(n,r)};r(c,e=>{t(m).secretExpiresAt&&e(f)}),s(e=>B(o,e),[()=>Z(`client.registration.rotate`)]),d(`click`,a,Be),e(n,i)},A=J(()=>t(m).tokenEndpointAuthMethod.startsWith(`client_secret`));r(O,e=>{t(A)&&e(k)});var j=l(O,2),M=t=>{var n=Ro(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`client.registration.archive`)]),d(`click`,n,Ve),e(t,n)};r(j,e=>{t(m).archivedAt||e(M)}),Y(D),e(n,a)},$$slots:{default:!0}})}var f=l(c,2),p=n=>{{let r=J(()=>Z(`client.saml.title`));Q(n,{row:!0,get title(){return t(r)},children:(n,r)=>{var i=Bo(),a=u(i);{let e=J(()=>Z(`client.saml.entity_id`));$(a,{get label(){return t(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Te({samlEntityId:t(ae).trim()},Z(`client.notices.entity_id`)),get value(){return t(ae)},set value(e){S(ae,e,!0)}})}var c=l(a,2),f=o(c);{let e=J(()=>Z(`client.saml.slo_url`));$(f,{get label(){return t(e)},placeholder:`https://wiki.example.com/saml/slo`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Te({samlSloUrl:t(q).trim()||null},t(q).trim()?Z(`client.notices.saved`):Z(`client.notices.cleared`)),get value(){return t(q)},set value(e){S(q,e,!0)}})}var p=l(f,2),h=G(p,!0);Y(c);var g=l(c,2);{let e=J(()=>[{term:Z(`client.saml.metadata`),value:t(ne),mono:!0},{term:Z(`client.saml.initiate`),value:t(m).samlIdpInitiated?`/saml/initiate/${t(m).clientId}`:null,mono:!0}]);qi(g,{get rows(){return t(e)}})}var _=l(g,2),v=o(_),y=G(v,!0),b=l(v,2);X(b,21,()=>fe,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=Mo(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(b);var x;I(b),Y(_);var C=l(_,2),w=o(C),E=G(w,!0),D=l(w,2);ie(D);var O=l(D,2),k=G(O,!0);Y(C);var A=l(C,2),j=o(A),M=G(j,!0),N=l(j,2);ie(N),P(N,`placeholder`,`email = email
|
|
295
|
+
name = name
|
|
296
|
+
given_name = given_name
|
|
297
|
+
family_name = family_name
|
|
298
|
+
preferred_username = preferred_username`);var F=l(N,2),L=G(F,!0),R=l(F,2),ee=G(R,!0);Y(A);var z=l(A,2);{let e=J(()=>Z(`client.saml.requests_signed`));fa(z,{get checked(){return t(m).samlRequestsSigned},get label(){return t(e)},onchange:e=>Te({samlRequestsSigned:e},Z(e?`client.notices.signed_refused`:`client.notices.signed_read`))})}var H=l(z,2);{let e=J(()=>Z(`client.saml.idp_initiated`));fa(H,{get checked(){return t(m).samlIdpInitiated},get label(){return t(e)},onchange:e=>Te({samlIdpInitiated:e},Z(e?`client.notices.idp_initiated_on`:`client.notices.idp_initiated_off`))})}s((e,n,r,i,a,o,s)=>{B(h,e),B(y,n),x!==(x=t(m).samlNameIdFormat??fe[0][0])&&(b.value=(b.__value=x)??``,T(b,x)),B(E,r),B(k,i),B(M,a),B(L,o),B(ee,s)},[()=>Z(`client.saml.slo_url_hint`),()=>Z(`client.saml.names_by`),()=>Z(`client.saml.certificate`),()=>Z(`client.save`),()=>Z(`client.saml.attributes`),()=>Z(`client.saml.attributes_hint`),()=>Z(`client.save`)]),d(`change`,b,e=>Te({samlNameIdFormat:e.currentTarget.value},Z(`client.notices.saved`))),V(D,()=>t(K),e=>S(K,e)),d(`click`,O,()=>Te({samlCertificate:t(K).trim()},t(K).trim()?Z(`client.notices.certificate_saved`):Z(`client.notices.certificate_removed`))),V(N,()=>t(se),e=>S(se,e)),d(`click`,R,Ie),e(n,i)},$$slots:{default:!0}})}};r(f,e=>{t(pe)&&e(p)});var h=l(f,2);{let n=J(()=>Z(`client.shown.title`));Q(h,{row:!0,get title(){return t(n)},children:(n,i)=>{var c=Vo(),d=u(c),f=o(d);oa(f,{get client(){return t(m)},class:`size-14 rounded-lg border border-base-300 text-xl`});var p=l(f,2),h=o(p),g=t=>{var n=a();s(e=>B(n,e),[()=>Z(`client.shown.unapproved`)]),e(t,n)},v=t=>{var n=a();s(e=>B(n,e),[()=>Z(`client.shown.approved`)]),e(t,n)};r(h,e=>{t(m).approvedAt?e(v,-1):e(g)}),Y(p),Y(d);var y=l(d,2),b=o(y);X(b,17,()=>_e,([e,t,n])=>e,(e,n)=>{var r=J(()=>re(t(n),3));let i=()=>t(r)[0],a=()=>t(r)[1],o=()=>t(r)[2];$(e,{get label(){return a()},get placeholder(){return o()},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return t(oe)[i()]},set value(e){t(oe)[i()]=e}})});var x=l(b,2),S=G(x,!0);Y(y),s(e=>B(S,e),[()=>Z(`client.save`)]),_(`submit`,y,e=>{e.preventDefault(),ve()}),e(n,c)},$$slots:{default:!0}})}var g=l(h,2);{let n=J(()=>Z(`client.sign_in.title`));Q(g,{row:!0,get title(){return t(n)},children:(n,i)=>{var a=Go(),c=u(a),f=o(c),p=G(f,!0),h=l(f,2),g=o(h),v=G(g,!0);g.value=g.__value=``;var x=l(g);X(x,17,()=>t(y),e=>e.key,(n,r)=>{var i=Mo(),a=G(i,!0),o={};s(()=>{B(a,t(r).name),o!==(o=t(r).key)&&(i.value=(i.__value=o)??``)}),e(n,i)}),Y(h);var C;I(h),Y(c);var w=l(c,2),D=n=>{var r=Po(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`client.sign_in.archived`,{name:t(m).signInPolicy.name,fallback:t(b)?.name})]),e(n,r)},O=n=>{var i=z(),a=u(i),c=n=>{var r=Uo(),i=o(r),a=G(i,!0),c=l(i,2);X(c,21,()=>t(be),({term:e,value:t,instead:n})=>e,(n,r)=>{let i=()=>t(r).term,a=()=>t(r).value,c=()=>t(r).instead;var d=Ho(),f=u(d),p=G(f,!0),m=l(f,2),h=o(m),g=l(h),_=G(g,!0);Y(m),s(()=>{B(p,i()),B(h,`${a()??``} `),B(_,c())}),e(n,d)}),Y(c),Y(r),s(e=>B(a,e),[()=>Z(`client.sign_in.differs`,{name:t(b)?.name})]),e(n,r)},d=n=>{var r=jo(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`client.sign_in.same`,{name:t(b)?.name})]),e(n,r)};r(a,e=>{t(be).length?e(c):e(d,-1)}),e(n,i)};r(w,e=>{t(m).signInPolicy?.archivedAt?e(D):t(m).signInPolicy&&e(O,1)});var k=l(w,2),A=n=>{var r=Wo(),i=u(r);{let e=J(()=>Z(`client.sign_in.par`));fa(i,{get checked(){return t(m).requirePushedAuthorizationRequests},get label(){return t(e)},onchange:e=>Te({requirePushedAuthorizationRequests:e},Z(e?`client.notices.par_on`:`client.notices.par_off`))})}var a=l(i,2);{let e=J(()=>Z(`client.sign_in.dpop`));fa(a,{get checked(){return t(m).dpopBoundAccessTokens},get label(){return t(e)},onchange:e=>Te({dpopBoundAccessTokens:e},Z(e?`client.notices.dpop_on`:`client.notices.dpop_off`))})}e(n,r)};r(k,e=>{t(pe)||e(A)});var j=l(k,2);{let e=J(()=>Z(`client.sign_in.app_passwords`));fa(j,{get checked(){return t(m).appPasswords},get label(){return t(e)},onchange:e=>Te({appPasswords:e},Z(e?`client.notices.app_passwords_on`:`client.notices.app_passwords_off`))})}var P=l(j,2),R=G(P,!0),ee=l(P,2),V=e=>{{let n=J(()=>Z(`client.sign_in.consent`));fa(e,{get checked(){return t(m).consentRequired},get label(){return t(n)},onchange:e=>Te({consentRequired:e},Z(e?`client.notices.consent_on`:`client.notices.consent_off`))})}};r(ee,e=>{t(m).approvedAt&&e(V)});var H=l(ee,2),te=o(H),ne=o(te);{let e=J(()=>Z(`client.sign_in.access`));$(ne,{get label(){return t(e)},type:`number`,min:`1`,max:`1440`,get value(){return t(N)},set value(e){S(N,e,!0)}})}var U=l(ne,2);{let e=J(()=>Z(`client.sign_in.refresh`));$(U,{get label(){return t(e)},type:`number`,min:`1`,max:`400`,get value(){return t(F)},set value(e){S(F,e,!0)}})}var W=l(U,2);{let e=J(()=>Z(`client.sign_in.refresh_absolute`));$(W,{get label(){return t(e)},type:`number`,min:`1`,max:`400`,get value(){return t(L)},set value(e){S(L,e,!0)}})}var re=l(W,2);{let e=J(()=>Z(`client.sign_in.consent_lifetime`));$(re,{get label(){return t(e)},type:`number`,min:`1`,max:`400`,get value(){return t(M)},set value(e){S(M,e,!0)}})}Y(te);var ie=l(te,2),K=G(ie,!0);Y(H);var ae=l(H,2);{let e=J(()=>Z(`client.sign_in.logout`));$(ae,{get label(){return t(e)},placeholder:`https://app.example.com/logout`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Te({backchannelLogoutUri:t(E).trim()||null},t(E).trim()?Z(`client.notices.saved`):Z(`client.notices.cleared`)),get value(){return t(E)},set value(e){S(E,e,!0)}})}var q=l(ae,2),oe=e=>{{let n=J(()=>Z(`client.sign_in.logout_session`));fa(e,{get checked(){return t(m).backchannelLogoutSessionRequired},get label(){return t(n)},onchange:e=>Te({backchannelLogoutSessionRequired:e},Z(`client.notices.saved`))})}};r(q,e=>{t(m).backchannelLogoutUri&&e(oe)}),s((e,n,r,i)=>{B(p,e),B(v,n),C!==(C=t(m).signInPolicy?.key??``)&&(h.value=(h.__value=C)??``,T(h,C)),B(R,r),B(K,i)},[()=>Z(`client.sign_in.policy`),()=>Z(`client.sign_in.default`,{name:t(b)?.name??Z(`client.sign_in.built_in`)}),()=>Z(`client.sign_in.app_passwords_help`),()=>Z(`client.save`)]),d(`change`,h,e=>Te({signInPolicy:e.currentTarget.value},Z(`client.notices.policy`))),_(`submit`,H,e=>{e.preventDefault(),ye()}),e(n,a)},$$slots:{default:!0}})}e(n,i)};r(Ue,e=>{c()===`access`?e(We):c()===`endpoints`?e(Ge,1):c()===`usage`?e(Ke,2):e(qe,-1)}),Y(He),e(n,C)},$$slots:{default:!0}})}};r(Ue,e=>{t(le)&&!t(m)?e(We):t(m)?e(Ke,-1):e(Ge,1)}),e(n,He),D()}c([`click`,`change`]);var Jo=f(`<span class="badge badge-warning badge-xs"> </span>`),Yo=f(`<span class="flex flex-wrap items-center gap-2"><!> <!></span> <span class="font-mono text-xs opacity-75"> </span> <!>`,1);function Xo(n,i){U(i,!0);var c=Yo(),d=u(c),f=o(d);{let n=J(()=>`/organizations/${i.organization.key}`);yt(f,{get to(){return t(n)},class:`link link-hover font-medium`,children:(t,n)=>{H();var r=a();s(()=>B(r,i.organization.name)),e(t,r)},$$slots:{default:!0}})}var p=l(f,2),m=t=>{var n=Jo(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`organization_cell.no_owner`)]),e(t,n)};r(p,e=>{i.organization.ownerCount===0&&e(m)}),Y(d);var h=l(d,2),g=G(h,!0),_=l(h,2);v(_,()=>i.children??F),s(()=>B(g,i.organization.key)),e(n,c),D()}var Zo=f(`<span class="text-xs opacity-75"> </span>`),Qo=f(`<span><span> </span> <!></span>`);function $o(t,n){U(n,!0);let i=R(n,`class`,3,`flex flex-col`);var a=Qo(),c=o(a),u=G(c,!0),d=l(c,2),f=t=>{var r=Zo(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`organization_headcount.invited`,{count:n.organization.pendingCount})]),e(t,r)};r(d,e=>{n.organization.pendingCount&&e(f)}),Y(a),s(e=>{ce(a,1,O(i())),B(u,e)},[()=>Z(`organization_headcount.members`,{count:n.organization.memberCount})]),e(t,a),D()}var es=f(`<button type="button" class="btn btn-primary btn-sm"> </button>`),ts=f(`<div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <p class="hint"> <span class="font-mono"> </span> </p> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),ns=f(`<span class="text-xs opacity-85 md:hidden"> </span>`),rs=f(`<span class="badge badge-ghost badge-sm"> </span>`),is=f(`<td><div class="flex min-w-0 flex-col gap-0.5"><!></div></td> <td class="hidden text-sm md:table-cell"><!></td> <td class="hidden md:table-cell"><div class="flex max-w-64 flex-wrap gap-1"></div></td> <td class="hidden text-sm md:table-cell"><span> </span></td>`,1),as=f(`<div class="flex flex-wrap items-center justify-between gap-2"><div class="flex min-w-0 flex-col"><!> <span class="hint"><span class="font-mono"> </span> </span></div> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`),os=f(`<!> <!>`,1),ss=f(`<!> <!> <!>`,1);function cs(n,i){U(i,!0);let c=mt(),f=At(),p=[Z(`organizations.columns.organization`),{label:Z(`organizations.columns.members`),hide:!0},{label:Z(`organizations.columns.roles`),hide:!0},{label:Z(`organizations.columns.signs_in`),hide:!0}],m=w(null),h=w(!0),g=w(!1),_=w(null),v=w(!1);async function y(){S(h,!0);let e=await f.attempt(()=>i.api.query(`
|
|
299
|
+
query Organizations {
|
|
300
|
+
active: organizations {
|
|
301
|
+
key name roles memberCount ownerCount pendingCount
|
|
302
|
+
signInPolicy { name }
|
|
303
|
+
providers { name }
|
|
304
|
+
}
|
|
305
|
+
archived: organizations(archived: true) { key name memberCount archivedAt }
|
|
306
|
+
}
|
|
307
|
+
`));S(h,!1),e&&S(m,e,!0)}y();let b=e=>e.toLowerCase().normalize(`NFKD`).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);function x(){S(_,{key:``,name:``},!0),S(v,!1),f.clear()}function C(e){t(_).name=e,t(v)||(t(_).key=b(e))}async function T(){S(g,!0);let e=await f.attempt(()=>i.api.query(`mutation Create($key: ID!, $name: String!) {
|
|
308
|
+
createOrganization(key: $key, name: $name) { organization { key } }
|
|
309
|
+
}`,{key:t(_).key.trim(),name:t(_).name.trim()}));S(g,!1),e&&c.go(`/organizations/${e.createOrganization.organization.key}`)}async function E(e){await f.attempt(()=>i.api.query(`mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`,{key:e.key}),Z(`organizations.restored`,{name:e.name}))&&await y()}function O(e){let t=Z(`organizations.members`,{count:e.memberCount});return e.pendingCount?Z(`organizations.members_invited`,{members:t,count:e.pendingCount}):t}function k(e){return[e.signInPolicy?.name,...e.providers.map(e=>e.name)].filter(Boolean).join(`, `)}{let i=t=>{var n=es(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`organizations.add`)]),d(`click`,n,x),e(t,n)},c=J(()=>Z(`organizations.title`)),y=J(()=>Z(`organizations.lede`));Kn(n,{get title(){return t(c)},get lede(){return t(y)},actions:i,children:(n,i)=>{var c=ss(),y=u(c);Bn(y,{get feedback(){return f.state}});var b=l(y,2),x=n=>{{let r=J(()=>Z(`organizations.add`)),i=J(()=>Z(`organizations.add_lede`));Q(n,{get title(){return t(r)},get lede(){return t(i)},children:(n,r)=>{var i=ts(),a=u(i),c=o(a);{let e=J(()=>Z(`organizations.name`));$(c,{get label(){return t(e)},get value(){return t(_).name},oninput:e=>C(e.currentTarget.value),placeholder:`Acme`})}var f=l(c,2);{let e=J(()=>Z(`organizations.key`));$(f,{get label(){return t(e)},oninput:()=>S(v,!0),placeholder:`acme`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return t(_).key},set value(e){t(_).key=e}})}Y(a);var p=l(a,2),m=o(p),h=l(m),y=G(h),b=l(h,1,!0);Y(p);var x=l(p,2),w=o(x),E=G(w,!0),D=l(w,2),O=G(D,!0);Y(x),s((e,t,n,r,i,a)=>{B(m,`${e??``} `),B(y,`organization=${t??``}`),B(b,n),w.disabled=r,B(E,i),B(O,a)},[()=>Z(`organizations.key_hint`),()=>t(_).key||Z(`organizations.key_word`),()=>Z(`organizations.key_hint_end`),()=>t(g)||!t(_).key.trim()||!t(_).name.trim(),()=>t(g)?Z(`organizations.adding`):Z(`organizations.add`),()=>Z(`organizations.cancel`)]),d(`click`,w,T),d(`click`,D,()=>S(_,null)),e(n,i)},$$slots:{default:!0}})}};r(b,e=>{t(_)&&e(x)});var w=l(b,2),D=e=>{xt(e,{})},A=n=>{var i=os(),c=u(i);{let n=n=>{var r=z(),i=u(r);X(i,17,()=>t(m).active,e=>e.key,(n,r)=>{{let i=J(()=>`/organizations/${t(r).key}`);Zt(n,{get to(){return t(i)},children:(n,i)=>{var a=is(),c=u(a),d=o(c);Xo(o(d),{get organization(){return t(r)},children:(n,i)=>{var a=ns(),o=G(a,!0);s(e=>B(o,e),[()=>O(t(r))]),e(n,a)},$$slots:{default:!0}}),Y(d),Y(c);var f=l(c,2);$o(o(f),{get organization(){return t(r)}}),Y(f);var p=l(f,2),m=o(p);X(m,20,()=>t(r).roles,e=>e,(t,n)=>{var r=rs(),i=G(r,!0);s(()=>B(i,n)),e(t,r)}),Y(m),Y(p);var h=l(p,2),g=o(h);let _;var v=G(g,!0);Y(h),s((e,t)=>{_=ce(g,1,``,null,_,{"opacity-60":e}),B(v,t)},[()=>!k(t(r)),()=>k(t(r))||Z(`organizations.tenant_policy`)]),e(n,a)},$$slots:{default:!0}})}}),e(n,r)},r=J(()=>Z(`organizations.empty`));nn(c,{get columns(){return p},get count(){return t(m).active.length},get empty(){return t(r)},rows:n,$$slots:{rows:!0}})}var f=l(c,2),h=n=>{{let r=J(()=>Z(`organizations.archived.title`)),i=J(()=>Z(`organizations.archived.lede`));Q(n,{get title(){return t(r)},get lede(){return t(i)},children:(n,r)=>{var i=z(),c=u(i);X(c,17,()=>t(m).archived,e=>e.key,(n,r)=>{var i=as(),c=o(i),u=o(c);{let n=J(()=>`/organizations/${t(r).key}`);yt(u,{get to(){return t(n)},class:`link link-hover text-sm font-medium`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).name)),e(n,o)},$$slots:{default:!0}})}var f=l(u,2),p=o(f),m=G(p,!0),h=l(p);Y(f),Y(c);var g=l(c,2),_=G(g,!0);Y(i),s((e,n)=>{B(m,t(r).key),B(h,` ${e??``}`),B(_,n)},[()=>Z(`organizations.archived.detail`,{day:zt(t(r).archivedAt),members:Z(`organizations.members`,{count:t(r).memberCount})}),()=>Z(`organizations.restore`)]),d(`click`,g,()=>E(t(r))),e(n,i)}),e(n,i)},$$slots:{default:!0}})}};r(f,e=>{t(m).archived.length&&e(h)}),e(n,i)};r(w,e=>{t(h)&&!t(m)?e(D):t(m)&&e(A,1)}),e(n,c)},$$slots:{actions:!0,default:!0}})}D()}c([`click`]);var ls=f(`<span class="tally-figure"> </span> <span class="tally-label"> </span>`,1),us=f(`<div class="tally-cell"><span class="tally-figure"> </span> <span class="tally-label"> </span></div>`),ds=f(`<div class="tally"></div>`);function fs(n,i){var a=ds();X(a,21,()=>i.counts,e=>e.label,(n,i)=>{var a=z(),c=u(a),d=n=>{yt(n,{get to(){return t(i).to},class:`tally-cell`,children:(n,r)=>{var a=ls(),o=u(a),c=G(o,!0),d=l(o,2),f=G(d,!0);s(()=>{B(c,t(i).value),B(f,t(i).label)}),e(n,a)},$$slots:{default:!0}})},f=n=>{var r=us(),a=o(r),c=G(a,!0),u=l(a,2),d=G(u,!0);Y(r),s(()=>{B(c,t(i).value),B(d,t(i).label)}),e(n,r)};r(c,e=>{t(i).to?e(d):e(f,-1)}),e(n,a)}),Y(a),e(n,a)}var ps=f(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),ms=f(`<!> <button type="button" class="btn btn-ghost btn-sm btn-error"> </button>`,1),hs=f(`<p class="hint"> <!></p>`),gs=f(`<div class="alert alert-warning alert-soft flex flex-wrap items-center justify-between gap-3" role="status"><span> </span> <button type="button" class="btn btn-sm"> </button></div>`),_s=f(`<div class="alert alert-warning alert-soft" role="status"> </div>`),vs=f(`<div class="alert alert-info alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <code class="font-mono text-xs break-all"> </code></div>`),ys=f(`<div class="flex flex-wrap items-center justify-between gap-2 sheet p-3"><div class="flex min-w-0 flex-col"><span class="font-medium"> </span> <span class="hint"> </span></div> <div class="flex gap-2"><button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div>`),bs=f(`<p class="hint"> </p>`),xs=f(`<div class="flex flex-col gap-3 sheet p-3"><span class="font-medium"> </span> <div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea w-full font-mono" rows="3" placeholder="Acme Admins = owner"></textarea> <p class="hint"> </p></label> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div>`),Ss=f(`<div class="flex flex-col gap-2"><!> <!></div> <!>`,1),Cs=f(`<div class="flex flex-wrap items-center justify-between gap-2"><span class="font-mono text-sm break-all"> </span> <span class="hint"> </span></div>`),ws=f(`<div class="flex flex-col gap-2"></div>`),Ts=f(`<div class="flex flex-col gap-2"><p class="hint"> <!></p></div>`),Es=f(`<!> <!> <!> <!>`,1),Ds=f(`<button type="button" class="-mr-1 cursor-pointer px-1 opacity-70 hover:opacity-100 disabled:cursor-not-allowed disabled:opacity-30">×</button>`),Os=f(`<span><span class="font-medium"> </span> <span class="opacity-70"> </span> <!></span>`),ks=f(`<div class="flex flex-wrap gap-2"></div> <!> <p class="hint"> </p>`,1),As=f(`<!> <!>`,1),js=f(`<button type="button" class="btn btn-sm btn-error btn-outline self-start"> </button>`),Ms=f(`<button type="button"> </button>`),Ns=f(`<button type="button" class="btn btn-primary btn-sm"> </button>`),Ps=f(`<div class="range" role="group"></div> <!>`,1),Fs=f(`<div class="grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem_auto] sm:items-end"><!> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div> <p class="hint"> </p>`,1),Is=f(`<span class="badge badge-sm badge-error badge-soft"> </span>`),Ls=f(`<span class="badge badge-sm badge-warning badge-soft"> </span>`),Rs=f(`<span class="badge badge-sm badge-ghost"> </span>`),zs=f(`<tr><td class="w-full min-w-0"><div class="flex min-w-0 flex-col gap-0.5"><span class="flex flex-wrap items-center gap-2"><!> <!> <!></span> <span class="hint"> </span> <div class="mt-2 flex flex-wrap items-center gap-2 md:hidden"><div class="min-w-28 flex-1 basis-28"><!></div> <div class="-me-3 flex shrink-0"><!></div></div></div></td><td class="hidden w-44 min-w-44 md:table-cell"><!></td><td class="hidden text-right whitespace-nowrap md:table-cell"><!></td></tr>`),Bs=f(`<!> <!> <!> <!> <!> <div class="grid gap-4"><!></div>`,1);function Vs(n,i){U(i,!0);let c=(e,n=F)=>{{let r=J(()=>Z(`organization.members.role_of`,{name:K(n())})),i=J(()=>t(E)||ae(n())||!!t(_).archivedAt);ua(e,{get value(){return n().role},get options(){return t(I)},get name(){return t(r)},get disabled(){return t(i)},onchange:e=>ue(n(),e)})}},f=(n,i=F)=>{var a=ms(),o=u(a),c=n=>{var r=ps(),a=G(r,!0);s((e,t)=>{r.disabled=e,B(a,t)},[()=>t(E)||!!t(_).archivedAt,()=>Z(`organization.members.send_again`)]),d(`click`,r,()=>fe(i())),e(n,r)};r(o,e=>{i().pending&&e(c)});var f=l(o,2),p=G(f,!0);s((e,t,n)=>{f.disabled=e,P(f,`title`,t),B(p,n)},[()=>t(E)||ae(i()),()=>ae(i())?Z(`organization.members.owner_first`):null,()=>i().pending?Z(`organization.members.withdraw`):Z(`organization.members.remove`)]),d(`click`,f,()=>de(i())),e(n,a)},p=R(i,`part`,3,null);mt();let m=At(),h=[`owner`,`member`],g=[[`all`,Z(`organization.lenses.all`)],[`owners`,Z(`organization.lenses.owners`)],[`invited`,Z(`organization.lenses.invited`)]],_=w(null),v=w(C([])),y=w(C([])),b=()=>({provider:``,roleClaim:``,roleMap:``,unmappedRole:``}),x=w(C(b())),T=w(!0),E=w(!1),O=w(null),k=w(`all`),A=w(``),j=w(``),M=w(null);async function N(){S(T,!0);let e=await m.attempt(()=>i.api.query(`
|
|
310
|
+
query Organization($key: ID!) {
|
|
311
|
+
organization(key: $key) {
|
|
312
|
+
uuid key name roles archivedAt createdAt
|
|
313
|
+
memberCount ownerCount pendingCount liveTokenCount
|
|
314
|
+
signInPolicy { key }
|
|
315
|
+
providers { key name roleClaim roleMap unmappedRole }
|
|
316
|
+
domains { domain verifiedAt provider { name } }
|
|
317
|
+
provisioningTokens { id }
|
|
318
|
+
members {
|
|
319
|
+
role pending provisioned invitedAs invitedAt expiresAt expired createdAt
|
|
320
|
+
invitedBy { identifier }
|
|
321
|
+
actor { uuid identifier }
|
|
322
|
+
}
|
|
323
|
+
events {
|
|
324
|
+
id action label createdAt ipAddress details
|
|
325
|
+
actor { uuid identifier } by { uuid identifier } client { clientId name } device { id label }
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
signInPolicies { key name }
|
|
329
|
+
providers { key name organization { key } }
|
|
330
|
+
}
|
|
331
|
+
`,{key:i.organizationKey}));S(T,!1),e&&(S(_,e.organization,!0),S(v,e.signInPolicies,!0),S(y,e.providers,!0),t(_)&&S(A,t(_).name,!0))}N();let I=J(()=>(t(_)?.roles??[]).map(e=>[e,e])),L=J(()=>Object.fromEntries((t(_)?.roles??[]).map(e=>[e,t(_).members.filter(t=>t.role===e).length]))),ee=J(()=>(t(_)?.members??[]).filter(e=>t(k)===`owners`?e.role===`owner`&&!e.pending:t(k)!==`invited`||e.pending).toSorted((e,t)=>Number(e.pending)-Number(t.pending)||Number(t.role===`owner`)-Number(e.role===`owner`)||K(e).localeCompare(K(t)))),te=(e,n)=>t(_).liveTokenCount?Z(n,{organization:t(_).name,count:t(_).liveTokenCount}):Z(e,{organization:t(_).name}),ne=J(()=>t(_)?[{label:Z(`organization.counts.members`,{count:t(_).memberCount}),value:t(_).memberCount},{label:Z(`organization.counts.owners`,{count:t(_).ownerCount}),value:t(_).ownerCount},{label:Z(`organization.counts.invitations`),value:t(_).pendingCount},{label:Z(`organization.counts.live_tokens`),value:t(_).liveTokenCount}]:[]),W=J(()=>t(_)?[{term:Z(`organization.facts.key`),value:t(_).key,mono:!0},{term:Z(`organization.facts.id`),value:t(_).uuid,mono:!0},{term:Z(`organization.facts.asked_for_with`),value:`organization=${t(_).key}`,mono:!0},{term:Z(`organization.facts.created`),value:zt(t(_).createdAt)}]:[]);function K(e){return e.pending?e.invitedAs??e.actor.identifier:e.actor.identifier}function ae(e){return e.role===`owner`&&!e.pending&&t(_).ownerCount===1}function q(e){return e.expired?Z(`organization.status.expired`,{when:Vt(e.expiresAt)}):e.pending?e.invitedBy?Z(`organization.status.invited_by`,{when:Vt(e.invitedAt),by:e.invitedBy.identifier}):Z(`organization.status.invited`,{when:Vt(e.invitedAt)}):Z(e.provisioned?`organization.status.from_directory`:`organization.status.since`,{day:zt(e.createdAt)})}async function oe(e,t,n){S(E,!0);let r=await m.attempt(()=>i.api.query(e,t),n);return S(E,!1),r&&await N(),r}function se(){S(O,{email:``,role:`member`},!0),S(M,null),m.clear()}async function le(){let e=t(O).email.trim();S(M,null);let n=await oe(`mutation Add($organization: ID!, $email: String!, $role: String!) {
|
|
332
|
+
addMember(organization: $organization, email: $email, role: $role) { delivered url }
|
|
333
|
+
}`,{organization:t(_).key,email:e,role:t(O).role},Z(`organization.notices.invited`,{email:e,role:t(O).role}));n&&(S(O,null),!n.addMember.delivered&&n.addMember.url&&S(M,n.addMember.url,!0))}function ue(e,n){oe(`mutation Role($organization: ID!, $uuid: ID!, $role: String!) {
|
|
334
|
+
setMemberRole(organization: $organization, uuid: $uuid, role: $role) { membership { role } }
|
|
335
|
+
}`,{organization:t(_).key,uuid:e.actor.uuid,role:n},Z(`organization.notices.role_set`,{name:K(e),role:n}))}function de(e){let n=e.pending?Z(`organization.questions.withdraw`,{name:K(e)}):Z(`organization.questions.remove`,{name:K(e),organization:t(_).name});confirm(n)&&oe(`mutation Remove($organization: ID!, $uuid: ID!) {
|
|
336
|
+
removeMember(organization: $organization, uuid: $uuid) { organization { key } }
|
|
337
|
+
}`,{organization:t(_).key,uuid:e.actor.uuid},e.pending?Z(`organization.notices.withdrawn`,{name:K(e)}):Z(`organization.notices.removed`,{name:K(e),organization:t(_).name}))}function fe(e){oe(`mutation Resend($organization: ID!, $uuid: ID!) {
|
|
338
|
+
resendOrganizationInvitation(organization: $organization, uuid: $uuid) { delivered }
|
|
339
|
+
}`,{organization:t(_).key,uuid:e.actor.uuid},Z(`organization.notices.resent`,{name:K(e)}))}function pe(e,n){return oe(`mutation Roles($key: ID!, $roles: [String!]) {
|
|
340
|
+
updateOrganization(key: $key, roles: $roles) { organization { key } }
|
|
341
|
+
}`,{key:t(_).key,roles:e},n)}let me=J(()=>(t(_)?.roles??[]).filter(e=>!h.includes(e)));async function he(){let e=t(j).trim().toLowerCase();e&&await pe([...t(me),e],Z(`organization.notices.role_added`,{organization:t(_).name,role:e}))&&S(j,``)}function ge(e){pe(t(me).filter(t=>t!==e),Z(`organization.notices.role_dropped`,{organization:t(_).name,role:e}))}function _e(){oe(`mutation Rename($key: ID!, $name: String) {
|
|
342
|
+
updateOrganization(key: $key, name: $name) { organization { key } }
|
|
343
|
+
}`,{key:t(_).key,name:t(A).trim()},Z(`organization.notices.saved`))}let ve=e=>Object.entries(e??{}).map(([e,t])=>`${e} = ${t}`).join(`
|
|
344
|
+
`),ye=e=>Object.fromEntries(e.split(`
|
|
345
|
+
`).map(e=>e.split(`=`)).filter(e=>e.length===2&&e[0].trim()&&e[1].trim()).map(([e,t])=>[e.trim(),t.trim()])),be=J(()=>t(y).filter(e=>!e.organization));function xe(e){let n=t(_).providers.find(t=>t.key===e);S(x,{provider:e,roleClaim:n?.roleClaim??``,roleMap:ve(n?.roleMap),unmappedRole:n?.unmappedRole??``},!0)}function Se(){oe(`mutation Hand($key: ID!, $organization: ID, $roleClaim: String, $roleMap: JSON, $unmappedRole: String) {
|
|
346
|
+
setProviderOrganization(key: $key, organization: $organization, roleClaim: $roleClaim, roleMap: $roleMap, unmappedRole: $unmappedRole) {
|
|
347
|
+
provider { key }
|
|
348
|
+
}
|
|
349
|
+
}`,{key:t(x).provider,organization:t(_).key,roleClaim:t(x).roleClaim.trim()||null,roleMap:ye(t(x).roleMap),unmappedRole:t(x).unmappedRole||null},Z(`organization.notices.provider_saved`)).then(e=>{e&&S(x,b(),!0)})}function Ce(e){confirm(Z(`organization.questions.hand_back`,{provider:e.name,organization:t(_).name}))&&oe(`mutation Back($key: ID!) { setProviderOrganization(key: $key, organization: null) { provider { key } } }`,{key:e.key},Z(`organization.notices.provider_back`,{provider:e.name}))}function we(e){oe(`mutation Policy($key: ID!, $policy: ID!) {
|
|
350
|
+
updateOrganization(key: $key, signInPolicy: $policy) { organization { key } }
|
|
351
|
+
}`,{key:t(_).key,policy:e},Z(`organization.notices.saved`))}async function Te(){confirm(te(`organization.questions.archive`,`organization.questions.archive_tokens`))&&await oe(`mutation Archive($key: ID!) { archiveOrganization(key: $key) { organization { key } } }`,{key:t(_).key},Z(`organization.notices.archived`,{organization:t(_).name}))}function Ee(){oe(`mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`,{key:t(_).key},Z(`organization.notices.restored`,{organization:t(_).name}))}{let C=J(()=>t(_)?.name??Z(`organization.title`)),w=J(()=>t(_)?.key),D=J(()=>({to:`/organizations`,label:Z(`organization.back`)})),N=J(()=>t(_)?t(_).archivedAt?Z(`organization.archived_lede`,{when:Vt(t(_).archivedAt)}):Z(`organization.lede`,{key:t(_).key}):null);Kn(n,{get title(){return t(C)},get id(){return t(w)},get back(){return t(D)},get lede(){return t(N)},children:(n,C)=>{var w=As(),D=u(w);Bn(D,{get feedback(){return m.state}});var N=l(D,2),F=e=>{xt(e,{})},R=t=>{var n=hs(),r=o(n);yt(l(r),{to:`/organizations`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`organization.all`)]),e(t,r)},$$slots:{default:!0}}),Y(n),s(e=>B(r,`${e??``} `),[()=>Z(`organization.missing`,{key:i.organizationKey})]),e(t,n)},U=n=>{var i=Bs(),m=u(i),C=n=>{var r=gs(),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0);Y(r),s((e,n)=>{B(a,e),c.disabled=t(E),B(u,n)},[()=>Z(`organization.archived_alert`,{day:zt(t(_).archivedAt)}),()=>Z(`organization.restore`)]),d(`click`,c,Ee),e(n,r)};r(m,e=>{t(_).archivedAt&&e(C)});var w=l(m,2),T=n=>{var r=_s(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`organization.ownerless`,{organization:t(_).name})]),e(n,r)};r(w,e=>{!t(_).archivedAt&&t(_).ownerCount===0&&e(T)});var D=l(w,2);fs(D,{get counts(){return t(ne)}});var N=l(D,2),F=n=>{var r=vs(),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0);Y(r),s(e=>{B(a,e),B(u,t(M))},[()=>Z(`organization.invitation_link`)]),e(n,r)};r(N,e=>{t(M)&&e(F)});var R=l(N,2);{let e=J(()=>`/organizations/${t(_).key}`),n=J(()=>Z(`organization.parts.label`)),r=J(()=>[[null,``,Z(`organization.parts.members`)],[`sign-in`,`/sign-in`,Z(`organization.parts.sign_in`)],[`roles`,`/roles`,Z(`organization.parts.roles`)],[`activity`,`/activity`,Z(`organization.parts.activity`)],[`general`,`/general`,Z(`organization.parts.general`)]]);ci(R,{get base(){return t(e)},get part(){return p()},get label(){return t(n)},get parts(){return t(r)}})}var U=l(R,2),oe=o(U),ue=n=>{var i=Es(),c=u(i);{let e=J(()=>Z(`organization.signing_in.policy`)),n=J(()=>Z(`organization.signing_in.lede`));Q(c,{row:!0,get title(){return t(e)},get lede(){return t(n)},children:(e,n)=>{{let n=J(()=>Z(`organization.signing_in.policy`)),r=J(()=>t(_).signInPolicy?.key??``),i=J(()=>[[``,Z(`organization.signing_in.inherited`)],...t(v).map(e=>[e.key,e.name])]);ua(e,{get name(){return t(n)},get value(){return t(r)},get options(){return t(i)},get disabled(){return t(E)},onchange:we})}},$$slots:{default:!0}})}var f=l(c,2);{let n=J(()=>Z(`organization.signing_in.providers`));Q(f,{row:!0,get title(){return t(n)},children:(n,i)=>{var a=Ss(),c=u(a),f=o(c);X(f,17,()=>t(_).providers,e=>e.key,(n,r)=>{var i=ys(),a=o(i),c=o(a),u=G(c,!0),f=l(c,2),p=G(f,!0);Y(a);var m=l(a,2),h=o(m),g=G(h,!0),_=l(h,2),v=G(_,!0);Y(m),Y(i),s((e,n,i)=>{B(u,t(r).name),B(p,e),h.disabled=t(E),B(g,n),_.disabled=t(E),B(v,i)},[()=>Z(`organization.signing_in.joins_as`,{mapping:Object.keys(t(r).roleMap).length?Object.entries(t(r).roleMap).map(([e,t])=>`${e} → ${t}`).join(`, `):Z(`organization.signing_in.no_groups_mapped`),role:t(r).unmappedRole??`member`}),()=>Z(`organization.signing_in.edit`),()=>Z(`organization.signing_in.hand_back`)]),d(`click`,h,()=>xe(t(r).key)),d(`click`,_,()=>Ce(t(r))),e(n,i)},t=>{var n=bs(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`organization.signing_in.no_providers`)]),e(t,n)});var p=l(f,2),m=e=>{{let n=J(()=>Z(`organization.signing_in.give_provider`)),r=J(()=>[[``,Z(`organization.signing_in.give_provider`)],...t(be).map(e=>[e.key,e.name])]);ua(e,{value:``,get name(){return t(n)},get options(){return t(r)},onchange:xe})}};r(p,e=>{t(be).length&&!t(x).provider&&e(m)}),Y(c);var h=l(c,2),g=n=>{var r=xs(),i=o(r),a=G(i,!0),c=l(i,2),u=o(c);{let e=J(()=>Z(`organization.signing_in.groups_claim`));$(u,{get label(){return t(e)},placeholder:`groups`,get value(){return t(x).roleClaim},set value(e){t(x).roleClaim=e}})}var f=l(u,2);{let e=J(()=>Z(`organization.signing_in.unmapped_role`)),n=J(()=>[[``,`member`],...t(I).filter(([e])=>e!==`member`)]);ua(f,{get label(){return t(e)},get value(){return t(x).unmappedRole},get options(){return t(n)},onchange:e=>t(x).unmappedRole=e})}Y(c);var p=l(c,2),m=o(p),h=G(m,!0),g=l(m,2);ie(g);var _=l(g,2),v=G(_,!0);Y(p);var C=l(p,2),w=o(C),T=G(w,!0),D=l(w,2),O=G(D,!0);Y(C),Y(r),s((e,n,r,i,o)=>{B(a,e),B(h,n),B(v,r),w.disabled=t(E),B(T,i),B(O,o)},[()=>t(y).find(e=>e.key===t(x).provider)?.name??t(x).provider,()=>Z(`organization.signing_in.role_map`),()=>Z(`organization.signing_in.role_map_hint`),()=>Z(`organization.signing_in.save`),()=>Z(`organization.signing_in.cancel`)]),V(g,()=>t(x).roleMap,e=>t(x).roleMap=e),d(`click`,w,Se),d(`click`,D,()=>S(x,b(),!0)),e(n,r)};r(h,e=>{t(x).provider&&e(g)}),e(n,a)},$$slots:{default:!0}})}var p=l(f,2);{let n=J(()=>Z(`organization.signing_in.domains`));Q(p,{row:!0,get title(){return t(n)},children:(n,r)=>{var i=ws();X(i,21,()=>t(_).domains,e=>e.domain,(n,r)=>{var i=Cs(),a=o(i),c=G(a,!0),u=l(a,2),d=G(u);Y(i),s(e=>{B(c,t(r).domain),B(d,`${e??``} · ${t(r).provider?.name??``}`)},[()=>t(r).verifiedAt?Z(`organization.signing_in.proven`,{day:zt(t(r).verifiedAt)}):Z(`organization.signing_in.waiting`)]),e(n,i)},t=>{var n=hs(),r=o(n);yt(l(r),{to:`/settings`,class:`link`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`organization.signing_in.domains_link`)]),e(t,r)},$$slots:{default:!0}}),Y(n),s(e=>B(r,`${e??``} `),[()=>Z(`organization.signing_in.no_domains`)]),e(t,n)}),Y(i),e(n,i)},$$slots:{default:!0}})}var m=l(p,2);{let n=J(()=>Z(`organization.signing_in.provisioning`));Q(m,{row:!0,get title(){return t(n)},children:(n,r)=>{var i=Ts(),c=o(i),u=o(c);yt(l(u),{to:`/directory`,class:`link`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`organization.signing_in.provisioning_link`)]),e(t,r)},$$slots:{default:!0}}),Y(c),Y(i),s(e=>B(u,`${e??``} `),[()=>t(_).provisioningTokens.length?Z(`organization.signing_in.tokens_reach`,{count:t(_).provisioningTokens.length}):Z(`organization.signing_in.no_tokens`)]),e(n,i)},$$slots:{default:!0}})}e(n,i)},de=n=>{{let i=J(()=>Z(`organization.roles.title`)),a=J(()=>Z(`organization.roles.lede`));Q(n,{row:!0,get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=ks(),c=u(a);X(c,20,()=>t(_).roles,e=>e,(n,i)=>{var a=Os(),c=o(a),u=G(c,!0),f=l(c,2),p=G(f,!0),m=l(f,2),g=n=>{var r=Ds();s((e,n)=>{P(r,`aria-label`,e),P(r,`title`,n),r.disabled=t(E)||t(L)[i]>0},[()=>Z(`organization.roles.stop_offering`,{role:i}),()=>t(L)[i]?Z(`organization.roles.held`,{count:t(L)[i]}):Z(`organization.roles.stop_offering`,{role:i})]),d(`click`,r,()=>ge(i)),e(n,r)},_=J(()=>!h.includes(i));r(m,e=>{t(_)&&e(g)}),Y(a),s(e=>{ce(a,1,`badge badge-lg gap-1.5 ${e??``}`),B(u,i),B(p,t(L)[i]??0)},[()=>h.includes(i)?`badge-ghost`:`badge-outline`]),e(n,a)}),Y(c);var f=l(c,2);{let e=J(()=>Z(`organization.roles.offer`)),n=J(()=>Z(`organization.roles.add`));$(f,{get label(){return t(e)},placeholder:`support`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:he,get save(){return t(n)},get value(){return t(j)},set value(e){S(j,e,!0)}})}var p=l(f,2),m=G(p,!0);s(e=>B(m,e),[()=>Z(`organization.roles.hint`)]),e(n,a)},$$slots:{default:!0}})}},fe=e=>{{let n=J(()=>Z(`organization.activity.lede`));Q(e,{get lede(){return t(n)},children:(e,n)=>{{let n=J(()=>Z(`organization.activity.empty`));zr(e,{get events(){return t(_).events},get empty(){return t(n)},limit:25,collapse:!0})}},$$slots:{default:!0}})}},pe=n=>{var i=As(),a=u(i);{let n=J(()=>Z(`organization.details.title`));Q(a,{row:!0,get title(){return t(n)},children:(n,r)=>{var i=As(),a=u(i);{let e=J(()=>Z(`organization.details.name`));$(a,{get label(){return t(e)},onsave:_e,get value(){return t(A)},set value(e){S(A,e,!0)}})}qi(l(a,2),{get rows(){return t(W)}}),e(n,i)},$$slots:{default:!0}})}var o=l(a,2),c=n=>{{let r=J(()=>Z(`organization.archive.title`)),i=J(()=>te(`organization.archive.lede`,`organization.archive.lede_tokens`));Q(n,{row:!0,get title(){return t(r)},get lede(){return t(i)},children:(n,r)=>{var i=js(),a=G(i,!0);s(e=>{i.disabled=t(E),B(a,e)},[()=>Z(`organization.archive.button`,{organization:t(_).name})]),d(`click`,i,Te),e(n,i)},$$slots:{default:!0}})}};r(o,e=>{t(_).archivedAt||e(c)}),e(n,i)},me=n=>{{let i=n=>{var i=Ps(),a=u(i);X(a,21,()=>g,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=Ms(),l=G(c,!0);s(()=>{P(c,`aria-pressed`,t(k)===a()),B(l,o())}),d(`click`,c,()=>S(k,a(),!0)),e(n,c)}),Y(a);var o=l(a,2),c=t=>{var n=Ns(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`organization.members.add`)]),d(`click`,n,se),e(t,n)};r(o,e=>{t(_).archivedAt||e(c)}),s(e=>P(a,`aria-label`,e),[()=>Z(`organization.members.who`)]),e(n,i)},p=J(()=>Z(`organization.members.title`)),m=J(()=>Z(`organization.members.lede`));Q(n,{get title(){return t(p)},get lede(){return t(m)},actions:i,children:(n,i)=>{var p=As(),m=u(p),h=n=>{var r=Fs(),i=u(r),a=o(i);{let e=J(()=>Z(`organization.members.email`));$(a,{get label(){return t(e)},type:`email`,placeholder:`person@example.com`,get value(){return t(O).email},set value(e){t(O).email=e}})}var c=l(a,2);{let e=J(()=>Z(`organization.members.role`));ua(c,{get label(){return t(e)},get value(){return t(O).role},get options(){return t(I)},onchange:e=>t(O).role=e})}var f=l(c,2),p=o(f),m=G(p,!0),h=l(p,2),g=G(h,!0);Y(f),Y(i);var _=l(i,2),v=G(_,!0);s((e,t,n,r)=>{p.disabled=e,B(m,t),B(g,n),B(v,r)},[()=>t(E)||!t(O).email.trim(),()=>Z(`organization.members.invite`),()=>Z(`organization.members.cancel`),()=>Z(`organization.members.hint`)]),d(`click`,p,le),d(`click`,h,()=>S(O,null)),e(n,r)};r(m,e=>{t(O)&&e(h)});var g=l(m,2);{let n=n=>{var i=z(),d=u(i);X(d,17,()=>t(ee),e=>e.actor.uuid,(n,i)=>{var u=zs(),d=o(u),p=o(d),m=o(p),h=o(m);{let n=J(()=>`/actors/${t(i).actor.uuid}`);yt(h,{get to(){return t(n)},class:`link link-hover font-medium break-all`,children:(n,r)=>{H();var o=a();s(e=>B(o,e),[()=>K(t(i))]),e(n,o)},$$slots:{default:!0}})}var g=l(h,2),_=t=>{var n=Is(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`organization.members.expired`)]),e(t,n)},v=t=>{var n=Ls(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`organization.members.invited`)]),e(t,n)};r(g,e=>{t(i).expired?e(_):t(i).pending&&e(v,1)});var y=l(g,2),b=t=>{var n=Rs(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`organization.members.last_owner`)]),e(t,n)},x=J(()=>ae(t(i)));r(y,e=>{t(x)&&e(b)}),Y(m);var S=l(m,2),C=G(S,!0),w=l(S,2),T=o(w),E=o(T);c(E,()=>t(i)),Y(T);var D=l(T,2),O=o(D);f(O,()=>t(i)),Y(D),Y(w),Y(p),Y(d);var k=l(d),A=o(k);c(A,()=>t(i)),Y(k);var j=l(k),M=o(j);f(M,()=>t(i)),Y(j),Y(u),s(e=>B(C,e),[()=>q(t(i))]),e(n,u)}),e(n,i)},i=J(()=>[Z(`organization.members.actor`),{label:Z(`organization.members.role`),hide:!0},{label:``,right:!0,hide:!0}]),d=J(()=>Z(`organization.members.empty.${t(k)}`));nn(g,{get columns(){return t(i)},get count(){return t(ee).length},get empty(){return t(d)},rows:n,$$slots:{rows:!0}})}e(n,p)},$$slots:{actions:!0,default:!0}})}};r(oe,e=>{p()===`sign-in`?e(ue):p()===`roles`?e(de,1):p()===`activity`?e(fe,2):p()===`general`?e(pe,3):e(me,-1)}),Y(U),e(n,i)};r(N,e=>{t(T)&&!t(_)?e(F):t(_)?e(U,-1):e(R,1)}),e(n,w)},$$slots:{default:!0}})}D()}c([`click`]);var Hs=f(`<span class="badge badge-warning badge-soft badge-sm"> </span>`),Us=f(`<span class="badge badge-ghost badge-sm"> </span>`),Ws=f(`<button type="button" class="btn btn-sm"> </button>`),Gs=f(`<p class="hint w-full"> <code class="font-mono text-xs break-all"> </code> <code class="font-mono text-xs break-all"> </code></p>`),Ks=f(`<li class="flex-wrap"><code class="min-w-0 truncate font-mono text-sm"> </code> <!> <div class="ml-auto flex items-center gap-1"><!> <button type="button" class="btn btn-ghost btn-xs">×</button></div> <!></li>`),qs=f(`<ul class="compact-list"></ul>`),Js=f(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),Ys=f(`<form class="flex flex-wrap items-center gap-2"><span class="text-sm"> </span> <input class="input input-sm w-full max-w-60 font-mono" autocapitalize="none" spellcheck="false"/> <button type="submit" class="btn btn-sm"> </button> <!></form>`),Xs=f(`<!> <form class="join"><input class="input input-sm join-item w-full max-w-60 font-mono" placeholder="acme.example" autocapitalize="none" spellcheck="false"/> <button type="submit" class="btn btn-sm join-item"> </button></form> <!>`,1),Zs=f(`<!> <!>`,1);function Qs(n,i){U(i,!0);let a=At(),c=w(null),f=w(!1),p=w(``),m=w(``);async function h(){let e=await a.attempt(()=>i.api.query(`
|
|
352
|
+
query Domains {
|
|
353
|
+
domainClaims { domain recordName recordValue verifiedAt missingSince provider { key name } }
|
|
354
|
+
providers { key name }
|
|
355
|
+
tenant { customHost origins }
|
|
356
|
+
}
|
|
357
|
+
`));e&&(S(c,e,!0),S(m,e.tenant.customHost??``,!0))}h();let g=J(()=>[[``,Z(`domains.here`)],...(t(c)?.providers??[]).map(e=>[e.key,Z(`domains.to`,{name:e.name})])]),v=J(()=>(t(c)?.domainClaims??[]).filter(e=>e.verifiedAt));async function y(e,t,n){S(f,!0);let r=await a.attempt(()=>i.api.query(e,t),n);return S(f,!1),r&&await h(),r}async function b(){let e=t(p).trim();e&&await y(`mutation Claim($domain: String!) { claimDomain(domain: $domain) { domainClaim { domain } } }`,{domain:e},Z(`domains.claimed`,{domain:e}))&&S(p,``)}async function x(e){S(f,!0);let t=await a.attempt(()=>i.api.query(`mutation Check($domain: String!) { checkDomain(domain: $domain) { found } }`,{domain:e.domain}));S(f,!1),t&&(t.checkDomain.found?a.say(Z(`domains.proven`,{domain:e.domain})):a.blame(Z(`domains.unanswered`,{name:e.recordName})),await h())}function C(e,t){y(`mutation Route($domain: String!, $provider: ID) {
|
|
358
|
+
updateDomainClaim(domain: $domain, provider: $provider) { domainClaim { domain } }
|
|
359
|
+
}`,{domain:e.domain,provider:t||null},Z(t?`domains.routed_away`:`domains.routed_here`,{domain:e.domain}))}function T(e){confirm(Z(`domains.release_confirm`,{domain:e.domain}))&&y(`mutation Release($domain: String!) { releaseDomain(domain: $domain) { domain } }`,{domain:e.domain},Z(`domains.released`,{domain:e.domain}))}function E(e){(e||confirm(Z(`domains.stop_confirm`,{host:t(c).tenant.customHost})))&&y(`mutation Serve($host: String) { serveDomain(host: $host) { tenant { customHost } } }`,{host:e},e?Z(`domains.served`,{host:e}):Z(`domains.unserved`))}{let i=J(()=>Z(`domains.title`)),h=J(()=>Z(`domains.help`));Q(n,{row:!0,get title(){return t(i)},get help(){return t(h)},children:(n,i)=>{var h=Zs(),y=u(h);Bn(y,{get feedback(){return a.state}});var w=l(y,2),D=n=>{var i=Xs(),a=u(i),h=n=>{var i=qs();X(i,21,()=>t(c).domainClaims,e=>e.domain,(n,i)=>{var a=Ks(),c=o(a),u=G(c,!0),p=l(c,2),m=n=>{var r=Hs(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`domains.missing`,{since:Vt(t(i).missingSince)})]),e(n,r)},h=t=>{var n=Us(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`domains.unproven`)]),e(t,n)};r(p,e=>{t(i).missingSince?e(m):t(i).verifiedAt||e(h,1)});var _=l(p,2),v=o(_),y=e=>{{let n=J(()=>Z(`domains.send`,{domain:t(i).domain})),r=J(()=>t(i).provider?.key??``);ua(e,{get name(){return t(n)},get value(){return t(r)},get options(){return t(g)},get disabled(){return t(f)},onchange:e=>C(t(i),e)})}},b=n=>{var r=Ws(),a=G(r,!0);s(e=>{r.disabled=t(f),B(a,e)},[()=>Z(`domains.check`)]),d(`click`,r,()=>x(t(i))),e(n,r)};r(v,e=>{t(i).verifiedAt&&!t(i).missingSince?e(y):e(b,-1)});var S=l(v,2);Y(_);var w=l(_,2),E=n=>{var r=Gs(),a=o(r),c=l(a),u=G(c,!0),d=l(c,2),f=G(d,!0);Y(r),s(e=>{B(a,`${e??``} `),B(u,t(i).recordName),B(f,t(i).recordValue)},[()=>Z(`domains.record`)]),e(n,r)};r(w,e=>{(!t(i).verifiedAt||t(i).missingSince)&&e(E)}),Y(a),s(e=>{B(u,t(i).domain),P(S,`aria-label`,e),S.disabled=t(f)},[()=>Z(`domains.release`,{domain:t(i).domain})]),d(`click`,S,()=>T(t(i))),e(n,a)}),Y(i),e(n,i)};r(a,e=>{t(c).domainClaims.length&&e(h)});var y=l(a,2),w=o(y);j(w);var D=l(w,2),O=G(D,!0);Y(y);var k=l(y,2),A=n=>{var i=Ys(),a=o(i),u=G(a,!0),p=l(a,2);j(p);var h=l(p,2),g=G(h,!0),y=l(h,2),b=n=>{var r=Js(),i=G(r,!0);s(e=>{r.disabled=t(f),B(i,e)},[()=>Z(`domains.stop`)]),d(`click`,r,()=>E(null)),e(n,r)};r(y,e=>{t(c).tenant.customHost&&e(b)}),Y(i),s((e,n,r,i)=>{B(u,e),P(p,`aria-label`,n),P(p,`placeholder`,`login.${t(v)[0]?.domain??`acme.example`??``}`),h.disabled=r,B(g,i)},[()=>Z(`domains.serve`),()=>Z(`domains.serve`),()=>t(f)||!t(m).trim()||t(m).trim()===t(c).tenant.customHost,()=>Z(`domains.save`)]),_(`submit`,i,e=>{e.preventDefault(),E(t(m).trim())}),V(p,()=>t(m),e=>S(m,e)),e(n,i)};r(k,e=>{(t(v).length||t(c).tenant.customHost)&&e(A)}),s((e,t,n)=>{P(w,`aria-label`,e),D.disabled=t,B(O,n)},[()=>Z(`domains.new`),()=>t(f)||!t(p).trim(),()=>Z(`domains.add`)]),_(`submit`,y,e=>{e.preventDefault(),b()}),V(w,()=>t(p),e=>S(p,e)),e(n,i)};r(w,e=>{t(c)&&e(D)}),e(n,h)},$$slots:{default:!0}})}D()}c([`click`]);var $s=f(`<span class="badge badge-ghost badge-sm"> </span>`),ec=f(`<button type="button" class="btn btn-ghost btn-xs"> </button>`),tc=f(`<button type="button" class="btn btn-ghost btn-xs">×</button>`),nc=f(`<div class="flex flex-wrap items-end gap-2"><!> <!> <input class="input input-sm w-full max-w-60"/> <!></div>`),rc=f(`<button type="button" class="btn btn-ghost btn-xs w-fit"> </button>`),ic=f(`<!> <!>`,1),ac=f(`<!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <input class="input input-sm w-full max-w-60"/></label>`,1),oc=f(`<p class="hint"> </p>`),sc=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <input class="input input-sm w-full max-w-100"/> <span class="hint"> </span></label>`),cc=f(`<span class="hint"> </span>`),lc=f(`<form class="flex w-full flex-col gap-3 py-2"><!> <p class="hint"> </p> <!> <div class="flex items-center gap-2"><button type="submit" class="btn btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button> <!></div></form>`),uc=f(`<li class="flex-wrap"><span class="min-w-0 truncate text-sm font-medium"> </span> <code class="hint font-mono"> </code> <span class="hint"> </span> <!> <span class="ml-auto flex items-center gap-1"><!> <button type="button" class="btn btn-ghost btn-xs"> </button> <button type="button" class="btn btn-ghost btn-xs">×</button></span> <!></li>`),dc=f(`<ul class="compact-list"></ul>`),fc=f(`<!> <!> <form class="join"><input class="input input-sm join-item w-full max-w-60"/> <button type="submit" class="btn btn-sm join-item"> </button></form> <!>`,1);function pc(n,i){U(i,!0);let a=At(),c=[`manual`,`rule`,`provider`,`group`],f=[`email_domain`,`profile`],p=[`name`,`given_name`,`family_name`,`middle_name`,`nickname`,`gender`,`zoneinfo`,`locale`],m=w(C([])),h=w(C([])),g=w(``),v=w(null),b=w(null),x=w(!1),T=J(()=>t(g).trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)),E=c.map(e=>[e,Z(`group_sources.sources.${e}`)]),O=f.map(e=>[e,Z(`group_sources.kinds.${e}`)]),k=p.map(e=>[e,Z(`actor.fields.${e}`)]),A=J(()=>[[``,Z(`group_sources.choose_provider`)],...t(h).map(e=>[e.key,e.name])]);async function M(){let e=await a.attempt(()=>i.api.query(`query Groups {
|
|
360
|
+
groups { key name memberCount source rule { kind field value } providerKey upstreamGroup parentLabels refreshedAt }
|
|
361
|
+
providers { key name }
|
|
362
|
+
}`));e&&(S(m,e.groups,!0),S(h,e.providers,!0))}M();async function N(){if(!t(T))return;let e=t(g).trim();await a.attempt(()=>i.api.query(`mutation Create($key: String!, $name: String!) { createGroup(key: $key, name: $name) { group { key } } }`,{key:t(T),name:e}),Z(`groups.added`,{name:e}))&&(S(g,``),await M())}async function F(e){confirm(Z(`groups.delete_confirm`,{name:e.name}))&&await a.attempt(()=>i.api.query(`mutation Delete($key: String!) { deleteGroup(key: $key) { key } }`,{key:e.key}),Z(`groups.deleted`,{name:e.name}))&&await M()}function I(e){S(v,e.key,!0),S(b,{source:e.source,rule:e.rule.length?e.rule.map(e=>({...e})):[L()],providerKey:e.providerKey??``,upstreamGroup:e.upstreamGroup??``,parents:e.parentLabels.join(`, `)},!0)}function L(){return{kind:`email_domain`,field:`name`,value:``}}function R(){S(v,null),S(b,null)}async function ee(e){S(x,!0);let n={key:e.key,source:t(b).source,rule:t(b).source===`rule`?t(b).rule.map(({kind:e,field:t,value:n})=>({kind:e,field:e===`profile`?t:null,value:n})):[],providerKey:t(b).source===`provider`?t(b).providerKey:``,upstreamGroup:t(b).source===`provider`?t(b).upstreamGroup:``,parentLabels:t(b).source===`group`?t(b).parents.split(/[\s,]+/).filter(Boolean):[]},r=await a.attempt(()=>i.api.query(`mutation Fill($key: String!, $source: String!, $rule: [GroupConditionInput!]!, $providerKey: String!, $upstreamGroup: String!, $parentLabels: [String!]!) {
|
|
363
|
+
updateGroup(key: $key, source: $source, rule: $rule, providerKey: $providerKey, upstreamGroup: $upstreamGroup, parentLabels: $parentLabels) { group { key } }
|
|
364
|
+
}`,n),Z(`group_sources.saved`,{name:e.name,source:Z(`group_sources.sources.${t(b).source}`).toLowerCase()}));S(x,!1),r&&(R(),await M())}async function H(e){S(x,!0);let t=await a.attempt(()=>i.api.query(`mutation Refresh($key: String!) { refreshGroup(key: $key) { group { key } } }`,{key:e.key}),Z(`group_sources.refreshed`,{name:e.name}));S(x,!1),t&&await M()}function te(e){return e.source===`provider`?Z(`group_sources.summary.provider`,{provider:t(h).find(t=>t.key===e.providerKey)?.name??e.providerKey??``}):e.source===`group`?Z(`group_sources.summary.group`,{parents:e.parentLabels.join(`, `)}):Z(`group_sources.summary.rule`)}{let i=J(()=>Z(`groups.title`)),c=J(()=>Z(`groups.lede`));Q(n,{row:!0,get title(){return t(i)},get help(){return t(c)},children:(n,i)=>{var c=fc(),f=u(c);Bn(f,{get feedback(){return a.state}});var p=l(f,2),C=n=>{var i=dc();X(i,21,()=>t(m),e=>e.key,(n,i)=>{var a=uc(),c=o(a),f=G(c,!0),p=l(c,2),m=G(p,!0),g=l(p,2),S=G(g,!0),C=l(g,2),w=n=>{var r=$s(),a=G(r,!0);s(e=>B(a,e),[()=>te(t(i))]),e(n,r)};r(C,e=>{t(i).source!==`manual`&&e(w)});var T=l(C,2),D=o(T),M=n=>{var r=ec(),a=G(r,!0);s(e=>{r.disabled=t(x),B(a,e)},[()=>Z(`group_sources.refresh`)]),d(`click`,r,()=>H(t(i))),e(n,r)};r(D,e=>{t(i).source!==`manual`&&e(M)});var N=l(D,2),ne=G(N,!0),U=l(N,2);Y(T);var W=l(T,2),re=n=>{var a=lc(),c=o(a);{let e=J(()=>Z(`group_sources.source`));ua(c,{get label(){return t(e)},get value(){return t(b).source},get options(){return E},get disabled(){return t(x)},onchange:e=>t(b).source=e})}var f=l(c,2),p=G(f,!0),m=l(f,2),g=n=>{var i=ic(),a=u(i);X(a,17,()=>t(b).rule,y,(n,i,a)=>{var c=nc(),u=o(c);{let e=J(()=>Z(`group_sources.kinds.email_domain`));ua(u,{get name(){return t(e)},get value(){return t(i).kind},get options(){return O},get disabled(){return t(x)},onchange:e=>t(i).kind=e})}var f=l(u,2),p=e=>{{let n=J(()=>Z(`group_sources.field`)),r=J(()=>t(i).field??`name`);ua(e,{get name(){return t(n)},get value(){return t(r)},get options(){return k},get disabled(){return t(x)},onchange:e=>t(i).field=e})}};r(f,e=>{t(i).kind===`profile`&&e(p)});var m=l(f,2);j(m);var h=l(m,2),g=n=>{var r=tc();s(e=>{P(r,`aria-label`,e),r.disabled=t(x)},[()=>Z(`group_sources.remove_condition`)]),d(`click`,r,()=>t(b).rule.splice(a,1)),e(n,r)};r(h,e=>{t(b).rule.length>1&&e(g)}),Y(c),s((e,n)=>{P(m,`aria-label`,e),P(m,`placeholder`,n),m.disabled=t(x)},[()=>Z(`group_sources.value`),()=>t(i).kind===`email_domain`?`example.com`:Z(`group_sources.value`)]),V(m,()=>t(i).value,e=>t(i).value=e),e(n,c)});var c=l(a,2),f=n=>{var r=rc(),i=G(r,!0);s(e=>{r.disabled=t(x),B(i,e)},[()=>Z(`group_sources.add_condition`)]),d(`click`,r,()=>t(b).rule.push(L())),e(n,r)};r(c,e=>{t(b).rule.length<5&&e(f)}),e(n,i)},v=n=>{var i=z(),a=u(i),c=n=>{var r=ac(),i=u(r);{let e=J(()=>Z(`group_sources.provider`));ua(i,{get label(){return t(e)},get value(){return t(b).providerKey},get options(){return t(A)},get disabled(){return t(x)},onchange:e=>t(b).providerKey=e})}var a=l(i,2),c=o(a),d=G(c,!0),f=l(c,2);j(f),Y(a),s(e=>{B(d,e),f.disabled=t(x)},[()=>Z(`group_sources.upstream_group`)]),V(f,()=>t(b).upstreamGroup,e=>t(b).upstreamGroup=e),e(n,r)},d=t=>{var n=oc(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`group_sources.no_providers`)]),e(t,n)};r(a,e=>{t(h).length?e(c):e(d,-1)}),e(n,i)},S=n=>{var r=sc(),i=o(r),a=G(i,!0),c=l(i,2);j(c);var u=l(c,2),d=G(u,!0);Y(r),s((e,n)=>{B(a,e),c.disabled=t(x),B(d,n)},[()=>Z(`group_sources.parent_labels`),()=>Z(`group_sources.parent_labels_hint`)]),V(c,()=>t(b).parents,e=>t(b).parents=e),e(n,r)};r(m,e=>{t(b).source===`rule`?e(g):t(b).source===`provider`?e(v,1):t(b).source===`group`&&e(S,2)});var C=l(m,2),w=o(C),T=G(w,!0),D=l(w,2),M=G(D,!0),N=l(D,2),F=n=>{var r=cc(),a=G(r,!0);s(e=>B(a,e),[()=>t(i).refreshedAt?Z(`group_sources.refreshed_at`,{when:Vt(t(i).refreshedAt)}):Z(`group_sources.never_refreshed`)]),e(n,r)};r(N,e=>{t(i).source!==`manual`&&e(F)}),Y(C),Y(a),s((e,n,r)=>{B(p,e),w.disabled=t(x),B(T,n),D.disabled=t(x),B(M,r)},[()=>Z(`group_sources.ledes.${t(b).source}`),()=>Z(`group_sources.save`),()=>Z(`group_sources.cancel`)]),_(`submit`,a,e=>{e.preventDefault(),ee(t(i))}),d(`click`,D,R),e(n,a)};r(W,e=>{t(v)===t(i).key&&t(b)&&e(re)}),Y(a),s((e,n,r,a)=>{B(f,t(i).name),B(m,t(i).key),B(S,e),P(N,`aria-label`,n),B(ne,r),P(U,`aria-label`,a)},[()=>Z(`groups.actors`,{count:t(i).memberCount}),()=>Z(`group_sources.change`,{name:t(i).name}),()=>Z(`group_sources.source`),()=>Z(`groups.delete`,{name:t(i).name})]),d(`click`,N,()=>t(v)===t(i).key?R():I(t(i))),d(`click`,U,()=>F(t(i))),e(n,a)}),Y(i),e(n,i)};r(p,e=>{t(m).length&&e(C)});var w=l(p,2),D=o(w);j(D);var M=l(D,2),ne=G(M,!0);Y(w);var U=l(w,2),W=n=>{var r=oc(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`groups.key`,{key:t(T)})]),e(n,r)};r(U,e=>{t(T)&&e(W)}),s((e,n,r)=>{P(D,`aria-label`,e),P(D,`placeholder`,n),M.disabled=!t(T),B(ne,r)},[()=>Z(`groups.new`),()=>Z(`groups.new`),()=>Z(`groups.add`)]),_(`submit`,w,e=>{e.preventDefault(),N()}),V(D,()=>t(g),e=>S(g,e)),e(n,c)},$$slots:{default:!0}})}D()}c([`click`]);var mc=f(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),hc=f(`<!> <!>`,1),gc=f(`<img alt="" width="48" height="48" class="rounded-lg"/>`),_c=f(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),vc=f(`<div class="flex flex-wrap items-center gap-3"><!> <label class="btn btn-sm"> <input type="file" class="hidden" accept="image/png,image/jpeg,image/webp,image/gif"/></label> <!></div> <div class="flex flex-wrap items-center gap-3"><label class="flex items-center gap-2 text-sm"><input type="color"/> </label> <!></div>`,1),yc=f(`<div class="grid gap-3 sm:grid-cols-2"></div>`),bc=f(`<div class="ml-auto flex gap-1"><button type="button" class="btn btn-xs"> </button> <button type="button" class="btn btn-xs btn-ghost"> </button></div>`),xc=f(`<li class="flex-wrap"><code class="font-mono text-sm"> </code> <span> </span> <span class="hint text-xs"> <!></span> <!></li>`),Sc=f(`<ul class="compact-list"></ul> <div class="flex flex-wrap items-center gap-2"><!> <button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-sm btn-ghost"> </button></div>`,1),Cc=f(`<!> <div class="grid gap-4"><!> <!> <!> <!> <!> <!> <!> <!> <!></div>`,1);function wc(n,i){U(i,!0);let c=[[30,Z(`settings.retention.days_30`)],[90,Z(`settings.retention.days_90`)],[180,Z(`settings.retention.days_180`)],[365,Z(`settings.retention.a_year`)],[1095,Z(`settings.retention.three_years`)],[2555,Z(`settings.retention.seven_years`)]],f=3600,p=24*f,m=[[`invitationLifetime`,`invitation`,7*p,[p,3*p,7*p,14*p,30*p]],[`organizationInvitationLifetime`,`organization_invitation`,14*p,[p,3*p,7*p,14*p,30*p]],[`passwordResetLifetime`,`password_reset`,1800,[900,1800,f,4*f,p]],[`emailVerificationLifetime`,`email_verification`,2*p,[f,p,2*p,7*p,14*p]]];function h(e){return e%p==0?Z(`links.days`,{count:e/p}):e%f==0?Z(`links.hours`,{count:e/f}):Z(`links.minutes`,{count:Math.round(e/60)})}let g=(e,t,n)=>(e.includes(n)?e:[...e,n].sort((e,t)=>e-t)).map(e=>[String(e),e===t?Z(`links.default`,{length:h(e)}):h(e)]),_=(e,t)=>!t||e.some(([e])=>e===t)?e:[...e,[t,Z(`settings.after_days`,{days:t})]],v={staged:`badge-warning`,active:`badge-success`,retiring:`badge-info`,retired:`badge-ghost`},y=At(),b=w(null),x=w(``),C=w(!0);async function T(){S(C,!0);try{S(b,await i.api.query(`
|
|
365
|
+
query Tenant {
|
|
366
|
+
tenant {
|
|
367
|
+
uuid subdomain name dynamicRegistration dynamicClientScopes createdAt mails accentColor logoUrl keyRotationDays
|
|
368
|
+
eventRetentionDays invitationLifetime organizationInvitationLifetime passwordResetLifetime emailVerificationLifetime
|
|
369
|
+
signingKeys { kid algorithm activatedAt retiredAt state }
|
|
370
|
+
}
|
|
371
|
+
viewer { identifier scopes }
|
|
372
|
+
namespaces {
|
|
373
|
+
name resource claimedAt releasable
|
|
374
|
+
client { clientId name }
|
|
375
|
+
}
|
|
376
|
+
scopesSupported
|
|
377
|
+
}
|
|
378
|
+
`),!0),S(x,t(b).tenant.name,!0)}catch(e){y.blame(e)}finally{S(C,!1)}}T();async function E(e,t){await y.attempt(()=>i.api.query(`mutation Update(
|
|
379
|
+
$name: String, $dynamicClientScopes: [String!], $dynamicRegistration: String,
|
|
380
|
+
$eventRetentionDays: Int, $accentColor: String, $keyRotationDays: Int,
|
|
381
|
+
$invitationLifetime: Int, $organizationInvitationLifetime: Int, $passwordResetLifetime: Int, $emailVerificationLifetime: Int
|
|
382
|
+
) {
|
|
383
|
+
updateTenant(
|
|
384
|
+
name: $name
|
|
385
|
+
dynamicClientScopes: $dynamicClientScopes
|
|
386
|
+
dynamicRegistration: $dynamicRegistration
|
|
387
|
+
eventRetentionDays: $eventRetentionDays
|
|
388
|
+
accentColor: $accentColor
|
|
389
|
+
keyRotationDays: $keyRotationDays
|
|
390
|
+
invitationLifetime: $invitationLifetime
|
|
391
|
+
organizationInvitationLifetime: $organizationInvitationLifetime
|
|
392
|
+
passwordResetLifetime: $passwordResetLifetime
|
|
393
|
+
emailVerificationLifetime: $emailVerificationLifetime
|
|
394
|
+
) { tenant { name } }
|
|
395
|
+
}`,e),t)&&await T()}async function O(e){let t=e.currentTarget,n=t.files?.[0];n&&(await k(`mutation Logo($logo: Upload!) { uploadTenantLogo(logo: $logo) { tenant { logoUrl } } }`,{logo:n},Z(`settings.branding.logo_updated`)),t.value=``)}async function k(e,t,n){await y.attempt(()=>i.api.query(e,t),n)&&await T()}let A=()=>k(`mutation Stage { stageSigningKey { signingKey { kid } } }`,{},Z(`settings.keys.staged_notice`));function M(e){if(confirm(Z(`settings.keys.activate_confirm`)))return k(`mutation Activate($kid: ID!) { activateSigningKey(kid: $kid) { signingKey { kid } } }`,{kid:e},Z(`settings.keys.activated_notice`))}function N(e){if(confirm(Z(`settings.keys.discard_confirm`)))return k(`mutation Discard($kid: ID!) { discardSigningKey(kid: $kid) { kid } }`,{kid:e},Z(`settings.keys.discarded`))}function F(){if(confirm(Z(`settings.keys.rotate_confirm`)))return k(`mutation Rotate { rotateSigningKey { signingKey { kid } } }`,{},Z(`settings.keys.rotated`))}var I=z(),L=u(I),R=e=>{xt(e,{})},ee=t=>{var n=mc(),r=G(n,!0);s(()=>B(r,y.state.failure)),e(t,n)},V=n=>{{let f=J(()=>Z(`settings.title`));Kn(n,{get title(){return t(f)},children:(n,f)=>{var p=Cc(),h=u(p);Bn(h,{get feedback(){return y.state}});var C=l(h,2),w=o(C);{let n=J(()=>Z(`settings.tenant.title`)),r=J(()=>Z(`settings.tenant.help`));Q(w,{row:!0,get title(){return t(n)},get help(){return t(r)},children:(n,r)=>{var a=hc(),o=u(a);{let e=J(()=>Z(`settings.tenant.name`));$(o,{get label(){return t(e)},onsave:()=>E({name:t(x)},Z(`settings.tenant.renamed`)),get value(){return t(x)},set value(e){S(x,e,!0)}})}var s=l(o,2);{let e=J(()=>[{term:Z(`settings.tenant.subdomain`),value:t(b).tenant.subdomain,mono:!0},{term:Z(`settings.tenant.issuer`),value:i.boot.issuer,mono:!0},{term:Z(`settings.tenant.resource`),value:i.boot.resource,mono:!0},{term:Z(`settings.tenant.since`),value:zt(t(b).tenant.createdAt)}]);qi(s,{get rows(){return t(e)}})}e(n,a)},$$slots:{default:!0}})}var D=l(w,2);{let n=J(()=>Z(`settings.branding.title`)),i=J(()=>Z(`settings.branding.help`));Q(D,{row:!0,get title(){return t(n)},get help(){return t(i)},children:(n,i)=>{var a=vc(),c=u(a),f=o(c),p=n=>{var r=gc();s(()=>P(r,`src`,t(b).tenant.logoUrl)),e(n,r)};r(f,e=>{t(b).tenant.logoUrl&&e(p)});var m=l(f,2),h=o(m),g=l(h);Y(m);var _=l(m,2),v=t=>{var n=_c(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`settings.branding.remove`)]),d(`click`,n,()=>k(`mutation { removeTenantLogo { tenant { logoUrl } } }`,{},Z(`settings.branding.logo_removed`))),e(t,n)};r(_,e=>{t(b).tenant.logoUrl&&e(v)}),Y(c);var y=l(c,2),x=o(y),S=o(x);j(S);var C=l(S);Y(x);var w=l(x,2),T=t=>{var n=_c(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`settings.branding.own`)]),d(`click`,n,()=>E({accentColor:``},Z(`settings.branding.color_reset`))),e(t,n)};r(w,e=>{t(b).tenant.accentColor&&e(T)}),Y(y),s((e,n)=>{B(h,`${e??``} `),te(S,t(b).tenant.accentColor??`#b3380f`),B(C,` ${n??``}`)},[()=>t(b).tenant.logoUrl?Z(`settings.branding.change_logo`):Z(`settings.branding.upload_logo`),()=>Z(`settings.branding.accent`)]),d(`change`,g,O),d(`change`,S,e=>E({accentColor:e.currentTarget.value},Z(`settings.branding.color_updated`))),e(n,a)},$$slots:{default:!0}})}var I=l(D,2);{let e=J(()=>Z(`settings.retention.title`)),n=J(()=>Z(`settings.retention.help`));Q(I,{row:!0,get title(){return t(e)},get help(){return t(n)},children:(e,n)=>{{let n=J(()=>_(c,t(b).tenant.eventRetentionDays));ua(e,{get value(){return t(b).tenant.eventRetentionDays},get options(){return t(n)},onchange:e=>E({eventRetentionDays:Number(e)},Z(`settings.retention.updated`))})}},$$slots:{default:!0}})}var L=l(I,2);{let n=J(()=>Z(`links.title`)),r=J(()=>Z(`links.help`));Q(L,{row:!0,get title(){return t(n)},get help(){return t(r)},children:(n,r)=>{var i=yc();X(i,21,()=>m,([e,t,n,r])=>e,(e,n)=>{var r=J(()=>re(t(n),4));let i=()=>t(r)[0],a=()=>t(r)[1],o=()=>t(r)[2],s=()=>t(r)[3];{let n=J(()=>Z(`links.${a()}`)),r=J(()=>String(t(b).tenant[i()])),c=J(()=>g(s(),o(),t(b).tenant[i()]));ua(e,{get label(){return t(n)},get value(){return t(r)},get options(){return t(c)},onchange:e=>E({[i()]:Number(e)},Z(`links.updated`))})}}),Y(i),e(n,i)},$$slots:{default:!0}})}var R=l(L,2);{let n=J(()=>Z(`settings.registration.title`)),i=J(()=>Z(`settings.registration.help`));Q(R,{row:!0,get title(){return t(n)},get help(){return t(i)},children:(n,i)=>{var a=hc(),o=u(a);{let e=J(()=>[[`off`,Z(`settings.registration.off`)],[`anything`,Z(`settings.registration.on`)],[`bounded`,Z(`settings.registration.bounded`)]]);ua(o,{get value(){return t(b).tenant.dynamicRegistration},get options(){return t(e)},onchange:e=>E({dynamicRegistration:e},Z(`settings.registration.updated`))})}var s=l(o,2),c=e=>{{let n=J(()=>t(b).tenant.dynamicClientScopes??[]);Mn(e,{get value(){return t(n)},get available(){return t(b).scopesSupported},onchange:e=>E({dynamicClientScopes:e},Z(`settings.registration.ceiling_updated`))})}};r(s,e=>{t(b).tenant.dynamicRegistration===`bounded`&&e(c)}),e(n,a)},$$slots:{default:!0}})}var ee=l(R,2),z=e=>{fo(e,{get api(){return i.api},get rows(){return t(b).namespaces},onreleased:T,showClient:!0,row:!0})};r(ee,e=>{t(b).namespaces.length&&e(z)});var V=l(ee,2);{let n=J(()=>Z(`settings.keys.title`)),i=J(()=>Z(`settings.keys.help`));Q(V,{row:!0,get title(){return t(n)},get help(){return t(i)},children:(n,i)=>{var c=Sc(),f=u(c);X(f,21,()=>t(b).tenant.signingKeys,e=>e.kid,(n,i)=>{var c=xc(),u=o(c),f=G(u,!0),p=l(u,2),m=G(p,!0),h=l(p,2),g=o(h),_=l(g),y=n=>{var r=a();s(e=>B(r,e),[()=>Z(`settings.keys.until`,{day:zt(t(i).retiredAt)})]),e(n,r)},b=n=>{var r=a();s(e=>B(r,e),[()=>zt(t(i).activatedAt,Z(`settings.keys.not_yet`))]),e(n,r)};r(_,e=>{t(i).state===`retiring`?e(y):e(b,-1)}),Y(h);var x=l(h,2),S=n=>{var r=bc(),a=o(r),c=G(a,!0),u=l(a,2),f=G(u,!0);Y(r),s((e,t)=>{B(c,e),B(f,t)},[()=>Z(`settings.keys.activate`),()=>Z(`settings.keys.discard`)]),d(`click`,a,()=>M(t(i).kid)),d(`click`,u,()=>N(t(i).kid)),e(n,r)};r(x,e=>{t(i).state===`staged`&&e(S)}),Y(c),s((e,n)=>{B(f,e),ce(p,1,`badge badge-sm ${v[t(i).state]??``}`),B(m,n),B(g,`${t(i).algorithm??``} · `)},[()=>t(i).kid.slice(0,8),()=>v[t(i).state]?Z(`settings.keys.states.${t(i).state}`):t(i).state]),e(n,c)}),Y(f);var p=l(f,2),m=o(p);{let e=J(()=>Z(`settings.keys.schedule`)),n=J(()=>String(t(b).tenant.keyRotationDays??0)),r=J(()=>[0,30,90,180,365].map(e=>[String(e),e?Z(`settings.keys.every`,{count:e}):Z(`settings.keys.by_hand`)]));ua(m,{get name(){return t(e)},get value(){return t(n)},get options(){return t(r)},onchange:e=>E({keyRotationDays:Number(e)},Z(`settings.keys.scheduled`))})}var h=l(m,2),g=G(h,!0),_=l(h,2),y=G(_,!0);Y(p),s((e,t)=>{B(g,e),B(y,t)},[()=>Z(`settings.keys.stage`),()=>Z(`settings.keys.rotate`)]),d(`click`,h,A),d(`click`,_,F),e(n,c)},$$slots:{default:!0}})}var H=l(V,2);pc(H,{get api(){return i.api}}),Qs(l(H,2),{get api(){return i.api}}),Y(C),e(n,p)},$$slots:{default:!0}})}};r(L,e=>{t(C)&&!t(b)?e(R):t(b)?e(V,-1):e(ee,1)}),e(n,I),D()}c([`change`,`click`]);var Tc=p(`<path></path>`),Ec=p(`<rect class="chart-hit" y="0" tabindex="-1" role="presentation"></rect>`),Dc=f(`<div class="chart-tip" aria-hidden="true"><strong> </strong> <span> </span></div>`),Oc=f(`<span> </span>`),kc=f(`<tr><td> </td><td> </td></tr>`),Ac=f(`<figure class="chart"><figcaption class="chart-head"><span class="sr-only"> </span> <span class="chart-peak"> </span></figcaption> <div class="chart-plot tray"><svg class="chart-svg" role="img"><line class="chart-base" x1="0"></line><!><!></svg> <!></div> <div class="chart-axis"></div> <table class="sr-only"><caption> </caption><thead><tr><th> </th><th> </th></tr></thead><tbody></tbody></table></figure>`);function jc(n,i){U(i,!0);let a=J(()=>Math.max(1,...i.points.map(e=>e.value))),c=J(()=>720/Math.max(i.points.length,1)),u=J(()=>Math.max(t(c)-2,1)),d=J(()=>i.points.reduce((e,t)=>e+t.value,0)),f=w(null);function p(e){return(e+.5)/Math.max(i.points.length,1)*100}function m(e,n){let r=e===0?2:Math.max(e/t(a)*138,3),i=146-r,o=Math.min(2,t(u)/2,r);return[`M ${n} 146`,`L ${n} ${i+o}`,`Q ${n} ${i} ${n+o} ${i}`,`L ${n+t(u)-o} ${i}`,`Q ${n+t(u)} ${i} ${n+t(u)} ${i+o}`,`L ${n+t(u)} 146`,`Z`].join(` `)}let h=J(()=>i.points.length?[0,Math.floor((i.points.length-1)/2),i.points.length-1].filter((e,t,n)=>n.indexOf(e)===t).map(e=>({at:e,point:i.points[e]})):[]);var g=Ac(),v=o(g),y=o(v),b=G(y,!0),x=l(y,2),C=G(x,!0);Y(v);var T=l(v,2),E=o(T);P(E,`viewBox`,`0 0 720 168`);var O=o(E);P(O,`y1`,146),P(O,`x2`,720),P(O,`y2`,146);var k=l(O);X(k,19,()=>i.points,e=>e.key,(n,r,i)=>{var a=Tc();let o;s(e=>{o=ce(a,0,`chart-bar`,null,o,{"chart-bar-idle":t(r).value===0,"chart-bar-on":t(f)?.index===t(i)}),P(a,`d`,e)},[()=>m(t(r).value,t(i)*t(c))]),e(n,a)});var A=l(k);X(A,19,()=>i.points,e=>e.key,(n,r,i)=>{var a=Ec();P(a,`height`,146),s(()=>{P(a,`x`,t(i)*t(c)),P(a,`width`,t(c))}),_(`mouseenter`,a,()=>S(f,{...t(r),index:t(i)},!0)),_(`mouseleave`,a,()=>S(f,null)),_(`focus`,a,()=>S(f,{...t(r),index:t(i)},!0)),_(`blur`,a,()=>S(f,null)),e(n,a)}),Y(E);var j=l(E,2),M=n=>{var r=Dc(),i=o(r),a=G(i,!0),c=l(i),u=l(c),d=G(u,!0);Y(r),s((e,n)=>{se(r,`--at: ${e??``}%`),B(a,t(f).value),B(c,` ${n??``} `),B(d,t(f).label)},[()=>p(t(f).index),()=>Z(`ui.bar_chart.unit`,{count:t(f).value})]),e(n,r)};r(j,e=>{t(f)&&e(M)}),Y(T);var N=l(T,2);X(N,21,()=>t(h),e=>e.at,(n,r)=>{var i=Oc(),a=G(i,!0);s(e=>{se(i,`--at: ${e??``}%`),B(a,t(r).point.label)},[()=>p(t(r).at)]),e(n,i)}),Y(N);var F=l(N,2),I=o(F),L=G(I,!0),R=l(I),ee=o(R),z=o(ee),V=G(z,!0),H=l(z),te=G(H,!0);Y(ee),Y(R);var ne=l(R);X(ne,21,()=>i.points,e=>e.key,(n,r)=>{var i=kc(),a=o(i),c=G(a,!0),u=l(a),d=G(u,!0);Y(i),s(()=>{B(c,t(r).label),B(d,t(r).value)}),e(n,i)}),Y(ne),Y(F),Y(g),s((e,t,n,r)=>{B(b,i.label),B(C,e),P(E,`aria-label`,t),B(L,i.label),B(V,n),B(te,r)},[()=>Z(`ui.bar_chart.peak`,{peak:t(a)}),()=>Z(`ui.bar_chart.summary`,{label:i.label,total:t(d),days:i.points.length,peak:t(a)}),()=>Z(`ui.bar_chart.day`),()=>Z(`ui.bar_chart.units`)]),e(n,g),D()}var Mc=f(`<div class="alert alert-error alert-soft text-sm" role="alert"><span> </span> <button type="button" class="btn btn-sm"> </button></div>`);function Nc(t,n){U(n,!0);let i=C({loading:!0,failure:null,data:null});async function a(){i.loading=!0,i.failure=null;try{i.data=await n.load()}catch(e){i.failure=e.message}finally{i.loading=!1}}a();var c=z(),f=u(c),p=e=>{xt(e,{})},m=t=>{var n=Mc(),r=o(n),c=G(r,!0),u=l(r,2),f=G(u,!0);Y(n),s(e=>{B(c,i.failure),B(f,e)},[()=>Z(`ui.retry`)]),d(`click`,u,a),e(t,n)},h=t=>{var r=z(),o=u(r);v(o,()=>n.children,()=>i.data,()=>a),e(t,r)};r(f,e=>{i.loading?e(p):i.failure?e(m,1):e(h,-1)}),e(t,c),D()}c([`click`]);var Pc=f(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),Fc=f(`<span class="hint"> </span>`),Ic=f(`<div class="callout callout-info" role="status"><div class="callout-words"><strong> </strong> <!></div> <div class="callout-actions"><a class="btn btn-sm" target="_blank" rel="noreferrer noopener"> </a></div></div>`),Lc=f(`<div role="status"><div class="callout-words"><strong> </strong> <!></div> <div class="callout-actions"><!></div></div>`),Rc=f(`<div class="callout callout-quiet"><div class="callout-words"><strong> </strong> <span class="hint"> </span></div> <div class="callout-actions"><!> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div>`),zc=f(`<div class="flex flex-col gap-2"><!> <!> <!></div>`),Bc=f(`<button type="button"> </button>`),Vc=f(`<div class="range" role="group"></div>`),Hc=f(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),Uc=f(`<span class="hint text-xs"> </span>`),Wc=f(`<li class="items-start"><span role="img"><svg viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><circle cx="10" cy="10" r="5"></circle></svg></span> <div class="flex min-w-0 flex-col"><span class="text-sm font-medium"> </span> <span class="text-sm"> </span> <!></div></li>`),Gc=f(`<ul class="compact-list"></ul> <p class="hint text-xs"> </p>`,1),Kc=f(`<p class="hint"> </p>`),qc=f(`<!> <!>`,1),Jc=f(`<td><!></td> <td class="text-right text-sm whitespace-nowrap"><!></td>`,1),Yc=f(`<!> <!> <div class="dash"><div class="dash-main"><!></div> <div class="dash-side"><!> <!></div></div> <!>`,1);function Xc(n,c){U(c,!0);let f={ok:`good`,warning:`warn`,failing:`bad`},p=[7,30,90],m=new Intl.DateTimeFormat(void 0,{day:`numeric`,month:`short`}),h=`masks:manage:skipped`,g=w(null),_=w(null),v=w(30),y=w(C([])),b=w(!1),x=w(null);try{S(y,JSON.parse(localStorage.getItem(h)??`[]`),!0)}catch{}function T(e){S(y,[...t(y),e],!0);try{localStorage.setItem(h,JSON.stringify(t(y)))}catch{}}let E=J(()=>t(g)?[{to:`/actors`,label:Z(`settings.counts.actors`),value:t(g).tally.actors},{to:`/clients`,label:Z(`settings.counts.clients`),value:t(g).tally.clients},{to:`/organizations`,label:Z(`settings.counts.organizations`),value:t(g).tally.organizations},{to:`/actors#devices`,label:Z(`settings.counts.devices`),value:t(g).tally.devices}]:[]),O=J(()=>t(g)?[t(g).waiting&&{key:`waiting`,tone:`warn`,title:Z(`settings.needs.waiting`,{count:t(g).waiting}),to:`/actors?lens=waiting`},t(g).help&&{key:`help`,tone:`warn`,title:Z(`settings.needs.help`,{count:t(g).help}),to:`/actors?lens=help`},t(g).worrying&&{key:`worrying`,tone:`bad`,title:Z(`settings.needs.worrying`,{count:t(g).worrying}),detail:Z(`settings.needs.latest`,{label:t(g).gravest[0].label,when:Vt(t(g).gravest[0].createdAt)}),to:`/activity?grave=1`}].filter(Boolean):[]),k=J(()=>t(g)?[!t(g).tenant.mails&&{key:`mail`,title:Z(`settings.starting.mail.title`),detail:Z(`settings.starting.mail.detail`),to:`/messages`,action:Z(`settings.starting.mail.action`)},t(g).tally.clients===0&&{key:`client`,title:Z(`settings.starting.client.title`),detail:Z(`settings.starting.client.detail`),to:`/clients`,action:Z(`settings.starting.client.action`)},t(g).tally.actors<=1&&{key:`invite`,title:Z(`settings.starting.invite.title`),detail:Z(`settings.starting.invite.detail`),to:`/actors`,action:Z(`settings.starting.invite.action`)}].filter(e=>e&&!t(y).includes(e.key)):[]),A=e=>e.map(e=>({key:e.date,value:e.signIns,label:m.format(new Date(`${e.date}T00:00:00`))})),j=J(()=>t(g)?.health.length?t(g).health.map(e=>e.checkedAt).sort().at(-1):null);function M(e){let t=e.details??{},n={...t,jobs:Array.isArray(t.jobs)?t.jobs.join(`, `):t.jobs,domains:Array.isArray(t.domains)?t.domains.join(`, `):t.domains,since:t.since?Bt(t.since):t.since};return Z(`health.checks.${e.name}.${e.summary}`,n)}async function N(){S(b,!0),S(x,null);try{let e=await c.api.query(`
|
|
396
|
+
mutation RunHealthChecks {
|
|
397
|
+
runHealthChecks { health { name status summary details checkedAt changedAt } }
|
|
398
|
+
}
|
|
399
|
+
`);S(g,{...t(g),health:e.runHealthChecks.health},!0)}catch(e){S(x,e.message,!0)}finally{S(b,!1)}}async function I(){try{S(g,await c.api.query(`
|
|
400
|
+
query Overview($since: ISO8601DateTime!) {
|
|
401
|
+
tenant { name mails }
|
|
402
|
+
tally { actors clients devices organizations }
|
|
403
|
+
waiting: actorCount(pendingApproval: true)
|
|
404
|
+
help: actorCount(recoveryRequested: true)
|
|
405
|
+
worrying: eventCount(grave: true, since: $since)
|
|
406
|
+
gravest: events(grave: true, since: $since, limit: 1) { id label createdAt }
|
|
407
|
+
latest: events(limit: 40) {
|
|
408
|
+
id action label createdAt ipAddress details
|
|
409
|
+
actor { uuid identifier }
|
|
410
|
+
by { uuid identifier }
|
|
411
|
+
client { clientId name }
|
|
412
|
+
device { id label }
|
|
413
|
+
}
|
|
414
|
+
organizations(limit: 5) { key name memberCount ownerCount pendingCount }
|
|
415
|
+
health { name status summary details checkedAt changedAt }
|
|
416
|
+
release { version url operatorStep }
|
|
417
|
+
}
|
|
418
|
+
`,{since:new Date(Date.now()-864e5).toISOString()}),!0)}catch(e){S(_,e.message,!0)}}I();var L=z(),R=u(L),ee=e=>{xt(e,{})},V=n=>{var r=Pc(),i=G(r,!0);s(()=>B(i,t(_))),e(n,r)},te=n=>{Kn(n,{get title(){return t(g).tenant.name},get id(){return c.boot.issuer},hero:!0,children:(n,m)=>{var h=Yc(),_=u(h),y=n=>{var i=zc(),c=o(i),u=n=>{var i=Ic(),a=o(i),c=o(a),u=G(c,!0),d=l(c,2),f=t=>{var n=Fc(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`health.release.operator`)]),e(t,n)};r(d,e=>{t(g).release.operatorStep&&e(f)}),Y(a);var p=l(a,2),m=o(p),h=G(m,!0);Y(p),Y(i),s((e,n)=>{B(u,e),P(m,`href`,t(g).release.url),B(h,n)},[()=>Z(`health.release.available`,{version:t(g).release.version}),()=>Z(`health.release.notes`)]),e(n,i)};r(c,e=>{t(g).release&&e(u)});var f=l(c,2);X(f,17,()=>t(O),e=>e.key,(n,i)=>{var c=Lc(),u=o(c),d=o(u),f=G(d,!0),p=l(d,2),m=n=>{var r=Fc(),a=G(r,!0);s(()=>B(a,t(i).detail)),e(n,r)};r(p,e=>{t(i).detail&&e(m)}),Y(u);var h=l(u,2);yt(o(h),{get to(){return t(i).to},class:`btn btn-sm`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`settings.needs.review`)]),e(t,r)},$$slots:{default:!0}}),Y(h),Y(c),s(()=>{ce(c,1,`callout callout-${t(i).tone??``}`),B(f,t(i).title)}),e(n,c)});var p=l(f,2);X(p,17,()=>t(k),e=>e.key,(n,r)=>{var i=Rc(),c=o(i),u=o(c),f=G(u,!0),p=l(u,2),m=G(p,!0);Y(c);var h=l(c,2),g=o(h);yt(g,{get to(){return t(r).to},class:`btn btn-sm`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).action)),e(n,o)},$$slots:{default:!0}});var _=l(g,2),v=G(_,!0);Y(h),Y(i),s(e=>{B(f,t(r).title),B(m,t(r).detail),B(v,e)},[()=>Z(`settings.starting.hide`)]),d(`click`,_,()=>T(t(r).key)),e(n,i)}),Y(i),e(n,i)};r(_,e=>{(t(O).length||t(k).length||t(g).release)&&e(y)});var C=l(_,2);fs(C,{get counts(){return t(E)}});var w=l(C,2),D=o(w),I=o(D);{let n=n=>{var r=Vc();X(r,20,()=>p,e=>e,(n,r)=>{var i=Bc(),a=G(i,!0);s(e=>{P(i,`aria-pressed`,t(v)===r),B(a,e)},[()=>Z(`settings.sign_ins.span`,{days:r})]),d(`click`,i,()=>S(v,r,!0)),e(n,i)}),Y(r),s(e=>P(r,`aria-label`,e),[()=>Z(`settings.sign_ins.range`)]),e(n,r)},r=J(()=>Z(`settings.sign_ins.title`));Q(I,{get title(){return t(r)},actions:n,children:(n,r)=>{var a=z(),o=u(a);i(o,()=>t(v),e=>{Nc(e,{load:()=>c.api.query(`
|
|
419
|
+
query Activity($days: Int) {
|
|
420
|
+
activity(days: $days) { date signIns }
|
|
421
|
+
}
|
|
422
|
+
`,{days:t(v)}),children:(e,n=F)=>{{let r=J(()=>A(n().activity)),i=J(()=>Z(`settings.sign_ins.chart`));jc(e,{get points(){return t(r)},get label(){return t(i)}})}},$$slots:{default:!0}})}),e(n,a)},$$slots:{actions:!0,default:!0}})}Y(D);var L=l(D,2),R=o(L);{let n=n=>{var r=Hc(),i=G(r,!0);s(e=>{r.disabled=t(b),B(i,e)},[()=>t(b)?Z(`health.checking`):Z(`health.check_now`)]),d(`click`,r,N),e(n,r)},i=J(()=>Z(`health.title`)),a=J(()=>Z(`health.lede`));Q(R,{get title(){return t(i)},get lede(){return t(a)},actions:n,children:(n,i)=>{var a=qc(),c=u(a),d=n=>{var r=Pc(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`health.failed`,{failure:t(x)})]),e(n,r)};r(c,e=>{t(x)&&e(d)});var p=l(c,2),m=n=>{var i=Gc(),a=u(i);X(a,21,()=>t(g).health,e=>e.name,(n,i)=>{var a=Wc(),c=o(a),u=l(c,2),d=o(u),p=G(d,!0),m=l(d,2),h=G(m,!0),g=l(m,2),_=n=>{var r=Uc(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`health.checks.${t(i).name}.advice`,t(i).details??{})]),e(n,r)};r(g,e=>{t(i).status!==`ok`&&e(_)}),Y(u),Y(a),s((e,n,r,a)=>{ce(c,1,`mark mark-${f[t(i).status]??``} mt-1`),P(c,`aria-label`,e),P(c,`title`,n),B(p,r),B(h,a)},[()=>Z(`health.statuses.${t(i).status}`),()=>Z(`health.statuses.${t(i).status}`),()=>Z(`health.checks.${t(i).name}.title`),()=>M(t(i))]),e(n,a)}),Y(a);var c=l(a,2),d=G(c,!0);s((e,t)=>{P(a,`aria-label`,e),B(d,t)},[()=>Z(`health.title`),()=>Z(`health.checked`,{when:Vt(t(j))})]),e(n,i)},h=t=>{var n=Kc(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`health.never`)]),e(t,n)};r(p,e=>{t(g).health.length?e(m):e(h,-1)}),e(n,a)},$$slots:{actions:!0,default:!0}})}var ee=l(R,2);{let n=n=>{yt(n,{to:`/organizations`,class:`btn btn-ghost btn-sm`,children:(n,r)=>{H();var i=a();s(e=>B(i,e),[()=>t(g).tally.organizations>5?Z(`settings.organizations.all_count`,{count:t(g).tally.organizations}):Z(`settings.organizations.all`)]),e(n,i)},$$slots:{default:!0}})},i=J(()=>Z(`settings.organizations.title`));Q(ee,{get title(){return t(i)},actions:n,children:(n,i)=>{var a=z(),c=u(a),d=n=>{{let r=n=>{var r=z(),i=u(r);X(i,17,()=>t(g).organizations,e=>e.key,(n,r)=>{{let i=J(()=>`/organizations/${t(r).key}`);Zt(n,{get to(){return t(i)},children:(n,i)=>{var a=Jc(),s=u(a);Xo(o(s),{get organization(){return t(r)}}),Y(s);var c=l(s,2);$o(o(c),{get organization(){return t(r)},class:`flex flex-col items-end`}),Y(c),e(n,a)},$$slots:{default:!0}})}}),e(n,r)},i=J(()=>[Z(`settings.organizations.organization`),{label:Z(`settings.organizations.members`),right:!0}]);nn(n,{get columns(){return t(i)},get count(){return t(g).organizations.length},rows:r,$$slots:{rows:!0}})}},f=t=>{var n=Kc(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`settings.organizations.empty`)]),e(t,n)};r(c,e=>{t(g).organizations.length?e(d):e(f,-1)}),e(n,a)},$$slots:{actions:!0,default:!0}})}Y(L),Y(w);var V=l(w,2);{let n=t=>{yt(t,{to:`/activity`,class:`btn btn-ghost btn-sm`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`settings.recent.all`)]),e(t,r)},$$slots:{default:!0}})},r=J(()=>Z(`settings.recent.title`));Q(V,{get title(){return t(r)},actions:n,children:(e,n)=>{{let n=J(()=>Z(`settings.recent.empty`));zr(e,{get events(){return t(g).latest},get empty(){return t(n)},limit:8,collapse:!0})}},$$slots:{actions:!0,default:!0}})}e(n,h)},$$slots:{default:!0}})};r(R,e=>{!t(g)&&!t(_)?e(ee):t(g)?e(te,-1):e(V,1)}),e(n,L),D()}c([`click`]);var Zc=f(`<nav class="settings-tabs"><!> <!></nav>`);function Qc(n,r){U(r,!0);var i=Zc(),c=o(i);{let n=J(()=>r.part===`log`?`settings-tab-on`:``);yt(c,{to:`/activity`,get class(){return`settings-tab ${t(n)??``}`},children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`activity.parts.log`)]),e(t,r)},$$slots:{default:!0}})}var u=l(c,2);{let n=J(()=>r.part===`streams`?`settings-tab-on`:``);yt(u,{to:`/activity/streams`,get class(){return`settings-tab ${t(n)??``}`},children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`activity.parts.streams`)]),e(t,r)},$$slots:{default:!0}})}Y(i),s(e=>P(i,`aria-label`,e),[()=>Z(`activity.title`)]),e(n,i),D()}var $c=f(`<span> <!> </span>`),el=f(`<span> </span>`),tl=f(`<div class="alert alert-info alert-soft flex-wrap items-center gap-3 text-sm" role="status"><!> <!></div>`),nl=f(`<option> </option>`),rl=f(`<div class="flex flex-wrap items-end gap-4"><label class="flex flex-col gap-1.5"><span class="legend"> </span> <select class="select select-sm w-full max-w-xs"><option> </option><!></select></label> <label class="flex items-center gap-2 pb-1 text-sm"><input type="checkbox" class="toggle toggle-sm"/> </label> <div class="flex flex-col gap-1.5 md:ml-auto"><span class="legend flex items-center gap-2"> <!></span> <div class="flex flex-wrap items-center gap-2"><input class="input input-sm w-auto" type="date"/> <span class="hint">–</span> <input class="input input-sm w-auto" type="date"/> <button type="button" class="btn btn-sm"> </button></div></div></div>`),il=f(`<!> <!>`,1),al=f(`<!> <!> <!> <!> <!>`,1);function ol(n,i){U(i,!0);let c=Dt(),f=At(),p=mt(),m=w(C([])),h=w(C([])),g=w(!1),_=()=>new Date().toISOString().slice(0,10),v=C({from:(e=>new Date(Date.now()-e*864e5).toISOString().slice(0,10))(30),to:_()}),y=w(``),E=w(p.query.get(`grave`)===`1`),O=w(!0),k=w(null),A=J(()=>p.query.get(`actor`)),M=J(()=>p.query.get(`client`)),N=J(()=>!!(t(A)||t(M)));async function F(){S(O,!0);let e=await f.attempt(()=>i.api.query(`
|
|
423
|
+
query Activity(
|
|
424
|
+
$action: String, $grave: Boolean, $afterId: ID, $limit: Int,
|
|
425
|
+
$actor: ID, $client: ID
|
|
426
|
+
) {
|
|
427
|
+
events(
|
|
428
|
+
action: $action, grave: $grave, afterId: $afterId, limit: $limit,
|
|
429
|
+
actor: $actor, client: $client
|
|
430
|
+
) {
|
|
431
|
+
id action label createdAt ipAddress userAgent details
|
|
432
|
+
actor { uuid identifier }
|
|
433
|
+
by { uuid identifier }
|
|
434
|
+
client { clientId name }
|
|
435
|
+
device { id label }
|
|
436
|
+
}
|
|
437
|
+
eventCount(action: $action, grave: $grave, actor: $actor, client: $client)
|
|
438
|
+
eventActions { action label }
|
|
439
|
+
}
|
|
440
|
+
`,{action:t(y)||null,grave:t(E),afterId:c.cursor,limit:c.size,actor:t(A),client:t(M)}));S(O,!1),e&&(S(h,e.eventActions,!0),S(m,e.events,!0),c.counted(e.eventCount))}function L(e){e===`forward`?c.forward(t(m).at(-1)?.id):c.back(),F()}async function R(){if(S(k,null),t(A)){let e=await i.api.query(`query About($uuid: ID!) { actor(uuid: $uuid) { uuid identifier } }`,{uuid:t(A)}).catch(()=>null);e?.actor&&S(k,{label:e.actor.identifier,to:`/actors/${e.actor.uuid}`,noun:Z(`activity.nouns.actor`)},!0);return}if(!t(M))return;let e=await i.api.query(`query About($clientId: ID!) { client(clientId: $clientId) { clientId name } }`,{clientId:t(M)}).catch(()=>null);e?.client&&S(k,{label:e.client.name,to:`/clients/${e.client.clientId}`,noun:Z(`activity.nouns.client`)},!0)}b(()=>{t(A),t(M),x(()=>{c.reset(),F(),R()})});function ee(e){S(y,e,!0),c.reset(),F()}function z(e){S(E,e,!0),e&&S(y,``),c.reset(),F()}async function te(){S(g,!0);let e=await f.attempt(()=>i.api.query(`mutation Export($from: ISO8601DateTime!, $to: ISO8601DateTime!, $action: String, $actor: ID) {
|
|
441
|
+
exportEvents(from: $from, to: $to, action: $action, actor: $actor) { url count }
|
|
442
|
+
}`,{from:new Date(`${v.from}T00:00:00`).toISOString(),to:new Date(new Date(`${v.to}T00:00:00`).getTime()+864e5).toISOString(),action:t(y)||null,actor:t(A)||null}));S(g,!1),e&&(f.say(Z(`activity.downloading`,{count:e.exportEvents.count})),location.assign(e.exportEvents.url))}{let i=J(()=>Z(`activity.title`));Kn(n,{get title(){return t(i)},children:(n,i)=>{var p=al(),b=u(p);Qc(b,{part:`log`});var x=l(b,2);Bn(x,{get feedback(){return f.state}});var S=l(x,2),C=n=>{var i=tl(),c=o(i),u=n=>{var r=$c(),i=o(r),c=l(i);yt(c,{get to(){return t(k).to},class:`link font-medium`,children:(n,r)=>{H();var i=a();s(()=>B(i,t(k).label)),e(n,i)},$$slots:{default:!0}});var u=l(c,1,!0);Y(r),s((e,t)=>{B(i,`${e??``} `),B(u,t)},[()=>Z(`activity.involves`,{noun:t(k).noun}),()=>Z(`activity.involves_end`)]),e(n,r)},d=n=>{var r=el(),i=G(r,!0);s(e=>B(i,e),[()=>Z(t(A)?`activity.gone.actor`:`activity.gone.client`)]),e(n,r)};r(c,e=>{t(k)?e(u):e(d,-1)}),yt(l(c,2),{to:`/activity`,class:`btn btn-sm`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`activity.everything`)]),e(t,r)},$$slots:{default:!0}}),Y(i),e(n,i)};r(S,e=>{t(N)&&e(C)});var w=l(S,2);Q(w,{children:(n,r)=>{var i=rl(),a=o(i),c=o(a),u=G(c,!0),f=l(c,2),p=o(f),m=G(p,!0);p.value=p.__value=``;var b=l(p);X(b,17,()=>t(h),e=>e.action,(n,r)=>{var i=nl(),a=G(i,!0),o={};s(()=>{B(a,t(r).label),o!==(o=t(r).action)&&(i.value=(i.__value=o)??``)}),e(n,i)}),Y(f);var x;I(f),Y(a);var S=l(a,2),C=o(S);j(C);var w=l(C);Y(S);var D=l(S,2),O=o(D),k=o(O),A=l(k);{let e=J(()=>Z(`activity.export.lede`)),n=J(()=>Z(`activity.export.title`));Wt(A,{get text(){return t(e)},get label(){return t(n)}})}Y(O);var M=l(O,2),N=o(M);j(N);var F=l(N,4);j(F);var L=l(F,2),R=G(L,!0);Y(M),Y(D),Y(i),s((e,n,r,i,a,o,s,c)=>{B(u,e),f.disabled=t(E),B(m,n),x!==(x=t(y))&&(f.value=(f.__value=x)??``,T(f,x)),W(C,t(E)),B(w,` ${r??``}`),B(k,`${i??``} `),P(N,`aria-label`,a),P(N,`max`,v.to),P(F,`aria-label`,o),P(F,`min`,v.from),P(F,`max`,s),L.disabled=t(g)||!v.from||!v.to,B(R,c)},[()=>Z(`activity.show`),()=>Z(`activity.all`),()=>Z(`activity.grave`),()=>Z(`activity.export.title`),()=>Z(`activity.export.from`),()=>Z(`activity.export.through`),()=>_(),()=>Z(`activity.export.download`)]),d(`change`,f,e=>ee(e.currentTarget.value)),d(`change`,C,e=>z(e.currentTarget.checked)),V(N,()=>v.from,e=>v.from=e),V(F,()=>v.to,e=>v.to=e),d(`click`,L,te),e(n,i)},$$slots:{default:!0}});var D=l(w,2),M=e=>{xt(e,{})},F=n=>{Q(n,{children:(n,r)=>{var i=il(),a=u(i);{let e=J(()=>t(E)?Z(`activity.empty.grave`):Z(`activity.empty.plain`));zr(a,{get events(){return t(m)},limit:1/0,get empty(){return t(e)}})}kt(l(a,2),{get pages(){return c},get shown(){return t(m).length},get busy(){return t(O)},onpage:L}),e(n,i)},$$slots:{default:!0}})};r(D,e=>{t(O)&&t(m).length===0?e(M):e(F,-1)}),e(n,p)},$$slots:{default:!0}})}D()}c([`change`,`click`]);var sl=e=>Z(`providers.protocols.${e}`),cl=e=>![`saml`,`mcp`].includes(e.protocol)&&!(e.tokenAuthMethod===`signed_secret`?e.privateKeyHeld:e.secretHeld),ll=e=>[e.role===`delegate`&&e.protocol!==`mcp`&&[`owns`,Z(`providers.marks.owns`),`primary`],e.trustsEmail&&[`mail`,Z(`providers.marks.trusts_email`),`good`],e.receivesSignals&&[`signals`,Z(`providers.marks.signals`),`info`],e.delegates&&[`delegates`,Z(`providers.marks.delegates`),`info`],cl(e)&&[`unconfirmed`,Z(`providers.marks.no_secret`),`warn`]].filter(Boolean),ul=f(`<button type="button" class="btn btn-primary btn-sm"> </button>`),dl=f(`<div class="hint text-xs"> </div>`),fl=f(`<td class="w-full max-w-0 md:w-auto md:max-w-none"><div class="flex min-w-0 items-center gap-2"><!> <!></div> <div class="hint truncate text-xs"><span class="font-mono"> </span> <!> <span class="md:hidden"> </span></div></td> <td class="hidden text-sm whitespace-nowrap md:table-cell"> <div class="hint text-xs"> </div></td> <td class="hidden text-right text-sm whitespace-nowrap md:table-cell"> <!></td>`,1),pl=f(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><!> <span class="hint font-mono text-xs"> </span></span> <span class="flex items-baseline gap-3 text-xs"><span class="hint"> </span> <button type="button" class="link"> </button></span></div></li>`),ml=f(`<ul class="slats"></ul>`),hl=f(`<!> <!>`,1);function gl(n,i){U(i,!0);let c=mt(),f=`
|
|
443
|
+
key name protocol role trustsEmail receivesSignals delegates tokenAuthMethod secretHeld privateKeyHeld
|
|
444
|
+
connections signedIn emailDomains archivedAt createdAt
|
|
445
|
+
organization { key name }
|
|
446
|
+
`,p=`
|
|
447
|
+
query Providers {
|
|
448
|
+
active: providers { ${f} }
|
|
449
|
+
archived: providers(archived: true) { ${f} }
|
|
450
|
+
}
|
|
451
|
+
`,m=[Z(`providers.columns.provider`),{label:Z(`providers.columns.kind`),hide:!0},{label:Z(`providers.columns.connections`),hide:!0,right:!0}],h=At(),g=w(C([])),_=w(C([])),v=w(!0);async function y(){let e=await h.attempt(()=>i.api.query(p));S(v,!1),e&&(S(g,e.active,!0),S(_,e.archived,!0))}y();async function b(e){await h.attempt(()=>i.api.query(`mutation Restore($key: ID!) { restoreProvider(key: $key) { provider { key } } }`,{key:e.key}),Z(`providers.notices.restored`,{name:e.name}))&&await y()}{let i=t=>{var n=ul(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`providers.add`)]),d(`click`,n,()=>c.go(`/providers/new`)),e(t,n)},f=J(()=>Z(`providers.title`)),p=J(()=>Z(`providers.lede`));Kn(n,{get title(){return t(f)},get lede(){return t(p)},actions:i,children:(n,i)=>{var c=hl(),f=u(c);Bn(f,{get feedback(){return h.state}});var p=l(f,2),y=e=>{xt(e,{})},x=n=>{var i=hl(),c=u(i);{let n=n=>{var i=z(),c=u(i);X(c,17,()=>t(g),e=>e.key,(n,i)=>{{let c=J(()=>`/providers/${t(i).key}`);Zt(n,{get to(){return t(c)},children:(n,c)=>{var d=fl(),f=u(d),p=o(f),m=o(p);{let n=J(()=>`/providers/${t(i).key}`);yt(m,{get to(){return t(n)},class:`link link-hover truncate font-medium`,children:(n,r)=>{H();var o=a();s(()=>B(o,t(i).name)),e(n,o)},$$slots:{default:!0}})}var h=l(m,2);{let e=J(()=>ll(t(i)));wt(h,{get marks(){return t(e)}})}Y(p);var g=l(p,2),_=o(g),v=G(_,!0),y=l(_,2),b=n=>{var r=a();s(()=>B(r,`· ${t(i).organization.name??``}`)),e(n,r)};r(y,e=>{t(i).organization&&e(b)});var x=l(y,2),S=G(x);Y(g),Y(f);var C=l(f,2),w=o(C),T=l(w),E=G(T,!0);Y(C);var D=l(C,2),O=o(D),k=l(O),A=n=>{var r=dl(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`providers.facts.signed_in`,{count:t(i).signedIn})]),e(n,r)};r(k,e=>{t(i).signedIn&&e(A)}),Y(D),s((e,n,r)=>{B(v,t(i).key),B(S,`· ${e??``}`),B(w,`${n??``} `),B(E,r),B(O,`${t(i).connections??``} `)},[()=>sl(t(i).protocol),()=>sl(t(i).protocol),()=>t(i).protocol===`mcp`?Z(`providers.roles.never`):t(i).role===`delegate`?Z(`providers.roles.owns`):Z(`providers.roles.existing`)]),e(n,d)},$$slots:{default:!0}})}}),e(n,i)},i=J(()=>Z(`providers.empty`));nn(c,{get columns(){return m},get count(){return t(g).length},get empty(){return t(i)},rows:n,$$slots:{rows:!0}})}var f=l(c,2),p=n=>{{let r=J(()=>Z(`providers.archived`));Q(n,{get title(){return t(r)},children:(n,r)=>{var i=ml();X(i,21,()=>t(_),e=>e.key,(n,r)=>{var i=pl(),c=o(i),u=o(c),f=o(u);{let n=J(()=>`/providers/${t(r).key}`);yt(f,{get to(){return t(n)},class:`link link-hover text-sm font-medium`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).name)),e(n,o)},$$slots:{default:!0}})}var p=l(f,2),m=G(p,!0);Y(u);var h=l(u,2),g=o(h),_=G(g,!0),v=l(g,2),y=G(v,!0);Y(h),Y(c),Y(i),s((e,n)=>{B(m,t(r).key),B(_,e),B(y,n)},[()=>Z(`providers.archived_on`,{day:zt(t(r).archivedAt)}),()=>Z(`providers.restore`)]),d(`click`,v,()=>b(t(r))),e(n,i)}),Y(i),e(n,i)},$$slots:{default:!0}})}};r(f,e=>{t(_).length&&e(p)}),e(n,i)};r(p,e=>{t(v)?e(y):e(x,-1)}),e(n,c)},$$slots:{actions:!0,default:!0}})}D()}c([`click`]);var _l=(t,n=F,i=F,a=F,c=F)=>{var u=yl(),f=o(u);j(f);var p=l(f,2),m=o(p),h=G(m,!0),g=l(m,2),_=t=>{var n=vl(),r=G(n,!0);s(()=>B(r,c())),e(t,n)};r(g,e=>{c()&&e(_)}),Y(p),Y(u),s(()=>{W(f,n()),B(h,a())}),d(`change`,f,e=>i()(e.currentTarget.checked)),e(t,u)},vl=f(`<span class="hint"> </span>`),yl=f(`<label class="flex items-start gap-3 text-sm"><input type="checkbox" class="toggle toggle-sm mt-0.5"/> <span class="flex flex-col gap-0.5"><span> </span> <!></span></label>`),bl=f(`<p class="text-sm"> <a class="link" target="_blank" rel="noreferrer noopener"> </a>.</p>`),xl=f(`<li class="slat"><span class="hint text-xs"> </span> <span class="flex items-center justify-between gap-3"><code class="min-w-0 font-mono text-xs break-all"> </code> <button type="button" class="btn btn-ghost btn-xs shrink-0"> </button></span></li>`),Sl=f(`<!> <ul class="slats"></ul>`,1),Cl=f(`<!> <!> <!>`,1),wl=f(`<p class="hint"> </p>`),Tl=f(`<option> </option>`),El=f(`<!> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full max-w-sm font-mono text-xs" rows="3"></textarea></label> <!> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full max-w-sm font-mono text-xs" rows="4"></textarea></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label>`,1),Dl=f(`<code class="font-mono text-xs break-all"> </code> <!>`,1),Ol=f(`<!> <!> <!> <!> <!>`,1),kl=f(`<!> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full max-w-sm font-mono text-xs" rows="4"></textarea></label>`,1),Al=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"><option> </option><option> </option><option> </option></select></label> <!>`,1),jl=f(`<!> <!> <!> <!>`,1),Ml=f(`<!> <!> <!> <!> <!> <!>`,1),Nl=f(`<!> <!>`,1),Pl=f(`<p class="text-sm"> </p>`),Fl=f(`<!> <!> <p class="hint"> <code class="font-mono"> </code> </p> <!>`,1),Il=f(`<span class="text-sm font-medium"> </span> <span class="hint text-xs"> </span>`,1),Ll=f(`<div class="grid gap-2 sm:grid-cols-2 lg:grid-cols-3"></div>`),Rl=f(`<div class="grid gap-4"><!> <!> <!> <div class="flex gap-2 border-t border-[var(--line)] pt-5"><button type="button" class="btn btn-primary btn-sm"> </button> <!></div></div>`),zl=f(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),Bl=f(`<div class="callout callout-quiet" role="status"><div class="callout-words"><strong> </strong></div> <div class="callout-actions"><button type="button" class="btn btn-sm"> </button></div></div>`),Vl=f(`<div class="callout callout-warn" role="status"><div class="callout-words"><strong> </strong> <span> </span></div></div>`),Hl=f(`<div class="callout callout-info"><div class="callout-words"><span> <!> </span></div></div>`),Ul=f(`<button type="button" class="btn btn-sm"> </button>`),Wl=f(`<div class="flex flex-wrap gap-2"><!> <button type="button" class="btn btn-sm btn-error btn-outline"> </button></div>`),Gl=f(`<div class="savebar" role="region"><span class="text-sm font-medium"> </span> <div class="flex gap-2"><button type="button" class="btn btn-ghost btn-sm"> </button> <button type="button" class="btn btn-primary btn-sm"> </button></div></div>`),Kl=f(`<!> <!> <!> <!> <div class="grid gap-4"><!></div> <!>`,1);function ql(n,i){U(i,!0);let c=n=>{{let i=J(()=>Z(`providers.form.give`,{name:t(be)})),a=J(()=>t(ue)?.guide&&t(le)?null:Z(`providers.sections.give_lede`));Q(n,{row:!0,get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=Sl(),c=u(a),f=n=>{var r=bl(),i=o(r),a=l(i),c=G(a,!0);H(),Y(r),s((e,n)=>{B(i,`${e??``} `),P(a,`href`,t(ue).guide),B(c,n)},[()=>Z(`providers.form.guide_lead`,{name:t(ue).name}),()=>Z(`providers.form.guide_link`,{name:t(ue).name})]),e(n,r)};r(c,e=>{t(ue)?.guide&&t(le)&&e(f)});var p=l(c,2);X(p,21,()=>t(fe)?[[Z(`providers.form.acs_url`),t(ve)],[Z(`providers.form.sp_entity_id`),t(ye)]]:[[Z(`providers.form.redirect_uri`),t(ve)]],([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],c=()=>t(i)[1];var u=xl(),f=o(u),p=G(f,!0),m=l(f,2),h=o(m),g=G(h,!0),_=l(h,2),v=G(_,!0);Y(m),Y(u),s(e=>{B(p,a()),B(g,c()),B(v,e)},[()=>Z(`providers.copy`)]),d(`click`,_,()=>Be(c())),e(n,u)}),Y(p),e(n,a)},$$slots:{default:!0}})}},f=n=>{var i=Ml(),a=u(i);c(a);var d=l(a,2);{let n=J(()=>Z(`providers.sections.identity`)),i=J(()=>Z(`providers.sections.identity_lede`));Q(d,{row:!0,get title(){return t(n)},get lede(){return t(i)},children:(n,i)=>{var a=Cl(),o=u(a);{let e=J(()=>Z(`providers.form.name`));$(o,{get label(){return t(e)},placeholder:`Acme`,get value(){return t(q).name},set value(e){t(q).name=e}})}var s=l(o,2),c=e=>{{let n=J(()=>Z(`providers.form.key`));$(e,{get label(){return t(n)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`acme`,get value(){return t(q).key},set value(e){t(q).key=e}})}};r(s,e=>{t(le)&&e(c)});var d=l(s,2),f=n=>{var r=z(),i=u(r);X(i,16,()=>t(ue).asks,e=>e,(e,n)=>{{let r=J(()=>y[n]?.[0]??n),i=J(()=>y[n]?.[1]??``);$(e,{get label(){return t(r)},get placeholder(){return t(i)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return t(q).asked[n]},set value(e){t(q).asked[n]=e}})}}),e(n,r)};r(d,e=>{t(le)&&!t(de)&&e(f)}),e(n,a)},$$slots:{default:!0}})}var f=l(d,2),p=n=>{{let i=J(()=>Z(`providers.form.identity_provider`)),a=J(()=>Z(`providers.form.metadata_hint`));Q(n,{row:!0,get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=El(),c=u(a);{let e=J(()=>Z(`providers.form.metadata_url`)),n=J(()=>Z(`providers.form.read`));$(c,{get label(){return t(e)},onsave:()=>(t(q).metadataUrl.trim()||t(q).metadataXml.trim())&&!t(ce)&&Ne(),get save(){return t(n)},placeholder:`https://idp.acme.test/metadata`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return t(q).metadataUrl},set value(e){t(q).metadataUrl=e}})}var d=l(c,2),f=n=>{var r=wl(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`providers.facts.metadata_read`,{day:t(W).metadataFetchedAt?zt(t(W).metadataFetchedAt):Z(`providers.facts.never`)})]),e(n,r)};r(d,e=>{t(W)?.metadataUrl&&e(f)});var p=l(d,2),m=o(p),h=G(m,!0),g=l(m,2);ie(g),Y(p);var _=l(p,2);{let e=J(()=>Z(`providers.form.entity_id`));$(_,{get label(){return t(e)},get value(){return t(q).idpEntityId},set value(e){t(q).idpEntityId=e}})}var y=l(_,2);{let e=J(()=>Z(`providers.form.sign_in_url`));$(y,{get label(){return t(e)},get value(){return t(q).idpSsoUrl},set value(e){t(q).idpSsoUrl=e}})}var b=l(y,2),x=o(b),S=G(x,!0),C=l(x,2);ie(C),Y(b);var w=l(b,2),T=o(w),E=G(T,!0),D=l(T,2);X(D,21,()=>v,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=Tl(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(D),I(D),Y(w),s((e,t,n)=>{B(h,e),B(S,t),B(E,n)},[()=>Z(`providers.form.paste_metadata`),()=>Z(`providers.form.certificates`),()=>Z(`providers.form.name_id_format`)]),V(g,()=>t(q).metadataXml,e=>t(q).metadataXml=e),V(C,()=>t(q).idpCertificates,e=>t(q).idpCertificates=e),L(D,()=>t(q).nameIdFormat,e=>t(q).nameIdFormat=e),e(n,a)},$$slots:{default:!0}})}};r(f,e=>{t(fe)&&e(p)});var m=l(f,2),h=n=>{{let i=J(()=>Z(`providers.sections.mcp`)),a=J(()=>Z(`providers.form.mcp_hint`));Q(n,{row:!0,get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=z(),o=u(a),c=e=>{{let n=J(()=>Z(`providers.form.mcp_url`));$(e,{get label(){return t(n)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`https://mcp.acme.test/mcp`,get value(){return t(q).resourceUrl},set value(e){t(q).resourceUrl=e}})}},d=n=>{var i=Dl(),a=u(i),o=G(a,!0),c=l(a,2),d=n=>{var r=wl(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`providers.facts.registered`,{day:t(W).registeredAt?zt(t(W).registeredAt):Z(`providers.facts.never`)})]),e(n,r)};r(c,e=>{t(W)&&e(d)}),s(()=>B(o,t(q).resourceUrl)),e(n,i)};r(o,e=>{t(le)&&t(de)?e(c):e(d,-1)}),e(n,a)},$$slots:{default:!0}})}};r(m,e=>{t(he)&&e(h)});var g=l(m,2),_=n=>{{let i=J(()=>Z(`providers.sections.endpoints`)),a=J(()=>t(me)?Z(`providers.sections.endpoints_oidc`):null);Q(n,{row:!0,get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=Ol(),o=u(a),s=e=>{{let n=J(()=>Z(`providers.form.issuer`)),r=J(()=>Z(`providers.form.discover`));$(e,{get label(){return t(n)},onsave:()=>t(q).issuer.trim()&&!t(ce)&&Me(),get save(){return t(r)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`https://id.acme.test`,get value(){return t(q).issuer},set value(e){t(q).issuer=e}})}};r(o,e=>{t(me)&&e(s)});var c=l(o,2);{let e=J(()=>Z(`providers.form.authorization_url`));$(c,{get label(){return t(e)},get value(){return t(q).authorizationUrl},set value(e){t(q).authorizationUrl=e}})}var d=l(c,2);{let e=J(()=>Z(`providers.form.token_url`));$(d,{get label(){return t(e)},get value(){return t(q).tokenUrl},set value(e){t(q).tokenUrl=e}})}var f=l(d,2);{let e=J(()=>Z(`providers.form.userinfo_url`)),n=J(()=>t(pe)?``:Z(`providers.form.optional`));$(f,{get label(){return t(e)},get placeholder(){return t(n)},get value(){return t(q).userinfoUrl},set value(e){t(q).userinfoUrl=e}})}var p=l(f,2),m=e=>{{let n=J(()=>Z(`providers.form.emails_url`)),r=J(()=>Z(`providers.form.optional`));$(e,{get label(){return t(n)},get placeholder(){return t(r)},get value(){return t(q).emailsUrl},set value(e){t(q).emailsUrl=e}})}},h=e=>{{let n=J(()=>Z(`providers.form.jwks_uri`)),r=J(()=>Z(`providers.form.discovered_if_empty`));$(e,{get label(){return t(n)},get placeholder(){return t(r)},get value(){return t(q).jwksUri},set value(e){t(q).jwksUri=e}})}};r(p,e=>{t(pe)?e(m):e(h,-1)}),e(n,a)},$$slots:{default:!0}})}};r(g,e=>{t(de)&&!t(fe)&&!t(he)&&e(_)});var b=l(g,2),x=n=>{{let i=J(()=>Z(`providers.form.credentials`)),a=J(()=>Z(`providers.sections.credentials_lede`,{name:t(be)}));Q(n,{row:!0,get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=jl(),c=u(a);{let e=J(()=>t(ge)?Z(`providers.form.services_id`):Z(`providers.form.client_id`));$(c,{get label(){return t(e)},autocomplete:`off`,get value(){return t(q).clientId},set value(e){t(q).clientId=e}})}var d=l(c,2),f=e=>{{let n=J(()=>Z(`providers.form.client_secret`)),r=J(()=>t(le)?``:t(W)?.secretHeld?Z(`providers.form.unchanged`):``);$(e,{get label(){return t(n)},type:`password`,autocomplete:`off`,get placeholder(){return t(r)},get value(){return t(q).clientSecret},set value(e){t(q).clientSecret=e}})}};r(d,e=>{t(Ve)&&e(f)});var p=l(d,2),m=n=>{var r=kl(),i=u(r);{let e=J(()=>Z(`providers.form.team_id`));$(i,{get label(){return t(e)},autocomplete:`off`,get value(){return t(q).teamId},set value(e){t(q).teamId=e}})}var a=l(i,2);{let e=J(()=>Z(`providers.form.key_id`));$(a,{get label(){return t(e)},autocomplete:`off`,get value(){return t(q).keyId},set value(e){t(q).keyId=e}})}var c=l(a,2),d=o(c),f=G(d,!0),p=l(d,2);ie(p),Y(c),s((e,t)=>{B(f,e),P(p,`placeholder`,t)},[()=>Z(`providers.form.private_key`),()=>t(le)?`-----BEGIN PRIVATE KEY-----`:Z(`providers.form.unchanged`)]),V(p,()=>t(q).privateKey,e=>t(q).privateKey=e),e(n,r)};r(p,e=>{t(ge)&&e(m)});var h=l(p,2),g=n=>{var r=Al(),i=u(r),a=o(i),c=G(a,!0),d=l(a,2),f=o(d),p=G(f,!0);f.value=f.__value=`client_secret_post`;var m=l(f),h=G(m,!0);m.value=m.__value=`client_secret_basic`;var g=l(m),_=G(g,!0);g.value=g.__value=`signed_secret`,Y(d),I(d),Y(i);var v=l(i,2);{let e=J(()=>Z(`providers.form.extra_scopes`)),n=J(()=>t(me)?Z(`providers.form.oidc_scopes`):`read:user`);$(v,{get label(){return t(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get placeholder(){return t(n)},get value(){return t(q).scopes},set value(e){t(q).scopes=e}})}s((e,t,n,r)=>{B(c,e),B(p,t),B(h,n),B(_,r)},[()=>Z(`providers.form.sends_secret`),()=>Z(`providers.form.secret_post`),()=>Z(`providers.form.secret_basic`),()=>Z(`providers.form.secret_signed`)]),L(d,()=>t(q).tokenAuthMethod,e=>t(q).tokenAuthMethod=e),e(n,r)};r(h,e=>{t(de)&&e(g)}),e(n,a)},$$slots:{default:!0}})}};r(b,e=>{!t(fe)&&!t(he)&&e(x)}),e(n,i)},p=n=>{var i=jl(),a=u(i);{let n=J(()=>Z(`providers.sections.accounts`)),i=J(()=>Z(`providers.form.owns_hint`,{name:t(be)}));Q(a,{row:!0,get title(){return t(n)},get lede(){return t(i)},children:(n,i)=>{var a=Nl(),o=u(a);{let e=J(()=>Z(`providers.form.owns`,{name:t(be)}));_l(o,()=>t(q).role===`delegate`,()=>e=>t(q).role=e?`delegate`:`credential`,()=>t(e),()=>null)}var s=l(o,2),c=e=>{{let n=J(()=>Z(`providers.form.signup_scopes`));$(e,{get label(){return t(n)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`openid profile email offline_access identities`,get value(){return t(q).signupScopes},set value(e){t(q).signupScopes=e}})}};r(s,e=>{t(q).role===`delegate`&&e(c)}),e(n,a)},$$slots:{default:!0}})}var o=l(a,2);{let n=J(()=>Z(`providers.sections.addresses`));Q(o,{row:!0,get title(){return t(n)},children:(n,i)=>{var a=Nl(),o=u(a),s=e=>{{let n=J(()=>Z(`providers.form.trusts_email`)),r=J(()=>Z(`providers.form.trusts_email_hint`));_l(e,()=>t(q).trustsEmail,()=>e=>t(q).trustsEmail=e,()=>t(n),()=>t(r))}};r(o,e=>{t(fe)||e(s)});var c=l(o,2);{let e=J(()=>t(fe)?Z(`providers.form.saml_domains`):Z(`providers.form.domains`)),n=J(()=>Z(`providers.form.any_domain`));$(c,{get label(){return t(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get placeholder(){return t(n)},get value(){return t(q).emailDomains},set value(e){t(q).emailDomains=e}})}e(n,a)},$$slots:{default:!0}})}var s=l(o,2),c=e=>{{let n=J(()=>Z(`providers.sections.signals`));Q(e,{row:!0,get title(){return t(n)},children:(e,n)=>{{let n=J(()=>Z(`providers.form.signals`)),r=J(()=>`${Z(`providers.form.signals_lead`)} ${_e}/ssf/events. ${Z(`providers.form.signals_rest`)}`);_l(e,()=>t(q).receivesSignals,()=>e=>t(q).receivesSignals=e,()=>t(n),()=>t(r))}},$$slots:{default:!0}})}};r(s,e=>{t(me)&&e(c)});var d=l(s,2),f=n=>{{let r=J(()=>Z(`providers.form.claims`)),i=J(()=>Z(`providers.sections.claims_lede`));Q(n,{row:!0,get title(){return t(r)},get lede(){return t(i)},children:(n,r)=>{var i=Nl(),a=u(i);{let e=J(()=>t(fe)?Z(`providers.form.subject_saml`):t(me)?Z(`providers.form.subject_oidc`):Z(`providers.form.subject_path`));$(a,{get label(){return t(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return t(q).subjectClaim},set value(e){t(q).subjectClaim=e}})}var o=l(a,2);X(o,17,()=>_.filter(([e])=>!(t(fe)&&e===`email_verified`)),([e,t])=>e,(e,n)=>{var r=J(()=>re(t(n),2));let i=()=>t(r)[0],a=()=>t(r)[1];{let n=J(()=>t(fe)?Z(`providers.form.attribute_name`):i());$(e,{get label(){return a()},get placeholder(){return t(n)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return t(q).claims[i()]},set value(e){t(q).claims[i()]=e}})}}),e(n,i)},$$slots:{default:!0}})}};r(d,e=>{t(de)&&e(f)}),e(n,i)},m=n=>{{let i=J(()=>Z(`providers.sections.delegation`)),a=J(()=>Z(`providers.form.delegates_hint`,{name:t(be)}));Q(n,{row:!0,get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=Nl(),c=u(a),d=e=>{{let n=J(()=>Z(`providers.form.delegates`,{name:t(be)}));_l(e,()=>t(q).delegates,()=>e=>t(q).delegates=e,()=>t(n),()=>null)}};r(c,e=>{t(he)||e(d)});var f=l(c,2),p=n=>{var i=Fl(),a=u(i);{let e=J(()=>Z(`providers.form.delegated_scopes`)),n=J(()=>t(he)?Z(`providers.form.server_grants`):`https://www.googleapis.com/auth/drive.readonly`);$(a,{get label(){return t(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get placeholder(){return t(n)},get value(){return t(q).delegatedScopes},set value(e){t(q).delegatedScopes=e}})}var c=l(a,2);{let e=J(()=>Z(`providers.form.delegation_params`));$(c,{get label(){return t(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`access_type=offline prompt=consent`,get value(){return t(q).delegationParams},set value(e){t(q).delegationParams=e}})}var d=l(c,2),f=o(d),p=l(f),m=G(p),h=l(p);Y(d);var g=l(d,2),_=n=>{var r=Pl(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`providers.facts.delegations_count`,{count:t(W).delegations})]),e(n,r)};r(g,e=>{t(W)&&e(_)}),s((e,t,n)=>{B(f,`${e??``} `),B(m,`masks:delegate:${t??``}`),B(h,`.
|
|
452
|
+
${n??``}`)},[()=>Z(`providers.form.delegation_asks`),()=>t(q).key.trim()||`key`,()=>Z(`providers.form.delegation_reconnect`)]),e(n,i)};r(f,e=>{(t(q).delegates||t(he))&&e(p)}),e(n,a)},$$slots:{default:!0}})}},h=R(i,`part`,3,null),g=mt(),_=[`email`,`email_verified`,`name`,`given_name`,`family_name`,`preferred_username`,`picture`].map(e=>[e,Z(`providers.claims.${e}`)]),v=[[``,Z(`providers.name_id_formats.any`)],[`urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`,Z(`providers.name_id_formats.persistent`)],[`urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`,Z(`providers.name_id_formats.email`)],[`urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`,Z(`providers.name_id_formats.unspecified`)]],y={domain:[Z(`providers.asked.domain`),`acme.okta.com`],tenant:[Z(`providers.asked.tenant`),`00000000-0000-0000-0000-000000000000`],realm:[Z(`providers.asked.realm`),`staff`]},T=`providerPresets { key name protocol asks needs defaults guide custom trustsEmail delegates delegatedScopes }`,E=`
|
|
453
|
+
query Provider($key: ID!) {
|
|
454
|
+
provider(key: $key) {
|
|
455
|
+
key name protocol preset authorizationUrl tokenUrl userinfoUrl emailsUrl clientId
|
|
456
|
+
scopes subjectClaim claims tokenAuthMethod responseMode teamId keyId
|
|
457
|
+
secretHeld privateKeyHeld connections signedIn archivedAt createdAt callbackUrl
|
|
458
|
+
issuer jwksUri role trustsEmail receivesSignals emailDomains signupScopes
|
|
459
|
+
idpEntityId idpSsoUrl idpCertificates metadataUrl metadataFetchedAt nameIdFormat spEntityId
|
|
460
|
+
delegates delegatedScopes delegationParams delegationScope resourceUrl registeredAt delegations
|
|
461
|
+
organization { key name }
|
|
462
|
+
}
|
|
463
|
+
connections(provider: $key) {
|
|
464
|
+
id subject label email emailVerified connectedAt signedInAt delegable
|
|
465
|
+
provider { key name }
|
|
466
|
+
actor { uuid identifier }
|
|
467
|
+
delegations { id releasedAt client { clientId name } }
|
|
468
|
+
}
|
|
469
|
+
${T}
|
|
470
|
+
}
|
|
471
|
+
`,O=[[`name`,`String`],[`protocol`,`String`],[`authorizationUrl`,`String`],[`tokenUrl`,`String`],[`userinfoUrl`,`String`],[`emailsUrl`,`String`],[`clientId`,`String`],[`clientSecret`,`String`],[`scopes`,`[String!]`],[`subjectClaim`,`String`],[`claims`,`JSON`],[`issuer`,`String`],[`jwksUri`,`String`],[`tokenAuthMethod`,`String`],[`responseMode`,`String`],[`teamId`,`String`],[`keyId`,`String`],[`privateKey`,`String`],[`idpEntityId`,`String`],[`idpSsoUrl`,`String`],[`idpCertificates`,`String`],[`metadataUrl`,`String`],[`nameIdFormat`,`String`],[`role`,`String`],[`trustsEmail`,`Boolean`],[`receivesSignals`,`Boolean`],[`emailDomains`,`[String!]`],[`signupScopes`,`[String!]`],[`delegates`,`Boolean`],[`delegatedScopes`,`[String!]`],[`delegationParams`,`JSON`],[`resourceUrl`,`String`]],k=e=>[...e,...O].map(([e,t])=>`$${e}: ${t}`).join(`, `),A=e=>[...e,...O].map(([e])=>`${e}: $${e}`).join(`, `),j=[[`key`,`ID!`],[`preset`,`ID`],[`presetValues`,`JSON`]],M=`
|
|
472
|
+
mutation Create(${k(j).replace(`$name: String`,`$name: String!`)}) {
|
|
473
|
+
createProvider(${A(j)}) { provider { key } }
|
|
474
|
+
}
|
|
475
|
+
`,N=`
|
|
476
|
+
mutation Update(${k([[`key`,`ID!`]])}) {
|
|
477
|
+
updateProvider(${A([[`key`,`ID!`]])}) { provider { key } }
|
|
478
|
+
}
|
|
479
|
+
`,F=e=>Object.entries(e??{}).map(([e,t])=>`${e}=${t}`).join(` `),ee=e=>({key:e.custom?``:e.key,name:e.custom?``:e.name,preset:e.custom?null:e.key,protocol:e.protocol,asked:{...e.defaults},authorizationUrl:``,tokenUrl:``,userinfoUrl:``,emailsUrl:``,clientId:``,clientSecret:``,scopes:``,subjectClaim:e.protocol===`oidc`?`sub`:e.protocol===`saml`?`name_id`:`id`,claims:Object.fromEntries(_.map(([e])=>[e,``])),issuer:``,jwksUri:``,tokenAuthMethod:e.needs.includes(`private_key`)?`signed_secret`:`client_secret_post`,responseMode:``,teamId:``,keyId:``,privateKey:``,idpEntityId:``,idpSsoUrl:``,idpCertificates:``,metadataUrl:``,metadataXml:``,nameIdFormat:``,role:`credential`,trustsEmail:!!e.trustsEmail,receivesSignals:!1,emailDomains:``,signupScopes:``,delegates:!!e.delegates,delegatedScopes:(e.delegatedScopes??[]).join(` `),delegationParams:``,resourceUrl:``}),te=e=>({...ee({key:e.key,name:e.name,protocol:e.protocol,needs:[],defaults:{},custom:!0}),key:e.key,name:e.name,preset:e.preset,authorizationUrl:e.authorizationUrl??``,tokenUrl:e.tokenUrl??``,userinfoUrl:e.userinfoUrl??``,emailsUrl:e.emailsUrl??``,clientId:e.clientId??``,scopes:e.scopes.join(` `),subjectClaim:e.subjectClaim,claims:{...Object.fromEntries(_.map(([e])=>[e,``])),...e.claims},issuer:e.issuer??``,jwksUri:e.jwksUri??``,tokenAuthMethod:e.tokenAuthMethod,responseMode:e.responseMode??``,teamId:e.teamId??``,keyId:e.keyId??``,idpEntityId:e.idpEntityId??``,idpSsoUrl:e.idpSsoUrl??``,idpCertificates:e.idpCertificates??``,metadataUrl:e.metadataUrl??``,nameIdFormat:e.nameIdFormat??``,role:e.role,trustsEmail:e.trustsEmail,receivesSignals:e.receivesSignals,emailDomains:e.emailDomains.join(` `),signupScopes:e.signupScopes.join(` `),delegates:e.delegates,delegatedScopes:e.delegatedScopes.join(` `),delegationParams:F(e.delegationParams),resourceUrl:e.resourceUrl??``}),ne=At(),W=w(null),K=w(C([])),ae=w(C([])),q=w(null),oe=w(``),se=w(!0),ce=w(!1),le=J(()=>i.providerKey===`new`),ue=J(()=>t(le)?t(ae).find(e=>e.key===h())??null:t(ae).find(e=>e.key===t(W)?.preset)??null),de=J(()=>!t(le)||!!t(ue)?.custom),fe=J(()=>t(q)?.protocol===`saml`),pe=J(()=>t(q)?.protocol===`oauth2`),me=J(()=>t(q)?.protocol===`oidc`),he=J(()=>t(q)?.protocol===`mcp`),ge=J(()=>t(q)?.tokenAuthMethod===`signed_secret`),_e=typeof window>`u`?``:window.location.origin,ve=J(()=>`${_e}/login/provider/${t(q)?.key?.trim()||`…`}/callback`),ye=J(()=>`${_e}/login/provider/${t(q)?.key?.trim()||`…`}/metadata`),be=J(()=>t(q)?.name.trim()||Z(`providers.form.the_provider`)),xe=J(()=>!(!t(q)||t(le)||JSON.stringify(t(q))===t(oe))),Se=J(()=>[[null,``,Z(`providers.parts.setup`)],!t(he)&&[`sign-in`,`/sign-in`,Z(`providers.parts.sign_in`)],!t(fe)&&[`clients`,`/clients`,Z(`providers.parts.clients`)],[`accounts`,`/accounts`,Z(`providers.parts.accounts`,{count:t(K).length})]].filter(Boolean)),Ce=J(()=>t(ae).filter(e=>!e.custom)),we=J(()=>t(ae).filter(e=>e.custom));async function Te(){S(se,!0);let e=await ne.attempt(()=>t(le)?i.api.query(`query Presets { ${T} }`):i.api.query(E,{key:i.providerKey}));S(se,!1),e&&(S(ae,e.providerPresets,!0),t(le)?(S(W,null),S(K,[],!0)):(S(W,e.provider,!0),S(K,e.connections,!0),S(q,t(W)?te(t(W)):null,!0),S(oe,JSON.stringify(t(q)),!0)))}b(()=>{i.providerKey,x(Te)}),b(()=>{if(!t(le))return;let e=t(ue);x(()=>{S(q,e?ee(e):null,!0)})});let Ee=e=>e?.trim()||null,De=e=>e.split(/[\s,]+/).filter(Boolean),Oe=e=>Object.fromEntries(De(e).map(e=>e.split(`=`)).filter(([e,t])=>e&&t!==void 0).map(([e,...t])=>[e,t.join(`=`)])),ke=()=>Object.fromEntries(Object.entries(t(q).claims).map(([e,t])=>[e,t?.trim()]).filter(([,e])=>e)),Ae=()=>({idpEntityId:Ee(t(q).idpEntityId),idpSsoUrl:Ee(t(q).idpSsoUrl),idpCertificates:Ee(t(q).idpCertificates),nameIdFormat:Ee(t(q).nameIdFormat)});function je(){let e={key:t(q).key.trim(),name:t(q).name.trim(),role:t(q).role,trustsEmail:!t(fe)&&t(q).trustsEmail,receivesSignals:t(me)?t(q).receivesSignals:!1,emailDomains:De(t(q).emailDomains),signupScopes:De(t(q).signupScopes),clientSecret:Ee(t(q).clientSecret),privateKey:Ee(t(q).privateKey),delegates:t(fe)?!1:t(he)||t(q).delegates,delegatedScopes:t(fe)?[]:De(t(q).delegatedScopes),delegationParams:t(fe)?{}:Oe(t(q).delegationParams)};return t(le)&&!t(de)?{...e,preset:t(q).preset,presetValues:t(q).asked,clientId:Ee(t(q).clientId),teamId:Ee(t(q).teamId),keyId:Ee(t(q).keyId),metadataUrl:Ee(t(q).metadataUrl),...t(fe)?Ae():{},...t(he)?{resourceUrl:Ee(t(q).resourceUrl)}:{}}:{...e,protocol:t(q).protocol,authorizationUrl:t(fe)?null:Ee(t(q).authorizationUrl),tokenUrl:t(fe)?null:Ee(t(q).tokenUrl),userinfoUrl:t(fe)?null:Ee(t(q).userinfoUrl),emailsUrl:t(pe)?Ee(t(q).emailsUrl):null,clientId:t(fe)?null:Ee(t(q).clientId),scopes:t(fe)?[]:De(t(q).scopes),subjectClaim:t(q).subjectClaim.trim(),claims:ke(),issuer:t(me)?Ee(t(q).issuer):null,jwksUri:t(me)?Ee(t(q).jwksUri):null,tokenAuthMethod:t(q).tokenAuthMethod,responseMode:Ee(t(q).responseMode),teamId:t(ge)?Ee(t(q).teamId):null,keyId:t(ge)?Ee(t(q).keyId):null,metadataUrl:t(fe)?Ee(t(q).metadataUrl):null,nameIdFormat:t(fe)?Ee(t(q).nameIdFormat):null,resourceUrl:t(he)?Ee(t(q).resourceUrl):null,...t(fe)?Ae():{idpEntityId:null,idpSsoUrl:null,idpCertificates:null}}}async function Me(){S(ce,!0);let e=await ne.attempt(()=>i.api.query(`
|
|
480
|
+
mutation Discover($issuer: String!) {
|
|
481
|
+
discoverProvider(issuer: $issuer) { issuer authorizationUrl tokenUrl userinfoUrl jwksUri }
|
|
482
|
+
}
|
|
483
|
+
`,{issuer:t(q).issuer.trim()}),Z(`providers.notices.discovered`));if(S(ce,!1),!e)return;let n=e.discoverProvider;t(q).issuer=n.issuer,t(q).authorizationUrl=n.authorizationUrl,t(q).tokenUrl=n.tokenUrl,t(q).jwksUri=n.jwksUri,t(q).userinfoUrl=n.userinfoUrl??t(q).userinfoUrl}async function Ne(){S(ce,!0);let e=await ne.attempt(()=>i.api.query(`
|
|
484
|
+
mutation Metadata($metadataUrl: String, $metadataXml: String) {
|
|
485
|
+
readSamlMetadata(metadataUrl: $metadataUrl, metadataXml: $metadataXml) { idpEntityId idpSsoUrl idpCertificates }
|
|
486
|
+
}
|
|
487
|
+
`,{metadataUrl:Ee(t(q).metadataUrl),metadataXml:Ee(t(q).metadataXml)}),Z(`providers.notices.metadata_read`));S(ce,!1),e&&(Object.assign(t(q),e.readSamlMetadata),t(q).metadataXml=``)}async function Pe(){S(ce,!0);let e=t(le),n=t(q).key.trim(),r=await ne.attempt(()=>i.api.query(e?M:N,je()),e?t(he)?Z(`providers.notices.registered`,{name:t(q).name}):Z(`providers.notices.added`,{name:t(q).name}):Z(`providers.notices.saved`,{name:t(q).name}));S(ce,!1),r&&(e?g.go(`/providers/${n}`):await Te())}let Fe=()=>{S(q,JSON.parse(t(oe)),!0)};async function Ie(e,n,r=null){(!r||confirm(r))&&await ne.attempt(()=>i.api.query(`mutation Act($key: ID!) { ${e}(key: $key) { provider { key } } }`,{key:t(W).key}),n)&&await Te()}let Le=()=>Ie(`archiveProvider`,Z(`providers.notices.archived`,{name:t(W).name}),Z(`providers.confirm.archive`,{name:t(W).name})),Re=()=>Ie(`restoreProvider`,Z(`providers.notices.restored`,{name:t(W).name})),ze=()=>Ie(`registerProvider`,Z(`providers.notices.reregistered`,{name:t(W).name}),Z(`providers.confirm.register`,{name:t(W).name})),Be=e=>navigator.clipboard?.writeText(e),Ve=J(()=>!t(fe)&&!t(he)&&!t(ge)&&(!t(le)||(t(ue)?.needs??[`client_secret`]).includes(`client_secret`))),He=J(()=>!t(q)?.key.trim()||!t(q).name.trim()?!1:t(le)&&!t(de)?(t(ue)?.asks??[]).every(e=>t(q).asked[e]?.trim()):t(fe)?t(q).idpEntityId.trim()&&t(q).idpSsoUrl.trim()&&t(q).idpCertificates.trim():t(he)?!t(le)||t(q).resourceUrl.trim():t(q).clientId.trim()&&t(q).authorizationUrl.trim()&&t(q).tokenUrl.trim()),Ue=J(()=>t(W)?[sl(t(W).protocol),t(W).protocol===`mcp`?Z(`providers.roles.never`):t(W).role===`delegate`?Z(`providers.roles.owns`):Z(`providers.roles.existing`)].join(` · `):null);var We=z(),Ge=u(We),Ke=n=>{{let i=J(()=>t(ue)?Z(`providers.form.add_title`,{name:t(ue).custom?sl(t(ue).protocol):t(ue).name}):Z(`providers.add`)),c=J(()=>({to:t(ue)?`/providers/new`:`/providers`,label:t(ue)?Z(`providers.picker.back`):Z(`providers.back`)})),h=J(()=>t(ue)?null:Z(`providers.picker.help`));Kn(n,{get title(){return t(i)},get back(){return t(c)},get lede(){return t(h)},children:(n,i)=>{var c=Nl(),h=u(c);Bn(h,{get feedback(){return ne.state}});var g=l(h,2),_=e=>{xt(e,{})},v=n=>{var i=z(),a=u(i);X(a,17,()=>[[Z(`providers.picker.known`),t(Ce)],[Z(`providers.picker.generic`),t(we)]],([e,t])=>e,(n,i)=>{var a=J(()=>re(t(i),2));let o=()=>t(a)[0],c=()=>t(a)[1];var d=z(),f=u(d),p=n=>{Q(n,{get title(){return o()},children:(n,r)=>{var i=Ll();X(i,21,c,e=>e.key,(n,r)=>{{let i=J(()=>`/providers/new/${t(r).key}`);yt(n,{get to(){return t(i)},class:`sheet sheet-press flex items-baseline justify-between gap-3 px-4 py-3 no-underline`,children:(n,i)=>{var a=Il(),o=u(a),c=G(o,!0),d=l(o,2),f=G(d,!0);s((e,t)=>{B(c,e),B(f,t)},[()=>t(r).custom?sl(t(r).protocol):t(r).name,()=>t(r).custom?``:sl(t(r).protocol)]),e(n,a)},$$slots:{default:!0}})}}),Y(i),e(n,i)},$$slots:{default:!0}})};r(f,e=>{c().length&&e(p)}),e(n,d)}),e(n,i)},y=n=>{var i=Rl(),c=o(i);f(c);var u=l(c,2),h=e=>{p(e)};r(u,e=>{t(he)||e(h)});var g=l(u,2),_=e=>{m(e)};r(g,e=>{t(fe)||e(_)});var v=l(g,2),y=o(v),b=G(y,!0);yt(l(y,2),{to:`/providers`,class:`btn btn-ghost btn-sm`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`providers.cancel`)]),e(t,r)},$$slots:{default:!0}}),Y(v),Y(i),s(e=>{y.disabled=t(ce)||!t(He),B(b,e)},[()=>t(ce)?Z(`providers.form.saving`):Z(`providers.form.add`)]),d(`click`,y,Pe),e(n,i)};r(g,e=>{t(se)?e(_):t(ue)?t(q)&&e(y,2):e(v,1)}),e(n,c)},$$slots:{default:!0}})}},qe=e=>{xt(e,{})},Je=t=>{var n=zl(),r=G(n,!0);s(e=>B(r,e),[()=>ne.state.failure??Z(`providers.missing`)]),e(t,n)},Ye=n=>{{let c=e=>{{let n=J(()=>ll(t(W)));wt(e,{get marks(){return t(n)}})}},g=J(()=>({to:`/providers`,label:Z(`providers.back`)}));Kn(n,{get title(){return t(W).name},get id(){return t(W).key},get back(){return t(g)},get lede(){return t(Ue)},after:c,children:(n,c)=>{var g=Kl(),_=u(g);Bn(_,{get feedback(){return ne.state}});var v=l(_,2),y=n=>{var r=Bl(),i=o(r),a=o(i),c=G(a,!0);Y(i);var u=l(i,2),f=o(u),p=G(f,!0);Y(u),Y(r),s((e,t)=>{B(c,e),B(p,t)},[()=>Z(`providers.callouts.archived`,{day:zt(t(W).archivedAt)}),()=>Z(`providers.restore`)]),d(`click`,f,Re),e(n,r)},b=n=>{var r=Vl(),i=o(r),a=o(i),c=G(a,!0),u=l(a,2),d=G(u,!0);Y(i),Y(r),s((e,t)=>{B(c,e),B(d,t)},[()=>Z(`providers.callouts.no_secret`),()=>Z(`providers.callouts.no_secret_detail`,{name:t(W).name})]),e(n,r)},x=J(()=>cl(t(W)));r(v,e=>{t(W).archivedAt?e(y):t(x)&&e(b,1)});var S=l(v,2),C=n=>{var r=Hl(),i=o(r),c=o(i),u=o(c),d=l(u);{let n=J(()=>`/organizations/${t(W).organization.key}`);yt(d,{get to(){return t(n)},children:(n,r)=>{H();var i=a();s(()=>B(i,t(W).organization.name)),e(n,i)},$$slots:{default:!0}})}var f=l(d);Y(c),Y(i),Y(r),s((e,t)=>{B(u,`${e??``} `),B(f,`.
|
|
488
|
+
${t??``}`)},[()=>Z(`providers.callouts.organization_lead`),()=>Z(`providers.callouts.organization_rest`)]),e(n,r)};r(S,e=>{t(W).organization&&e(C)});var w=l(S,2);{let e=J(()=>`/providers/${t(W).key}`),n=J(()=>Z(`providers.parts.label`));ci(w,{get base(){return t(e)},get part(){return h()},get parts(){return t(Se)},get label(){return t(n)}})}var T=l(w,2),E=o(T),D=e=>{p(e)},O=e=>{m(e)},k=e=>{Q(e,{children:(e,n)=>{vr(e,{get api(){return i.api},get feedback(){return ne},get rows(){return t(K)},onchange:Te,showActor:!0})},$$slots:{default:!0}})},A=n=>{var i=Nl(),a=u(i);f(a);var c=l(a,2),p=n=>{{let i=J(()=>Z(`providers.danger`)),a=J(()=>t(he)?Z(`providers.danger_lede_mcp`):Z(`providers.danger_lede`));Q(n,{row:!0,get title(){return t(i)},get lede(){return t(a)},children:(n,i)=>{var a=Wl(),c=o(a),u=t=>{var n=Ul(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`providers.register`)]),d(`click`,n,ze),e(t,n)};r(c,e=>{t(he)&&e(u)});var f=l(c,2),p=G(f,!0);Y(a),s(e=>B(p,e),[()=>Z(`providers.archive`)]),d(`click`,f,Le),e(n,a)},$$slots:{default:!0}})}};r(c,e=>{t(W).archivedAt||e(p)}),e(n,i)};r(E,e=>{h()===`sign-in`&&!t(he)?e(D):h()===`clients`&&!t(fe)?e(O,1):h()===`accounts`?e(k,2):e(A,-1)}),Y(T);var j=l(T,2),M=n=>{var r=Gl(),i=o(r),a=G(i,!0),c=l(i,2),u=o(c),f=G(u,!0),p=l(u,2),m=G(p,!0);Y(c),Y(r),s((e,n,i,o)=>{P(r,`aria-label`,e),B(a,n),B(f,i),p.disabled=t(ce)||!t(He),B(m,o)},[()=>Z(`providers.unsaved`),()=>Z(`providers.unsaved`),()=>Z(`providers.discard`),()=>t(ce)?Z(`providers.form.saving`):Z(`providers.form.save`)]),d(`click`,u,Fe),d(`click`,p,Pe),e(n,r)};r(j,e=>{t(xe)&&e(M)}),e(n,g)},$$slots:{after:!0,default:!0}})}};r(Ge,e=>{t(le)?e(Ke):t(se)&&!t(W)?e(qe,1):t(W)?e(Ye,-1):e(Je,2)}),e(n,We),D()}c([`change`,`click`]);var Jl=f(`<option> </option>`),Yl=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label>`),Xl=f(`<p class="hint"> </p>`),Zl=f(`<div class="flex flex-col gap-1 sm:col-span-2"><!> <!></div>`),Ql=f(`<div class="flex flex-col gap-1"><!> <!></div>`),$l=f(`<!> <div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <div class="grid gap-3 sm:grid-cols-2"></div> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),eu=f(`<button type="button" class="btn btn-sm"> </button>`),tu=f(`<span class="badge badge-success badge-sm"> </span>`),nu=f(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),ru=f(`<div class="flex flex-col gap-3 sheet p-3"><div class="flex flex-wrap items-center justify-between gap-2"><div class="flex min-w-0 flex-col"><span class="font-medium"> <!></span> <span class="hint"> <span class="font-mono"> </span> </span></div> <div class="flex flex-wrap gap-2"><!> <button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div> <!></div>`),iu=f(`<div class="flex flex-wrap items-center justify-between gap-2"><span class="text-sm"> <span class="hint"> </span></span> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`),au=f(`<!> <!> <!>`,1),ou=f(`<div class="console-page"><!> <!></div>`);function su(n,i){U(i,!0);let a=`key name kind service label primary settings secretsHeld archivedAt createdAt`,c=`
|
|
489
|
+
query Senders {
|
|
490
|
+
active: senders { ${a} }
|
|
491
|
+
archived: senders(archived: true) { ${a} }
|
|
492
|
+
senderServices {
|
|
493
|
+
service kind label
|
|
494
|
+
fields { key label type secret required options default hint }
|
|
495
|
+
}
|
|
496
|
+
tenant { mails texts }
|
|
497
|
+
}
|
|
498
|
+
`,f=[{kind:`mail`,title:Z(`senders.kinds.mail.title`),lede:Z(`senders.kinds.mail.lede`),idle:Z(`senders.kinds.mail.idle`),to:`you@example.com`},{kind:`sms`,title:Z(`senders.kinds.sms.title`),lede:Z(`senders.kinds.sms.lede`),idle:Z(`senders.kinds.sms.idle`),to:`+15551234567`}],p=At(),m=w(null),h=w(!0),g=w(!1),_=w(null),v=w(null),y=C({}),b=J(()=>t(m)?.senderServices??[]),x=e=>t(b).find(t=>t.service===e),E=(e,t)=>(e??[]).filter(e=>e.kind===t);async function O(){S(h,!0);let e=await p.attempt(()=>i.api.query(c));S(h,!1),e&&S(m,e,!0)}O();function k(e){return Object.fromEntries(e.fields.map(e=>[e.key,e.secret?``:e.default??(e.type!==`boolean`&&``)]))}function A(e){let n=t(b).find(t=>t.kind===e);S(_,``),S(v,{kind:e,service:n.service,key:``,name:``,primary:E(t(m).active,e).length===0,config:k(n)},!0),p.clear()}function j(e){let n=x(e);t(v).service=e,t(v).config=k(n),t(v).key||(t(v).key=e.replace(/_/g,`-`)),t(v).name||(t(v).name=n.label)}function M(e){let t=x(e.service);S(_,e.key,!0),S(v,{kind:e.kind,service:e.service,key:e.key,name:e.name,primary:e.primary,secretsHeld:e.secretsHeld,config:Object.fromEntries(t.fields.map(t=>[t.key,t.secret?``:e.settings[t.key]??t.default??``]))},!0),p.clear()}function N(){S(_,null),S(v,null),p.clear()}function P(){let e=x(t(v).service);return Object.fromEntries(e.fields.filter(e=>!(e.secret&&!t(v).config[e.key])).map(e=>[e.key,e.type===`integer`?Number(t(v).config[e.key])||null:t(v).config[e.key]]))}async function F(){S(g,!0);let e=t(_)===``,n=await p.attempt(()=>e?i.api.query(`mutation Create($key: ID!, $service: String!, $name: String!, $config: JSON, $primary: Boolean) {
|
|
499
|
+
createSender(key: $key, service: $service, name: $name, config: $config, primary: $primary) {
|
|
500
|
+
sender { key }
|
|
501
|
+
}
|
|
502
|
+
}`,{key:t(v).key.trim(),service:t(v).service,name:t(v).name.trim(),config:P(),primary:t(v).primary}):i.api.query(`mutation Update($key: ID!, $name: String, $config: JSON, $primary: Boolean) {
|
|
503
|
+
updateSender(key: $key, name: $name, config: $config, primary: $primary) {
|
|
504
|
+
sender { key }
|
|
505
|
+
}
|
|
506
|
+
}`,{key:t(v).key,name:t(v).name.trim(),config:P(),primary:t(v).primary}),Z(e?`senders.added`:`senders.saved`,{name:t(v).name}));S(g,!1),n&&(N(),await O())}async function R(e,t,n,r=null){(!r||confirm(r))&&await p.attempt(()=>i.api.query(`mutation Act($key: ID!) { ${e}(key: $key) { sender { key } } }`,{key:t.key}),n)&&await O()}async function ee(e){await p.attempt(()=>i.api.query(`mutation Primary($key: ID!) { updateSender(key: $key, primary: true) { sender { key } } }`,{key:e.key}),Z(`senders.primary_notice`,{name:e.name}))&&await O()}async function V(e){let t=(y[e.key]??``).trim();if(!t)return;S(g,!0);let n=await p.attempt(()=>i.api.query(`mutation Test($key: ID!, $to: String!) { testSender(key: $key, to: $to) { delivered failure } }`,{key:e.key,to:t}));S(g,!1),n&&(n.testSender.delivered?p.say(Z(`senders.tested`,{name:e.name,to:t})):p.blame(n.testSender.failure))}let H=J(()=>{if(!t(v))return!1;let e=x(t(v).service);return t(v).key.trim()&&t(v).name.trim()&&e.fields.every(e=>!e.required||e.type===`boolean`||e.secret&&t(v).secretsHeld?.includes(e.key)||String(t(v).config[e.key]??``).trim())});var te=ou(),ne=o(te);Bn(ne,{get feedback(){return p.state}});var W=l(ne,2),re=e=>{xt(e,{})},ie=n=>{var i=au(),a=u(i),c=n=>{{let i=J(()=>t(_)===``?Z(`senders.form.add`):Z(`senders.form.edit`,{name:t(v).name}));Q(n,{get title(){return t(i)},children:(n,i)=>{var a=$l(),c=u(a),f=n=>{var r=Yl(),i=o(r),a=G(i,!0),c=l(i,2);X(c,21,()=>t(b).filter(e=>e.kind===t(v).kind),e=>e.service,(n,r)=>{var i=Jl(),a=G(i,!0),o={};s(()=>{B(a,t(r).label),o!==(o=t(r).service)&&(i.value=(i.__value=o)??``)}),e(n,i)}),Y(c);var u;I(c),Y(r),s(e=>{B(a,e),u!==(u=t(v).service)&&(c.value=(c.__value=u)??``,T(c,u))},[()=>Z(`senders.form.service`)]),d(`change`,c,e=>j(e.currentTarget.value)),e(n,r)};r(c,e=>{t(_)===``&&e(f)});var p=l(c,2),m=o(p);{let e=J(()=>Z(`senders.form.key`)),n=J(()=>t(_)!==``);$(m,{get label(){return t(e)},get disabled(){return t(n)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return t(v).key},set value(e){t(v).key=e}})}var h=l(m,2);{let e=J(()=>Z(`senders.form.name`));$(h,{get label(){return t(e)},get value(){return t(v).name},set value(e){t(v).name=e}})}Y(p);var y=l(p,2);X(y,21,()=>x(t(v).service).fields,e=>e.key,(n,i)=>{var a=z(),c=u(a),d=n=>{var a=Zl(),c=o(a);fa(c,{get label(){return t(i).label},get checked(){return t(v).config[t(i).key]},set checked(e){t(v).config[t(i).key]=e}});var u=l(c,2),d=n=>{var r=Xl(),a=G(r,!0);s(()=>B(a,t(i).hint)),e(n,r)};r(u,e=>{t(i).hint&&e(d)}),Y(a),e(n,a)},f=n=>{var r=Yl(),a=o(r),c=G(a,!0),u=l(a,2);X(u,20,()=>t(i).options,e=>e,(t,n)=>{var r=Jl(),i=G(r,!0),a={};s(()=>{B(i,n),a!==(a=n)&&(r.value=(r.__value=a)??``)}),e(t,r)}),Y(u),I(u),Y(r),s(()=>B(c,t(i).label)),L(u,()=>t(v).config[t(i).key],e=>t(v).config[t(i).key]=e),e(n,r)},p=n=>{var a=Ql(),c=o(a);{let e=J(()=>t(i).required?t(i).label:Z(`senders.form.optional`,{label:t(i).label})),n=J(()=>t(i).secret?`password`:t(i).type===`integer`?`number`:`text`),r=J(()=>t(i).secret&&t(v).secretsHeld?.includes(t(i).key)?Z(`senders.form.unchanged`):``);$(c,{get label(){return t(e)},get type(){return t(n)},autocomplete:`off`,autocapitalize:`none`,spellcheck:`false`,get placeholder(){return t(r)},get value(){return t(v).config[t(i).key]},set value(e){t(v).config[t(i).key]=e}})}var u=l(c,2),d=n=>{var r=Xl(),a=G(r,!0);s(()=>B(a,t(i).hint)),e(n,r)};r(u,e=>{t(i).hint&&e(d)}),Y(a),e(n,a)};r(c,e=>{t(i).type===`boolean`?e(d):t(i).options?e(f,1):e(p,-1)}),e(n,a)}),Y(y);var S=l(y,2);{let e=J(()=>Z(`senders.form.primary`));fa(S,{get label(){return t(e)},get checked(){return t(v).primary},set checked(e){t(v).primary=e}})}var C=l(S,2),w=o(C),E=G(w,!0),D=l(w,2),O=G(D,!0);Y(C),s((e,n)=>{w.disabled=t(g)||!t(H),B(E,e),B(O,n)},[()=>t(_)===``?Z(`senders.form.create`):Z(`senders.form.save`),()=>Z(`senders.form.cancel`)]),d(`click`,w,F),d(`click`,D,N),e(n,a)},$$slots:{default:!0}})}};r(a,e=>{t(v)&&e(c)});var p=l(a,2);X(p,17,()=>f,e=>e.kind,(n,i)=>{let a=J(()=>E(t(m).active,t(i).kind));{let c=n=>{var r=eu(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`senders.list.add`)]),d(`click`,r,()=>A(t(i).kind)),e(n,r)},f=J(()=>t(a).length?t(i).lede:t(i).idle);Q(n,{get title(){return t(i).title},get lede(){return t(f)},actions:c,children:(n,c)=>{var f=z(),p=u(f);X(p,17,()=>t(a),e=>e.key,(n,a)=>{var c=ru(),u=o(c),f=o(u),p=o(f),m=o(p),h=l(m),g=t=>{var n=tu(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`senders.list.primary`)]),e(t,n)};r(h,e=>{t(a).primary&&e(g)}),Y(p);var _=l(p,2),v=o(_),b=l(v),x=G(b,!0),S=l(b);Y(_),Y(f);var C=l(f,2),w=o(C),T=n=>{var r=nu(),i=G(r,!0);s(e=>B(i,e),[()=>Z(`senders.list.make_primary`)]),d(`click`,r,()=>ee(t(a))),e(n,r)};r(w,e=>{t(a).primary||e(T)});var E=l(w,2),D=G(E,!0),O=l(E,2),k=G(O,!0);Y(C),Y(u);var A=l(u,2);{let e=J(()=>Z(`senders.list.test_to`)),n=J(()=>Z(`senders.list.test`));$(A,{get label(){return t(e)},get placeholder(){return t(i).to},get save(){return t(n)},onsave:()=>V(t(a)),get value(){return y[t(a).key]},set value(e){y[t(a).key]=e}})}Y(c),s((e,n,r)=>{B(m,`${t(a).name??``} `),B(v,`${t(a).label??``} · `),B(x,t(a).key),B(S,` · ${e??``}`),B(D,n),B(k,r)},[()=>Z(`senders.list.added`,{day:zt(t(a).createdAt)}),()=>Z(`senders.list.edit`),()=>Z(`senders.list.archive`)]),d(`click`,E,()=>M(t(a))),d(`click`,O,()=>R(`archiveSender`,t(a),Z(`senders.archived_notice`,{name:t(a).name}),Z(`senders.archive_confirm`,{name:t(a).name}))),e(n,c)}),e(n,f)},$$slots:{actions:!0,default:!0}})}});var h=l(p,2),S=n=>{{let r=J(()=>Z(`senders.archived.title`));Q(n,{get title(){return t(r)},children:(n,r)=>{var i=z(),a=u(i);X(a,17,()=>t(m).archived,e=>e.key,(n,r)=>{var i=iu(),a=o(i),c=o(a),u=l(c),f=G(u);Y(a);var p=l(a,2),m=G(p,!0);Y(i),s(e=>{B(c,`${t(r).name??``} `),B(f,`${t(r).label??``} · ${t(r).kind??``}`),B(m,e)},[()=>Z(`senders.archived.restore`)]),d(`click`,p,()=>R(`restoreSender`,t(r),Z(`senders.restored`,{name:t(r).name}))),e(n,i)}),e(n,i)},$$slots:{default:!0}})}};r(h,e=>{t(m).archived.length&&e(S)}),e(n,i)};r(W,e=>{t(h)&&!t(m)?e(re):t(m)&&e(ie,1)}),Y(te),e(n,te),D()}c([`change`,`click`]);var cu=f(`<button type="button" class="btn btn-sm btn-ghost"> </button>`),lu=f(`<details class="mail-template"><summary class="term"> </summary> <form class="flex flex-col gap-3 pt-3"><!> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full" rows="4" maxlength="2000"></textarea> <span class="hint"> <!></span></label> <div class="flex gap-2"><button type="submit" class="btn btn-sm btn-primary"> </button> <!></div></form></details>`);function uu(n,i){U(i,!0);let c=At(),u=w(C(x(()=>i.template.subject)??``)),f=w(C(x(()=>i.template.message)??``)),p=w(!1),m=J(()=>i.template.kind===`signature`),h=J(()=>!!(i.template.subject||i.template.message)),g=J(()=>i.template.placeholders.map(e=>`{{${e}}}`).join(`, `));async function v(e=!1){S(p,!0);let n=await c.attempt(()=>i.api.query(`
|
|
507
|
+
mutation Word($kind: ID!, $subject: String, $message: String) {
|
|
508
|
+
updateMailTemplate(kind: $kind, subject: $subject, message: $message) { mailTemplate { kind } }
|
|
509
|
+
}
|
|
510
|
+
`,{kind:i.template.kind,subject:e||t(m)?``:t(u),message:e?``:t(f)}),Z(e?`mail_template.reset`:`mail_template.saved`,{title:i.title}));S(p,!1),n&&i.onsaved?.()}var y=lu(),b=o(y),T=G(b),E=l(b,2),O=o(E);Bn(O,{get feedback(){return c.state}});var k=l(O,2),A=e=>{{let n=J(()=>Z(`mail_template.subject`)),r=J(()=>Z(`mail_template.subject_placeholder`));$(e,{get label(){return t(n)},maxlength:`150`,get placeholder(){return t(r)},get value(){return t(u)},set value(e){S(u,e,!0)}})}};r(k,e=>{t(m)||e(A)});var j=l(k,2),M=o(j),N=G(M,!0),F=l(M,2);ie(F);var I=l(F,2),L=o(I),R=l(L),ee=t=>{var n=a();s(e=>B(n,e),[()=>Z(`mail_template.hint_more`)]),e(t,n)};r(R,e=>{t(m)||e(ee)}),Y(I),Y(j);var z=l(j,2),H=o(z),te=G(H,!0),ne=l(H,2),W=n=>{var r=cu(),i=G(r,!0);s(e=>{r.disabled=t(p),B(i,e)},[()=>Z(`mail_template.use_default`)]),d(`click`,r,()=>v(!0)),e(n,r)};r(ne,e=>{t(h)&&e(W)}),Y(z),Y(E),Y(y),s((e,n,r,i,a,o)=>{y.open=t(h)||void 0,B(T,`${e??``}${n??``}`),B(N,r),P(F,`placeholder`,i),B(L,`${a??``} `),H.disabled=t(p),B(te,o)},[()=>Z(t(m)?`mail_template.signature`:`mail_template.template`),()=>t(h)?Z(`mail_template.customized`):``,()=>Z(t(m)?`mail_template.closing`:`mail_template.opening`),()=>Z(t(m)?`mail_template.closing_placeholder`:`mail_template.opening_placeholder`),()=>Z(`mail_template.hint`,{names:t(g)}),()=>Z(`mail_template.save`)]),_(`submit`,E,e=>{e.preventDefault(),v()}),V(F,()=>t(f),e=>S(f,e)),e(n,y),D()}c([`click`]);var du=f(`<option> </option>`),fu=f(`<optgroup></optgroup>`),pu=f(`<select class="select select-sm w-full"><option> </option><!></select>`),mu=f(`<button type="button" class="mail-item"> </button>`),hu=f(`<div class="mail-group"><div class="flex items-center gap-2"><span class="term"> </span> <!></div> <!> <!></div>`),gu=f(`<iframe class="mail-frame" sandbox="allow-same-origin"></iframe>`),_u=f(`<pre class="mail-text"> </pre>`),vu=f(`<div class="mail"><div class="mail-pick"><select class="select select-sm w-full"></select> <!></div> <nav class="mail-list"></nav> <article class="mail-view"><header class="mail-head"><div class="flex min-w-0 flex-col gap-0.5"><h2 class="mail-subject"> </h2> <p class="hint"> </p></div> <div class="range" role="group"><button type="button"> </button> <button type="button"> </button></div></header> <div class="mail-words"><!> <!></div> <!></article></div>`),yu=f(`<div class="console-page"><!></div>`);function bu(n,a){U(a,!0);let c=[`sign_in`,`manage`,`account`,`system`],f=e=>e===`invitation_organization`?`invitation`:e,p=w(``),m=w(0),h=w(null),v=w(`html`);function y(e){let t=e.currentTarget;t.style.height=`${t.contentDocument.documentElement.scrollHeight}px`}var b=yu(),x=o(b);i(x,()=>`${t(p)}:${t(m)}`,n=>{Nc(n,{load:()=>a.api.query(`
|
|
511
|
+
query MailPreviews($client: ID) {
|
|
512
|
+
mailPreviews(client: $client) { key name journey heading subject from to html text }
|
|
513
|
+
clients { clientId name approvedAt }
|
|
514
|
+
mailTemplates { kind subject message placeholders }
|
|
515
|
+
}
|
|
516
|
+
`,{client:t(p)||null}),children:(n,b=F)=>{let x=J(()=>b().mailPreviews),C=J(()=>t(x).find(e=>e.key===t(h))??t(x)[0]),w=J(()=>Object.fromEntries(b().mailTemplates.map(e=>[e.kind,e]))),E=J(()=>t(w)[f(t(C).key)]);var D=vu(),O=o(D),k=o(O);X(k,20,()=>c,e=>e,(n,i)=>{let a=J(()=>t(x).filter(e=>e.journey===i));var o=z(),c=u(o),l=n=>{var r=fu();X(r,21,()=>t(a),e=>e.key,(n,r)=>{var i=du(),a=G(i,!0),o={};s(()=>{B(a,t(r).name),o!==(o=t(r).key)&&(i.value=(i.__value=o)??``)}),e(n,i)}),Y(r),s(e=>P(r,`label`,e),[()=>Z(`emails.groups.${i}.title`)]),e(n,r)};r(c,e=>{t(a).length&&e(l)}),e(n,o)}),Y(k);var A;I(k);var j=l(k,2),M=n=>{var r=pu(),i=o(r),a=G(i,!0);i.value=i.__value=``;var c=l(i);X(c,17,()=>b().clients,e=>e.clientId,(n,r)=>{var i=du(),a=G(i,!0),o={};s(e=>{B(a,e),o!==(o=t(r).clientId)&&(i.value=(i.__value=o)??``)},[()=>t(r).approvedAt?t(r).name:Z(`emails.not_approved`,{name:t(r).name})]),e(n,i)}),Y(r);var u;I(r),s((e,n)=>{P(r,`aria-label`,e),B(a,n),u!==(u=t(p))&&(r.value=(r.__value=u)??``,T(r,u))},[()=>Z(`emails.app`),()=>Z(`emails.no_app`)]),d(`change`,r,e=>S(p,e.currentTarget.value,!0)),e(n,r)};r(j,e=>{t(C).journey===`sign_in`&&e(M)}),Y(O);var N=l(O,2);X(N,20,()=>c,e=>e,(n,i)=>{let a=J(()=>t(x).filter(e=>e.journey===i));var c=z(),f=u(c),m=n=>{var c=hu(),u=o(c),f=o(u),m=G(f,!0),g=l(f,2);{let e=J(()=>Z(`emails.groups.${i}.help`)),n=J(()=>Z(`emails.groups.${i}.about`));Wt(g,{get text(){return t(e)},get label(){return t(n)}})}Y(u);var _=l(u,2),v=n=>{var r=pu(),i=o(r),a=G(i,!0);i.value=i.__value=``;var c=l(i);X(c,17,()=>b().clients,e=>e.clientId,(n,r)=>{var i=du(),a=G(i,!0),o={};s(e=>{B(a,e),o!==(o=t(r).clientId)&&(i.value=(i.__value=o)??``)},[()=>t(r).approvedAt?t(r).name:Z(`emails.not_approved`,{name:t(r).name})]),e(n,i)}),Y(r);var u;I(r),s((e,n)=>{P(r,`aria-label`,e),B(a,n),u!==(u=t(p))&&(r.value=(r.__value=u)??``,T(r,u))},[()=>Z(`emails.app`),()=>Z(`emails.no_app`)]),d(`change`,r,e=>S(p,e.currentTarget.value,!0)),e(n,r)};r(_,e=>{i===`sign_in`&&e(v)});var y=l(_,2);X(y,17,()=>t(a),e=>e.key,(n,r)=>{var i=mu(),a=G(i,!0);s(()=>{P(i,`aria-current`,t(r).key===t(C).key?`true`:void 0),B(a,t(r).name)}),d(`click`,i,()=>S(h,t(r).key,!0)),e(n,i)}),Y(c),s(e=>B(m,e),[()=>Z(`emails.groups.${i}.title`)]),e(n,c)};r(f,e=>{t(a).length&&e(m)}),e(n,c)}),Y(N);var L=l(N,2),R=o(L),ee=o(R),V=o(ee),H=G(V,!0),te=l(V,2),ne=G(te,!0);Y(ee);var U=l(ee,2),W=o(U),re=G(W,!0),ie=l(W,2),K=G(ie,!0);Y(U),Y(R);var ae=l(R,2),q=o(ae),oe=n=>{var r=z(),o=u(r);i(o,()=>t(E).kind,e=>{uu(e,{get api(){return a.api},get template(){return t(E)},get title(){return t(C).name},onsaved:()=>g(m)})}),e(n,r)};r(q,e=>{t(E)&&e(oe)});var se=l(q,2);{let e=J(()=>Z(`emails.signature`));uu(se,{get api(){return a.api},get template(){return t(w).signature},get title(){return t(e)},onsaved:()=>g(m)})}Y(ae);var ce=l(ae,2),ue=n=>{var r=gu();s(()=>{P(r,`title`,t(C).subject),P(r,`srcdoc`,t(C).html)}),_(`load`,r,y),le(r),e(n,r)},de=n=>{var r=_u(),i=G(r,!0);s(()=>B(i,t(C).text??``)),e(n,r)};r(ce,e=>{t(v)===`html`&&t(C).html?e(ue):e(de,-1)}),Y(L),Y(D),s((e,n,r,i,a,o)=>{P(k,`aria-label`,e),A!==(A=t(C).key)&&(k.value=(k.__value=A)??``,T(k,A)),P(N,`aria-label`,n),B(H,t(C).subject),B(ne,r),P(U,`aria-label`,i),P(W,`aria-pressed`,t(v)===`html`),B(re,a),P(ie,`aria-pressed`,t(v)===`text`),B(K,o)},[()=>Z(`emails.list`),()=>Z(`emails.list`),()=>Z(`emails.headed`,{heading:t(C).heading,from:t(C).from||Z(`emails.no_sender`),to:t(C).to}),()=>Z(`emails.part`),()=>Z(`emails.html`),()=>Z(`emails.text`)]),d(`change`,k,e=>S(h,e.currentTarget.value,!0)),d(`click`,W,()=>S(v,`html`)),d(`click`,ie,()=>S(v,`text`)),e(n,D)},$$slots:{default:!0}})}),Y(b),e(n,b),D()}c([`change`,`click`]);var xu=f(`<nav class="settings-tabs"><!> <!></nav> <!>`,1);function Su(n,i){U(i,!0);let c=R(i,`part`,3,null),d=J(()=>c()===`templates`);{let c=J(()=>Z(`messages.title`)),f=J(()=>Z(t(d)?`messages.templates.lede`:`messages.sending.lede`));Kn(n,{get title(){return t(c)},get lede(){return t(f)},children:(n,c)=>{var f=xu(),p=u(f),m=o(p);{let n=J(()=>t(d)?``:`settings-tab-on`);yt(m,{to:`/messages`,get class(){return`settings-tab ${t(n)??``}`},children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`messages.sending.title`)]),e(t,r)},$$slots:{default:!0}})}var h=l(m,2);{let n=J(()=>t(d)?`settings-tab-on`:``);yt(h,{to:`/messages/templates`,get class(){return`settings-tab ${t(n)??``}`},children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`messages.templates.title`)]),e(t,r)},$$slots:{default:!0}})}Y(p);var g=l(p,2),_=e=>{bu(e,{get api(){return i.api}})},v=e=>{su(e,{get api(){return i.api}})};r(g,e=>{t(d)?e(_):e(v,-1)}),s(e=>P(p,`aria-label`,e),[()=>Z(`messages.parts`)]),e(n,f)},$$slots:{default:!0}})}D()}var Cu=f(`<input class="input input-sm w-full font-mono" readonly=""/> <div><button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),wu=f(`<div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea w-full font-mono" rows="4" placeholder="session.started
|
|
517
|
+
actor.deleted"></textarea> <p class="hint"> </p></label> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),Tu=f(`<button type="button" class="btn btn-sm"> </button>`),Eu=f(`<span class="text-sm text-error"> </span>`),Du=f(`<span class="hint"> </span>`),Ou=f(`<div class="flex flex-col gap-3 sheet p-3"><div class="flex flex-wrap items-center justify-between gap-2"><div class="flex min-w-0 flex-col"><span class="font-medium"> </span> <span class="hint break-all"><span class="font-mono"> </span> </span> <span class="hint"> </span> <!></div> <div class="flex flex-wrap gap-2"><button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div></div>`),ku=f(`<div class="flex flex-wrap items-center justify-between gap-2"><span class="text-sm"> <span class="hint"> </span></span> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`),Au=f(`<!> <!> <!> <!>`,1),ju=f(`<!> <!> <!>`,1);function Mu(n,i){U(i,!0);let a=`key name url actions lastDeliveredAt lastFailure archivedAt createdAt organization { key name }`,c=`
|
|
518
|
+
query Streams {
|
|
519
|
+
active: eventStreams { ${a} }
|
|
520
|
+
archived: eventStreams(archived: true) { ${a} }
|
|
521
|
+
organizations { key name }
|
|
522
|
+
}
|
|
523
|
+
`,f=At(),p=w(null),m=w(!0),h=w(!1),g=w(null),v=w(null),y=w(null);async function b(){S(m,!0);let e=await f.attempt(()=>i.api.query(c));S(m,!1),e&&S(p,e,!0)}b();let x=e=>e.split(/[\s,]+/).map(e=>e.trim()).filter(Boolean);function C(){S(g,``),S(v,{key:``,name:``,url:``,actions:``,organization:``},!0),S(y,null),f.clear()}function T(e){S(g,e.key,!0),S(v,{key:e.key,name:e.name,url:e.url,actions:e.actions.join(`
|
|
524
|
+
`),organization:e.organization?.key??``},!0),S(y,null),f.clear()}function E(){S(g,null),S(v,null),f.clear()}async function O(){S(h,!0);let e=t(g)===``,n={key:t(v).key.trim(),name:t(v).name.trim(),url:t(v).url.trim(),actions:x(t(v).actions),organization:t(v).organization},r=await f.attempt(()=>e?i.api.query(`mutation Create($key: ID!, $name: String!, $url: String!, $actions: [String!], $organization: ID) {
|
|
525
|
+
createEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) { secret }
|
|
526
|
+
}`,n):i.api.query(`mutation Update($key: ID!, $name: String, $url: String, $actions: [String!], $organization: ID) {
|
|
527
|
+
updateEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) {
|
|
528
|
+
eventStream { key }
|
|
529
|
+
}
|
|
530
|
+
}`,n),Z(e?`streams.added`:`streams.saved`,{name:t(v).name}));S(h,!1),r&&(S(y,e?r.createEventStream.secret:null,!0),E(),await b())}async function k(e,t,n,r=null){(!r||confirm(r))&&await f.attempt(()=>i.api.query(`mutation Act($key: ID!) { ${e}(key: $key) { eventStream { key } } }`,{key:t.key}),n)&&await b()}async function A(e){if(!confirm(Z(`streams.rotate_confirm`,{name:e.name})))return;let t=await f.attempt(()=>i.api.query(`mutation Rotate($key: ID!) { rotateEventStreamSecret(key: $key) { secret } }`,{key:e.key}));t&&S(y,t.rotateEventStreamSecret.secret,!0)}async function M(e){S(h,!0);let t=await f.attempt(()=>i.api.query(`mutation Test($key: ID!) { testEventStream(key: $key) { delivered failure } }`,{key:e.key}));S(h,!1),t&&(t.testEventStream.delivered?f.say(Z(`streams.tested`,{name:e.name})):f.blame(t.testEventStream.failure),await b())}let N=J(()=>t(v)?.key.trim()&&t(v).name.trim()&&t(v).url.trim());{let i=J(()=>Z(`activity.title`));Kn(n,{get title(){return t(i)},children:(n,i)=>{var a=ju(),c=u(a);Qc(c,{part:`streams`});var b=l(c,2);Bn(b,{get feedback(){return f.state}});var x=l(b,2),w=e=>{xt(e,{})},D=n=>{var i=Au(),a=u(i),c=n=>{{let r=J(()=>Z(`streams.secret.title`)),i=J(()=>Z(`streams.secret.lede`));Q(n,{get title(){return t(r)},get lede(){return t(i)},children:(n,r)=>{var i=Cu(),a=u(i);j(a);var c=l(a,2),f=o(c),p=G(f,!0);Y(c),s(e=>{te(a,t(y)),B(p,e)},[()=>Z(`streams.secret.saved`)]),_(`focus`,a,e=>e.currentTarget.select()),d(`click`,f,()=>S(y,null)),e(n,i)},$$slots:{default:!0}})}};r(a,e=>{t(y)&&e(c)});var f=l(a,2),m=n=>{{let i=J(()=>t(g)===``?Z(`streams.form.add`):Z(`streams.form.edit`,{name:t(v).name}));Q(n,{get title(){return t(i)},children:(n,i)=>{var a=wu(),c=u(a),f=o(c);{let e=J(()=>Z(`streams.form.key`)),n=J(()=>t(g)!==``);$(f,{get label(){return t(e)},get disabled(){return t(n)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return t(v).key},set value(e){t(v).key=e}})}var m=l(f,2);{let e=J(()=>Z(`streams.form.name`));$(m,{get label(){return t(e)},get value(){return t(v).name},set value(e){t(v).name=e}})}Y(c);var _=l(c,2);{let e=J(()=>Z(`streams.form.address`));$(_,{get label(){return t(e)},type:`url`,placeholder:`https://siem.example.com/masks`,autocapitalize:`none`,spellcheck:`false`,get value(){return t(v).url},set value(e){t(v).url=e}})}var y=l(_,2),b=o(y),x=G(b,!0),S=l(b,2);ie(S);var C=l(S,2),w=G(C,!0);Y(y);var T=l(y,2),D=e=>{{let n=J(()=>Z(`streams.form.events_from`)),r=J(()=>[[``,Z(`streams.form.every_organization`)],...t(p).organizations.map(e=>[e.key,Z(`streams.form.only`,{name:e.name})])]);ua(e,{get label(){return t(n)},get value(){return t(v).organization},get options(){return t(r)},onchange:e=>t(v).organization=e})}};r(T,e=>{t(p).organizations.length&&e(D)});var k=l(T,2),A=o(k),j=G(A,!0),M=l(A,2),P=G(M,!0);Y(k),s((e,n,r,i)=>{B(x,e),B(w,n),A.disabled=t(h)||!t(N),B(j,r),B(P,i)},[()=>Z(`streams.form.actions`),()=>Z(`streams.form.actions_hint`),()=>t(g)===``?Z(`streams.form.create`):Z(`streams.form.save`),()=>Z(`streams.form.cancel`)]),V(S,()=>t(v).actions,e=>t(v).actions=e),d(`click`,A,O),d(`click`,M,E),e(n,a)},$$slots:{default:!0}})}};r(f,e=>{t(v)&&e(m)});var b=l(f,2);{let n=t=>{var n=Tu(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`streams.list.add`)]),d(`click`,n,C),e(t,n)},i=J(()=>Z(`streams.list.title`)),a=J(()=>t(p).active.length?Z(`streams.list.lede`):Z(`streams.list.empty`));Q(b,{get title(){return t(i)},get lede(){return t(a)},actions:n,children:(n,i)=>{var a=z(),c=u(a);X(c,17,()=>t(p).active,e=>e.key,(n,i)=>{var a=Ou(),c=o(a),u=o(c),f=o(u),p=G(f,!0),m=l(f,2),g=o(m),_=G(g,!0),v=l(g);Y(m);var y=l(m,2),b=G(y),x=l(y,2),S=n=>{var r=Eu(),a=G(r,!0);s(()=>B(a,t(i).lastFailure)),e(n,r)},C=n=>{var r=Du(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`streams.list.last_delivered`,{day:zt(t(i).lastDeliveredAt)})]),e(n,r)};r(x,e=>{t(i).lastFailure?e(S):t(i).lastDeliveredAt&&e(C,1)}),Y(u);var w=l(u,2),E=o(w),D=G(E,!0),O=l(E,2),j=G(O,!0),N=l(O,2),P=G(N,!0),F=l(N,2),I=G(F,!0);Y(w),Y(c),Y(a),s((e,n,r,a,o,s,c)=>{B(p,t(i).name),B(_,t(i).key),B(v,` · ${t(i).url??``} · ${e??``}`),B(b,`${n??``}${r??``}`),E.disabled=t(h),B(D,a),B(j,o),B(P,s),B(I,c)},[()=>Z(`streams.list.added`,{day:zt(t(i).createdAt)}),()=>t(i).actions.length?t(i).actions.join(`, `):Z(`streams.list.every_action`),()=>t(i).organization?Z(`streams.list.only`,{name:t(i).organization.name}):``,()=>Z(`streams.list.test`),()=>Z(`streams.list.edit`),()=>Z(`streams.list.rotate`),()=>Z(`streams.list.archive`)]),d(`click`,E,()=>M(t(i))),d(`click`,O,()=>T(t(i))),d(`click`,N,()=>A(t(i))),d(`click`,F,()=>k(`archiveEventStream`,t(i),Z(`streams.archived_notice`,{name:t(i).name}),Z(`streams.archive_confirm`,{name:t(i).name}))),e(n,a)}),e(n,a)},$$slots:{actions:!0,default:!0}})}var x=l(b,2),w=n=>{{let r=J(()=>Z(`streams.archived.title`));Q(n,{get title(){return t(r)},children:(n,r)=>{var i=z(),a=u(i);X(a,17,()=>t(p).archived,e=>e.key,(n,r)=>{var i=ku(),a=o(i),c=o(a),u=l(c),f=G(u,!0);Y(a);var p=l(a,2),m=G(p,!0);Y(i),s(e=>{B(c,`${t(r).name??``} `),B(f,t(r).url),B(m,e)},[()=>Z(`streams.archived.restore`)]),d(`click`,p,()=>k(`restoreEventStream`,t(r),Z(`streams.restored`,{name:t(r).name}))),e(n,i)}),e(n,i)},$$slots:{default:!0}})}};r(x,e=>{t(p).archived.length&&e(w)}),e(n,i)};r(x,e=>{t(m)&&!t(p)?e(w):t(p)&&e(D,1)}),e(n,a)},$$slots:{default:!0}})}D()}c([`click`]);var Nu=f(`<!> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea w-full font-mono" rows="3" placeholder="203.0.113.0/24"></textarea> <span class="hint"> </span></label> <div><button type="button" class="btn btn-sm"> </button></div>`,1),Pu=f(`<div class="grid max-w-xl gap-3 sm:grid-cols-2"><!> <!></div>`),Fu=f(`<!> <!> <!> <!>`,1),Iu=f(`<!> <!>`,1);function Lu(n,i){U(i,!0);let a=[[0,Z(`settings.idle.never`)],[90,Z(`settings.idle.after_90_days`)],[180,Z(`settings.idle.after_180_days`)],[365,Z(`settings.idle.after_a_year`)],[730,Z(`settings.idle.after_two_years`)]],c=[[0,Z(`settings.idle.never`)],[180,Z(`settings.idle.after_180_days`)],[365,Z(`settings.idle.after_a_year`)],[730,Z(`settings.idle.after_two_years`)],[1095,Z(`settings.idle.after_three_years`)]],f=(e,t)=>!t||e.some(([e])=>e===t)?e:[...e,[t,Z(`settings.after_days`,{days:t})]],p=At(),m=w(null),h=w(``),g=w(``);async function _(){let e=await p.attempt(()=>i.api.query(`
|
|
531
|
+
query SignInRules {
|
|
532
|
+
tenant { namedBy browsersOnly blockedAgents riskyNetworks suspendAfter deleteAfter signInPolicy { key } }
|
|
533
|
+
signInPolicies { key name }
|
|
534
|
+
}
|
|
535
|
+
`));e&&(S(m,e,!0),S(h,e.tenant.blockedAgents??``,!0),S(g,e.tenant.riskyNetworks??``,!0))}_();async function v(e,t){await p.attempt(()=>i.api.query(`mutation Update(
|
|
536
|
+
$namedBy: String, $browsersOnly: Boolean, $blockedAgents: String, $signInPolicy: ID,
|
|
537
|
+
$riskyNetworks: String, $suspendAfter: Int, $deleteAfter: Int
|
|
538
|
+
) {
|
|
539
|
+
updateTenant(
|
|
540
|
+
namedBy: $namedBy
|
|
541
|
+
browsersOnly: $browsersOnly
|
|
542
|
+
blockedAgents: $blockedAgents
|
|
543
|
+
riskyNetworks: $riskyNetworks
|
|
544
|
+
signInPolicy: $signInPolicy
|
|
545
|
+
suspendAfter: $suspendAfter
|
|
546
|
+
deleteAfter: $deleteAfter
|
|
547
|
+
) { tenant { name } }
|
|
548
|
+
}`,e),t)&&await _()}function y(e){return e&&!confirm(Z(`settings.idle.delete_confirm`))?_():v({deleteAfter:e},Z(`settings.idle.updated`))}var b=Iu(),x=u(b);Bn(x,{get feedback(){return p.state}});var C=l(x,2),T=n=>{var r=Fu(),i=u(r);{let e=J(()=>Z(`settings.naming.title`)),n=J(()=>Z(`settings.naming.help`));Q(i,{row:!0,get title(){return t(e)},get help(){return t(n)},children:(e,n)=>{{let n=J(()=>[[`nickname`,Z(`settings.naming.nickname`)],[`email`,Z(`settings.naming.email`)],[`either`,Z(`settings.naming.either`)]]);ua(e,{get value(){return t(m).tenant.namedBy},get options(){return t(n)},onchange:e=>v({namedBy:e},Z(`settings.naming.updated`))})}},$$slots:{default:!0}})}var p=l(i,2);{let e=J(()=>Z(`settings.policy.title`)),n=J(()=>Z(`settings.policy.help`));Q(p,{row:!0,get title(){return t(e)},get help(){return t(n)},children:(e,n)=>{{let n=J(()=>t(m).tenant.signInPolicy?.key??``),r=J(()=>[[``,Z(`settings.policy.built_in`)],...t(m).signInPolicies.map(e=>[e.key,e.name])]);ua(e,{get value(){return t(n)},get options(){return t(r)},onchange:e=>v({signInPolicy:e},Z(`settings.policy.updated`))})}},$$slots:{default:!0}})}var _=l(p,2);{let n=J(()=>Z(`settings.access.title`)),r=J(()=>Z(`settings.access.help`));Q(_,{row:!0,get title(){return t(n)},get help(){return t(r)},children:(n,r)=>{var i=Nu(),a=u(i);{let e=J(()=>Z(`settings.access.browsers_only`));fa(a,{get label(){return t(e)},get checked(){return t(m).tenant.browsersOnly},onchange:e=>v({browsersOnly:e},Z(`settings.access.updated`))})}var c=l(a,2);{let e=J(()=>Z(`settings.access.refused_agents`));$(c,{get label(){return t(e)},placeholder:`curl, python-requests`,onsave:()=>v({blockedAgents:t(h)},Z(`settings.access.updated`)),get value(){return t(h)},set value(e){S(h,e,!0)}})}var f=l(c,2),p=o(f),_=G(p,!0),y=l(p,2);ie(y);var b=l(y,2),x=G(b,!0);Y(f);var C=l(f,2),w=o(C),T=G(w,!0);Y(C),s((e,t,n)=>{B(_,e),B(x,t),B(T,n)},[()=>Z(`settings.access.risky_networks`),()=>Z(`settings.access.risky_hint`),()=>Z(`settings.access.save_networks`)]),V(y,()=>t(g),e=>S(g,e)),d(`click`,w,()=>v({riskyNetworks:t(g)},Z(`settings.access.networks_saved`))),e(n,i)},$$slots:{default:!0}})}var b=l(_,2);{let n=J(()=>Z(`settings.idle.title`)),r=J(()=>Z(`settings.idle.help`));Q(b,{row:!0,get title(){return t(n)},get help(){return t(r)},children:(n,r)=>{var i=Pu(),s=o(i);{let e=J(()=>Z(`settings.idle.suspend`)),n=J(()=>t(m).tenant.suspendAfter??0),r=J(()=>f(a,t(m).tenant.suspendAfter));ua(s,{get label(){return t(e)},get value(){return t(n)},get options(){return t(r)},onchange:e=>v({suspendAfter:Number(e)},Z(`settings.idle.updated`))})}var u=l(s,2);{let e=J(()=>Z(`settings.idle.delete`)),n=J(()=>t(m).tenant.deleteAfter??0),r=J(()=>f(c,t(m).tenant.deleteAfter).map(([e,n])=>[e,n,e>0&&e<=(t(m).tenant.suspendAfter??0)]));ua(u,{get label(){return t(e)},get value(){return t(n)},get options(){return t(r)},onchange:e=>y(Number(e))})}Y(i),e(n,i)},$$slots:{default:!0}})}e(n,r)};r(C,e=>{t(m)&&e(T)}),e(n,b),D()}c([`click`]);var Ru=f(`<button type="button" class="btn btn-primary btn-sm"> </button>`),zu=f(`<option> </option>`),Bu=f(`<p class="text-xs text-warning"> <!></p>`),Vu=f(`<div class="grid gap-3 sm:grid-cols-2"><!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label></div> <p class="hint"> </p> <!> <div class="flex flex-col gap-1.5"><span class="field-label"> </span> <!></div>`,1),Hu=f(`<p class="text-xs opacity-85"> </p> <!>`,1),Uu=f(`<p class="text-xs text-warning"> </p>`),Wu=f(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label>`),Gu=f(`<div class="flex flex-wrap items-center gap-x-5 gap-y-2"><label class="flex items-center gap-2 text-sm"><input class="input input-sm w-16" type="number" min="8"/> </label> <!> <!></div>`),Ku=f(`<div class="flex flex-wrap gap-x-5 gap-y-2"><!> <!></div>`),qu=f(`<div class="grid gap-3 sm:grid-cols-[2fr_1fr]"><!> <!></div> <div class="policy-rows"><div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><!> <!> <!> <!></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="grid gap-3 sm:grid-cols-3"></div> <div class="flex flex-wrap gap-x-5 gap-y-2"><!> <!></div> <!></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="flex flex-wrap gap-x-5 gap-y-2"></div> <!> <!></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="flex flex-wrap gap-x-5 gap-y-2"></div> <!> <!></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="flex flex-wrap items-center gap-x-5 gap-y-2"><label class="flex items-center gap-2 text-sm"> <select class="select select-sm w-auto"></select></label> <label class="flex items-center gap-2 text-sm"> <select class="select select-sm w-auto"></select></label></div> <!> <p class="hint"> </p></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="flex flex-wrap items-center gap-x-5 gap-y-2"><label class="flex items-center gap-2 text-sm"> <select class="select select-sm w-auto"></select> </label> <label class="flex items-center gap-2 text-sm"> <select class="select select-sm w-auto"></select> </label></div> <p class="hint"> </p></div></div></div> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),Ju=f(`<p class="text-sm opacity-85"> </p>`),Yu=f(`<span class="badge badge-success badge-sm"> </span>`),Xu=f(` <!>`,1),Zu=f(`<span class="hint"> <!></span>`),Qu=f(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),$u=f(`<div class="flex flex-wrap items-start justify-between gap-2 border-b border-base-300 pb-3 last:border-0 last:pb-0"><div class="flex min-w-0 flex-col gap-1"><span class="font-medium"> <!></span> <span class="hint"> </span> <!></div> <div class="flex gap-2"><button type="button" class="btn btn-sm"> </button> <!></div></div>`),ed=f(`<!> <!>`,1),td=f(`<div class="flex items-center justify-between gap-2"><span class="text-sm"> </span> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`),nd=f(`<!> <!> <!> <!>`,1);function rd(n,c){U(c,!0);let f=`
|
|
549
|
+
key name signup nickname email emailVerified phone phoneVerified
|
|
550
|
+
passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor
|
|
551
|
+
sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork
|
|
552
|
+
emailDomains providers confirmation hidden signupScopes default archivedAt
|
|
553
|
+
clients { clientId name }
|
|
554
|
+
`,p=`
|
|
555
|
+
query Policies {
|
|
556
|
+
active: signInPolicies { ${f} }
|
|
557
|
+
archived: signInPolicies(archived: true) { ${f} }
|
|
558
|
+
providers { key name }
|
|
559
|
+
tenant { namedBy texts mails }
|
|
560
|
+
scopesSupported
|
|
561
|
+
}
|
|
562
|
+
`,m=`
|
|
563
|
+
$key: ID!, $name: String, $signup: Boolean, $nickname: String, $email: String,
|
|
564
|
+
$emailVerified: Boolean, $phone: String, $phoneVerified: Boolean, $passwordMinimum: Int,
|
|
565
|
+
$refuseCommonPasswords: Boolean, $passwordRequired: Boolean, $firstFactors: [String!], $secondFactors: [String!],
|
|
566
|
+
$secondFactorRequired: Boolean, $appsRequireSecondFactor: Boolean,
|
|
567
|
+
$sessionLifetime: Int, $sessionIdleTimeout: Int,
|
|
568
|
+
$refuseBreachedPasswords: Boolean, $riskStepUpAt: Int, $riskRefuseAt: Int, $proofOfWork: Int, $emailDomains: [String!], $providers: [String!],
|
|
569
|
+
$everyProvider: Boolean, $confirmation: String, $hidden: Boolean, $signupScopes: [String!]
|
|
570
|
+
`,h=`
|
|
571
|
+
key: $key, name: $name, signup: $signup, nickname: $nickname, email: $email,
|
|
572
|
+
emailVerified: $emailVerified, phone: $phone, phoneVerified: $phoneVerified,
|
|
573
|
+
passwordMinimum: $passwordMinimum, refuseCommonPasswords: $refuseCommonPasswords, passwordRequired: $passwordRequired,
|
|
574
|
+
firstFactors: $firstFactors, secondFactors: $secondFactors,
|
|
575
|
+
secondFactorRequired: $secondFactorRequired, appsRequireSecondFactor: $appsRequireSecondFactor,
|
|
576
|
+
sessionLifetime: $sessionLifetime, sessionIdleTimeout: $sessionIdleTimeout,
|
|
577
|
+
refuseBreachedPasswords: $refuseBreachedPasswords, riskStepUpAt: $riskStepUpAt, riskRefuseAt: $riskRefuseAt, proofOfWork: $proofOfWork, emailDomains: $emailDomains,
|
|
578
|
+
providers: $providers, everyProvider: $everyProvider, confirmation: $confirmation,
|
|
579
|
+
hidden: $hidden, signupScopes: $signupScopes
|
|
580
|
+
`,g=3600,_=24*g,v=[[null,Z(`policy_rules.values.default_lifetime`)],...[g,8*g,12*g,_,7*_,30*_,90*_].map(e=>[e,Ra(e)])],y=[[null,Z(`policies.never`)],...[900,1800,g,4*g,_].map(e=>[e,Ra(e)])],b=[[null,Z(`policies.never`)],...[30,50,70,90].map(e=>[e,Z(`policies.score`,{score:e})])],x=[[0,Z(`policies.form.signup.work_off`)],[14,Z(`policies.form.signup.work_light`)],[17,Z(`policies.form.signup.work_standard`)],[20,Z(`policies.form.signup.work_strong`)]],T=e=>x.some(([t])=>t===e)?x:[...x,[e,Z(`policies.form.signup.work_bits`,{bits:e})]],E=(e,t)=>t===null||e.some(([e])=>e===t)?e:[...e,[t,Z(`policy_rules.units.second`,{count:t})]],O=(e,t)=>t.map(t=>[t,Z(`policies.${e}.${t}`)]),k=O(`presence`,[`off`,`optional`,`required`]),M=O(`first`,[`password`,`passkey`,`provider`,`email_code`]),N=O(`second`,[`otp`,`passkey`,`backup_codes`,`email`,`sms`,`trusted_device`]),P=O(`confirmations`,[`none`,`code`,`link`,`approval`]),F=[`nickname`,`email`,`phone`].map(e=>[e,Z(`policies.form.account.${e}`)]),R={key:``,name:``,signup:!1,nickname:`optional`,email:`required`,emailVerified:!1,phone:`off`,phoneVerified:!1,passwordMinimum:8,refuseCommonPasswords:!0,passwordRequired:!1,firstFactors:[`password`,`passkey`,`provider`],secondFactors:[`otp`,`passkey`,`backup_codes`],secondFactorRequired:!1,appsRequireSecondFactor:!1,sessionLifetime:null,sessionIdleTimeout:null,refuseBreachedPasswords:!1,riskStepUpAt:null,riskRefuseAt:null,proofOfWork:17,emailDomains:``,providers:null,confirmation:`none`,hidden:!1,signupScopes:[]},ee=At(),te=w(null),ne=w(!0),W=w(!1),ie=w(null),K=w(C({...R}));async function ae(){S(ne,!0);let e=await ee.attempt(()=>c.api.query(p));S(ne,!1),e&&S(te,e,!0)}ae();function q(){S(ie,``),S(ce,!1),S(K,structuredClone(R),!0),ee.clear()}function oe(e){S(ie,e.key,!0),S(K,{...structuredClone(A(e)),emailDomains:e.emailDomains.join(` `)},!0),ee.clear()}let se=e=>e.toLowerCase().normalize(`NFKD`).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``),ce=w(!1);function le(e){t(K).name=e,t(ie)===``&&!t(ce)&&(t(K).key=se(e))}function ue(){S(ie,null),ee.clear()}let de=(e,t,n)=>n?[...new Set([...e,t])]:e.filter(e=>e!==t);function fe(){return{key:t(K).key.trim(),name:t(K).name.trim(),signup:t(K).signup,nickname:t(K).nickname,email:t(K).email,emailVerified:t(K).emailVerified,phone:t(K).phone,phoneVerified:t(K).phoneVerified,passwordMinimum:Number(t(K).passwordMinimum)||8,refuseCommonPasswords:t(K).refuseCommonPasswords,passwordRequired:t(K).passwordRequired&&t(K).firstFactors.includes(`password`),firstFactors:t(K).firstFactors,secondFactors:t(K).secondFactors,secondFactorRequired:t(K).secondFactorRequired,appsRequireSecondFactor:t(K).appsRequireSecondFactor,sessionLifetime:t(K).sessionLifetime,sessionIdleTimeout:t(K).sessionIdleTimeout,refuseBreachedPasswords:t(K).refuseBreachedPasswords,riskStepUpAt:t(K).riskStepUpAt,riskRefuseAt:t(K).riskRefuseAt,proofOfWork:Number(t(K).proofOfWork)||0,emailDomains:t(K).emailDomains.split(/[\s,]+/).filter(Boolean),providers:t(K).providers??[],everyProvider:t(K).providers===null,confirmation:t(K).confirmation,hidden:t(K).hidden,signupScopes:t(K).signupScopes}}async function pe(){S(W,!0);let e=t(ie)===``,n=await ee.attempt(()=>c.api.query(e?`mutation Create(${m}) { createSignInPolicy(${h}) { signInPolicy { key } } }`:`mutation Update(${m}) { updateSignInPolicy(${h}) { signInPolicy { key } } }`,fe()),Z(e?`policies.added`:`policies.saved`,{name:t(K).name}));S(W,!1),n&&(S(ie,null),await ae())}async function me(e,t,n,r=null){(!r||confirm(r))&&await ee.attempt(()=>c.api.query(`mutation Act($key: ID!) { ${e}(key: $key) { signInPolicy { key } } }`,{key:t.key}),n)&&await ae()}let he=e=>[e.signup?Z(`policies.summary.signup_open`):Z(`policies.summary.invitation_only`),e.secondFactorRequired?Z(`policies.summary.second_factor_required`):null,e.appsRequireSecondFactor?Z(`policies.summary.apps_require_second_factor`):null,e.sessionLifetime?Z(`policies.summary.lifetime`,{duration:Ra(e.sessionLifetime)}):null,e.sessionIdleTimeout?Z(`policies.summary.idle`,{duration:Ra(e.sessionIdleTimeout)}):null,e.confirmation===`none`?null:Z(`policies.summary.confirmed_by`,{confirmation:e.confirmation}),e.phone===`required`?Z(`policies.summary.phone_required`):null,e.hidden?Z(`policies.summary.hidden`):null].filter(Boolean).join(` · `),ge=J(()=>t(te)?.providers??[]);{let f=n=>{var i=z(),a=u(i),o=t=>{var n=Ru(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`policies.add`)]),d(`click`,n,q),e(t,n)};r(a,e=>{t(ie)===null&&e(o)}),e(n,i)},p=J(()=>Z(`policies.title`));Kn(n,{get title(){return t(p)},actions:f,children:(n,f)=>{var p=ed(),m=u(p);Bn(m,{get feedback(){return ee.state}});var h=l(m,2),g=e=>{xt(e,{})},_=n=>{var f=nd(),p=u(f),m=n=>{{let i=J(()=>t(ie)===``?Z(`policies.form.new`):t(K).name);Q(n,{get title(){return t(i)},children:(n,i)=>{var c=qu(),f=u(c),p=o(f);{let e=J(()=>Z(`policies.form.name`)),n=J(()=>Z(`policies.form.name_placeholder`));$(p,{get label(){return t(e)},get value(){return t(K).name},oninput:e=>le(e.currentTarget.value),get placeholder(){return t(n)}})}var m=l(p,2);{let e=J(()=>Z(`policies.form.key`)),n=J(()=>t(ie)!==``);$(m,{get label(){return t(e)},oninput:()=>S(ce,!0),get disabled(){return t(n)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,class:`input input-sm w-full font-mono`,get value(){return t(K).key},set value(e){t(K).key=e}})}Y(f);var h=l(f,2),g=o(h),_=o(g),x=G(_,!0),C=l(_,2),w=o(C);{let e=J(()=>Z(`policies.form.signup.open`));fa(w,{get label(){return t(e)},get checked(){return t(K).signup},set checked(e){t(K).signup=e}})}var D=l(w,2),O=n=>{var i=Vu(),c=u(i),d=o(c);{let e=J(()=>Z(`policies.form.signup.email_domains`)),n=J(()=>Z(`policies.form.signup.email_domains_placeholder`));$(d,{get label(){return t(e)},autocapitalize:`none`,spellcheck:`false`,get placeholder(){return t(n)},get value(){return t(K).emailDomains},set value(e){t(K).emailDomains=e}})}var f=l(d,2),p=o(f),m=G(p,!0),h=l(p,2);X(h,21,()=>P,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=zu(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(h),I(h),Y(f);var g=l(f,2),_=o(g),v=G(_,!0),y=l(_,2);X(y,21,()=>T(t(K).proofOfWork),([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=zu(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(y),I(y),Y(g),Y(c);var b=l(c,2),x=G(b,!0),S=l(b,2),C=t=>{var n=Bu(),r=o(n);yt(l(r),{to:`/messages`,class:`link`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`policies.form.add_one`)]),e(t,r)},$$slots:{default:!0}}),Y(n),s(e=>B(r,`${e??``} `),[()=>Z(`policies.form.signup.no_mail`)]),e(t,n)};r(S,e=>{(t(K).confirmation===`code`||t(K).confirmation===`link`)&&!t(te).tenant.mails&&e(C)});var w=l(S,2),E=o(w),D=G(E,!0),O=l(E,2);{let e=J(()=>t(te).scopesSupported.filter(e=>!e.startsWith(`masks:`)));Mn(O,{get value(){return t(K).signupScopes},get available(){return t(e)},onchange:e=>t(K).signupScopes=e})}Y(w),s((e,t,n,r)=>{B(m,e),B(v,t),B(x,n),B(D,r)},[()=>Z(`policies.form.signup.confirmation`),()=>Z(`policies.form.signup.work`),()=>Z(`policies.form.signup.work_hint`),()=>Z(`policies.form.signup.scopes`)]),L(h,()=>t(K).confirmation,e=>t(K).confirmation=e),L(y,()=>t(K).proofOfWork,e=>t(K).proofOfWork=e),e(n,i)};r(D,e=>{t(K).signup&&e(O)});var A=l(D,2);{let e=J(()=>Z(`policies.form.signup.hidden`));fa(A,{get label(){return t(e)},get checked(){return t(K).hidden},set checked(e){t(K).hidden=e}})}var R=l(A,2),ee=n=>{var i=Hu(),c=u(i),d=G(c,!0),f=l(c,2),p=t=>{var n=Bu(),r=o(n);yt(l(r),{to:`/messages`,class:`link`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`policies.form.add_one`)]),e(t,r)},$$slots:{default:!0}}),Y(n),s(e=>B(r,`${e??``} `),[()=>Z(`policies.form.signup.hidden_no_mail`)]),e(t,n)};r(f,e=>{t(te).tenant.mails||e(p)}),s(e=>B(d,e),[()=>Z(`policies.form.signup.hidden_hint`)]),e(n,i)},ne=t=>{var n=Uu(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`policies.form.signup.open_warning`)]),e(t,n)};r(R,e=>{t(K).hidden?e(ee):t(K).signup&&e(ne,1)}),Y(C),Y(g);var U=l(g,2),ae=o(U),q=G(ae,!0),oe=l(ae,2),se=o(oe);X(se,21,()=>F,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],c=()=>t(i)[1];var u=Wu(),d=o(u),f=G(d,!0),p=l(d,2);X(p,21,()=>k,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=zu(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(p),I(p),Y(u),s(()=>B(f,c())),L(p,()=>t(K)[a()],e=>t(K)[a()]=e),e(n,u)}),Y(se);var fe=l(se,2),me=o(fe);{let e=J(()=>Z(`policies.form.account.email_verified`));fa(me,{get label(){return t(e)},get checked(){return t(K).emailVerified},set checked(e){t(K).emailVerified=e}})}var he=l(me,2);{let e=J(()=>Z(`policies.form.account.phone_verified`));fa(he,{get label(){return t(e)},get checked(){return t(K).phoneVerified},set checked(e){t(K).phoneVerified=e}})}Y(fe);var _e=l(fe,2),ve=t=>{var n=Bu(),r=o(n);yt(l(r),{to:`/messages`,class:`link`,children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`policies.form.add_one`)]),e(t,r)},$$slots:{default:!0}}),Y(n),s(e=>B(r,`${e??``} `),[()=>Z(`policies.form.account.no_sms`)]),e(t,n)};r(_e,e=>{t(K).phone!==`off`&&t(K).phoneVerified&&!t(te).tenant.texts&&e(ve)}),Y(oe),Y(U);var ye=l(U,2),be=o(ye),xe=G(be,!0),Se=l(be,2),Ce=o(Se);X(Ce,21,()=>M,([e,t])=>e,(e,n)=>{var r=J(()=>re(t(n),2));let i=()=>t(r)[0],a=()=>t(r)[1];{let n=J(()=>t(K).firstFactors.includes(i()));fa(e,{get label(){return a()},get checked(){return t(n)},onchange:e=>t(K).firstFactors=de(t(K).firstFactors,i(),e)})}}),Y(Ce);var we=l(Ce,2),Te=n=>{var i=Gu(),a=o(i),c=o(a);j(c);var u=l(c);Y(a);var d=l(a,2);{let e=J(()=>Z(`policies.form.sign_in.refuse_common`));fa(d,{get label(){return t(e)},get checked(){return t(K).refuseCommonPasswords},set checked(e){t(K).refuseCommonPasswords=e}})}var f=l(d,2),p=e=>{{let n=J(()=>Z(`policies.form.sign_in.password_required`));fa(e,{get label(){return t(n)},get checked(){return t(K).passwordRequired},set checked(e){t(K).passwordRequired=e}})}},m=J(()=>t(K).firstFactors.includes(`passkey`));r(f,e=>{t(m)&&e(p)}),Y(i),s(e=>B(u,` ${e??``}`),[()=>Z(`policies.form.sign_in.characters`)]),V(c,()=>t(K).passwordMinimum,e=>t(K).passwordMinimum=e),e(n,i)},Ee=J(()=>t(K).firstFactors.includes(`password`));r(we,e=>{t(Ee)&&e(Te)});var De=l(we,2),Oe=n=>{var i=Ku(),a=o(i);{let e=J(()=>Z(`policies.form.sign_in.all_providers`)),n=J(()=>t(K).providers===null);fa(a,{get label(){return t(e)},get checked(){return t(n)},onchange:e=>t(K).providers=e?null:t(ge).map(e=>e.key)})}var s=l(a,2),c=n=>{var r=z(),i=u(r);X(i,17,()=>t(ge),e=>e.key,(e,n)=>{{let r=J(()=>t(K).providers.includes(t(n).key));fa(e,{get label(){return t(n).name},get checked(){return t(r)},onchange:e=>t(K).providers=de(t(K).providers,t(n).key,e)})}}),e(n,r)};r(s,e=>{t(K).providers!==null&&e(c)}),Y(i),e(n,i)},ke=J(()=>t(K).firstFactors.includes(`provider`)&&t(ge).length);r(De,e=>{t(ke)&&e(Oe)}),Y(Se),Y(ye);var Ae=l(ye,2),je=o(Ae),Me=G(je,!0),Ne=l(je,2),Pe=o(Ne);X(Pe,21,()=>N,([e,t])=>e,(e,n)=>{var r=J(()=>re(t(n),2));let i=()=>t(r)[0],a=()=>t(r)[1];{let n=J(()=>t(K).secondFactors.includes(i()));fa(e,{get label(){return a()},get checked(){return t(n)},onchange:e=>t(K).secondFactors=de(t(K).secondFactors,i(),e)})}}),Y(Pe);var Fe=l(Pe,2);{let e=J(()=>Z(`policies.form.second_factor.required`));fa(Fe,{get label(){return t(e)},get checked(){return t(K).secondFactorRequired},set checked(e){t(K).secondFactorRequired=e}})}var Ie=l(Fe,2);{let e=J(()=>Z(`policies.form.second_factor.apps`));fa(Ie,{get label(){return t(e)},get checked(){return t(K).appsRequireSecondFactor},set checked(e){t(K).appsRequireSecondFactor=e}})}Y(Ne),Y(Ae);var Le=l(Ae,2),Re=o(Le),ze=G(Re,!0),Be=l(Re,2),Ve=o(Be),He=o(Ve),Ue=o(He),We=l(Ue);X(We,21,()=>E(b,t(K).riskStepUpAt),([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=zu(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(We),I(We),Y(He);var Ge=l(He,2),Ke=o(Ge),qe=l(Ke);X(qe,21,()=>E(b,t(K).riskRefuseAt),([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=zu(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(qe),I(qe),Y(Ge),Y(Ve);var Je=l(Ve,2);{let e=J(()=>Z(`policies.form.risk.refuse_breached`));fa(Je,{get label(){return t(e)},get checked(){return t(K).refuseBreachedPasswords},set checked(e){t(K).refuseBreachedPasswords=e}})}var Ye=l(Je,2),Xe=G(Ye,!0);Y(Be),Y(Le);var Ze=l(Le,2),Qe=o(Ze),$e=G(Qe,!0),et=l(Qe,2),tt=o(et),nt=o(tt),rt=o(nt),it=l(rt);X(it,21,()=>E(v,t(K).sessionLifetime),([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=zu(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(it),I(it);var at=l(it);Y(nt);var ot=l(nt,2),st=o(ot),ct=l(st);X(ct,21,()=>E(y,t(K).sessionIdleTimeout),([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=zu(),l=G(c,!0),u={};s(()=>{B(l,o()),u!==(u=a())&&(c.value=(c.__value=u)??``)}),e(n,c)}),Y(ct),I(ct);var lt=l(ct);Y(ot),Y(tt);var ut=l(tt,2),dt=G(ut,!0);Y(et),Y(Ze),Y(h);var ft=l(h,2),pt=o(ft),mt=G(pt,!0),ht=l(pt,2),gt=G(ht,!0);Y(ft),s((e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)=>{B(x,e),B(q,t),B(xe,n),B(Me,r),B(ze,i),B(Ue,`${a??``} `),B(Ke,`${o??``} `),B(Xe,s),B($e,c),B(rt,`${l??``} `),B(at,` ${u??``}`),B(st,`${d??``} `),B(lt,` ${f??``}`),B(dt,p),pt.disabled=m,B(mt,h),B(gt,g)},[()=>Z(`policies.form.signup.legend`),()=>Z(`policies.form.account.legend`),()=>Z(`policies.form.sign_in.legend`),()=>Z(`policies.form.second_factor.legend`),()=>Z(`policies.form.risk.legend`),()=>Z(`policies.form.risk.step_up`),()=>Z(`policies.form.risk.refuse`),()=>Z(`policies.form.risk.hint`),()=>Z(`policies.form.sessions.legend`),()=>Z(`policies.form.sessions.last`),()=>Z(`policies.form.sessions.after_sign_in`),()=>Z(`policies.form.sessions.end_after`),()=>Z(`policies.form.sessions.idle`),()=>Z(`policies.form.sessions.hint`),()=>t(W)||!t(K).key.trim()||!t(K).name.trim(),()=>t(ie)===``?Z(`policies.form.create`):Z(`policies.form.save`),()=>Z(`policies.form.cancel`)]),L(We,()=>t(K).riskStepUpAt,e=>t(K).riskStepUpAt=e),L(qe,()=>t(K).riskRefuseAt,e=>t(K).riskRefuseAt=e),L(it,()=>t(K).sessionLifetime,e=>t(K).sessionLifetime=e),L(ct,()=>t(K).sessionIdleTimeout,e=>t(K).sessionIdleTimeout=e),d(`click`,pt,pe),d(`click`,ht,ue),e(n,c)},$$slots:{default:!0}})}};r(p,e=>{t(ie)!==null&&e(m)});var h=l(p,2);Q(h,{children:(n,i)=>{var c=ed(),f=u(c),p=t=>{var n=Ju(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`policies.list.empty`)]),e(t,n)};r(f,e=>{t(te).active.length===0&&e(p)});var m=l(f,2);X(m,17,()=>t(te).active,e=>e.key,(n,i)=>{var c=$u(),f=o(c),p=o(f),m=o(p),h=l(m),g=t=>{var n=Yu(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`policies.list.default`)]),e(t,n)};r(h,e=>{t(i).default&&e(g)}),Y(p);var _=l(p,2),v=G(_,!0),y=l(_,2),b=n=>{var r=Zu(),c=o(r),d=l(c);X(d,19,()=>t(i).clients,e=>e.clientId,(n,r,i)=>{H();var o=Xu(),c=u(o,!0),d=l(c);{let n=J(()=>`/clients/${t(r).clientId}`);yt(d,{get to(){return t(n)},class:`link`,children:(n,i)=>{H();var o=a();s(()=>B(o,t(r).name)),e(n,o)},$$slots:{default:!0}})}s(()=>B(c,t(i)?`, `:``)),e(n,o)}),Y(r),s(e=>B(c,`${e??``} `),[()=>Z(`policies.list.used_by`)]),e(n,r)};r(y,e=>{t(i).clients.length&&e(b)}),Y(f);var x=l(f,2),S=o(x),C=G(S,!0),w=l(S,2),T=n=>{var r=Qu(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`policies.list.archive`)]),d(`click`,r,()=>me(`archiveSignInPolicy`,t(i),Z(`policies.archived_notice`,{name:t(i).name}),Z(`policies.archive_confirm`,{name:t(i).name}))),e(n,r)};r(w,e=>{t(i).default||e(T)}),Y(x),Y(c),s((e,n)=>{B(m,`${t(i).name??``} `),B(v,e),B(C,n)},[()=>he(t(i)),()=>Z(`policies.list.edit`)]),d(`click`,S,()=>oe(t(i))),e(n,c)}),e(n,c)},$$slots:{default:!0}});var g=l(h,2),_=n=>{var r=z(),a=u(r);i(a,()=>t(te),e=>{Lu(e,{get api(){return c.api}})}),e(n,r)};r(g,e=>{t(ie)===null&&e(_)});var x=l(g,2),C=n=>{{let r=J(()=>Z(`policies.archived.title`));Q(n,{get title(){return t(r)},children:(n,r)=>{var i=z(),a=u(i);X(a,17,()=>t(te).archived,e=>e.key,(n,r)=>{var i=td(),a=o(i),c=G(a,!0),u=l(a,2),f=G(u,!0);Y(i),s(e=>{B(c,t(r).name),B(f,e)},[()=>Z(`policies.archived.restore`)]),d(`click`,u,()=>me(`restoreSignInPolicy`,t(r),Z(`policies.restored`,{name:t(r).name}))),e(n,i)}),e(n,i)},$$slots:{default:!0}})}};r(x,e=>{t(te).archived.length&&e(C)}),e(n,f)};r(h,e=>{t(ne)&&!t(te)?e(g):t(te)&&e(_,1)}),e(n,p)},$$slots:{actions:!0,default:!0}})}D()}c([`click`]);var id=f(`<p class="hint"> </p>`),ad=f(`<div class="hint"> </div>`),od=f(`<li><div class="min-w-0"><div class="text-sm font-medium"> </div> <code class="hint font-mono text-xs break-all"> </code> <!> <div class="hint text-xs"> </div></div> <button type="button" class="btn btn-ghost btn-xs ml-auto"> </button></li>`),sd=f(`<ul class="compact-list"></ul>`),cd=f(`<option> </option>`),ld=f(`<div class="alert alert-warning alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <span class="text-xs"> </span> <code class="font-mono text-xs break-all"> </code> <span class="text-xs"> </span> <code class="font-mono text-xs break-all"> </code></div>`),ud=f(`<dl class="ldap-facts"><dt class="field-label"> </dt> <dd><code class="font-mono text-xs"> </code></dd> <dt class="field-label"> </dt> <dd><code class="font-mono text-xs break-all"> </code></dd></dl> <!> <!> <form class="join"><input class="input input-sm join-item w-full max-w-48" placeholder="jellyfin"/> <select class="select select-sm join-item w-full max-w-48"><option> </option><!></select> <button type="submit" class="btn btn-sm join-item"> </button></form> <p class="hint"> </p> <p class="hint"> </p> <!> <!> <p class="hint"> </p>`,1),dd=f(`<!> <!>`,1);function fd(n,i){U(i,!0);let a=At(),c=w(null),f=w(``),p=w(``),m=w(null);async function h(){try{S(c,await i.api.query(`
|
|
581
|
+
query Ldap {
|
|
582
|
+
ldapBaseDn
|
|
583
|
+
ldapPort
|
|
584
|
+
ldapTls
|
|
585
|
+
ldapLocalOnly
|
|
586
|
+
ldapCredentials { id label bindDn usedAt createdAt issuedBy { identifier } client { clientId name } }
|
|
587
|
+
clients(limit: 200) { clientId name appPasswords }
|
|
588
|
+
tenant { ldapEnabled ldapPasswordOnly }
|
|
589
|
+
}
|
|
590
|
+
`),!0)}catch(e){a.blame(e)}}h();async function g(){let e=await a.attempt(()=>i.api.query(`mutation Issue($label: String!, $clientId: ID) {
|
|
591
|
+
issueLdapCredential(label: $label, clientId: $clientId) { secret ldapCredential { bindDn } }
|
|
592
|
+
}`,{label:t(f).trim(),clientId:t(p)||null}));e&&(S(m,e.issueLdapCredential,!0),S(f,``),S(p,``),await h())}async function v(e){confirm(Z(`ldap.revoke_confirm`,{label:e.label}))&&await a.attempt(()=>i.api.query(`mutation Revoke($id: ID!) { revokeLdapCredential(id: $id) { ldapCredential { id } } }`,{id:e.id}),Z(`ldap.revoked`,{label:e.label}))&&await h()}async function y(e){await a.attempt(()=>i.api.query(`mutation Serve($ldapEnabled: Boolean) {
|
|
593
|
+
updateTenant(ldapEnabled: $ldapEnabled) { tenant { ldapEnabled } }
|
|
594
|
+
}`,{ldapEnabled:e}),Z(`ldap.serve.updated`))&&await h()}async function b(e){await a.attempt(()=>i.api.query(`mutation PasswordOnly($ldapPasswordOnly: Boolean) {
|
|
595
|
+
updateTenant(ldapPasswordOnly: $ldapPasswordOnly) { tenant { ldapPasswordOnly } }
|
|
596
|
+
}`,{ldapPasswordOnly:e}),Z(`ldap.binds.updated`))&&await h()}{let i=J(()=>Z(`ldap.title`)),h=J(()=>`${Z(`ldap.lede`)} ${Z(`ldap.serve.help`)}`);Q(n,{row:!0,get title(){return t(i)},get help(){return t(h)},children:(n,i)=>{var h=dd(),x=u(h);Bn(x,{get feedback(){return a.state}});var C=l(x,2),w=n=>{var i=dd(),a=u(i);{let e=J(()=>Z(`ldap.serve.on`));fa(a,{get label(){return t(e)},get checked(){return t(c).tenant.ldapEnabled},onchange:y})}var h=l(a,2),x=n=>{var i=ud(),a=u(i),h=o(a),y=G(h,!0),x=l(h,2),C=o(x),w=G(C,!0);Y(x);var T=l(x,2),E=G(T,!0),D=l(T,2),O=o(D),k=G(O,!0);Y(D),Y(a);var A=l(a,2),M=t=>{var n=id(),r=G(n,!0);s(e=>B(r,e),[()=>Z(`ldap.connect.local_only`)]),e(t,n)};r(A,e=>{t(c).ldapLocalOnly&&e(M)});var N=l(A,2),F=n=>{var i=sd();X(i,21,()=>t(c).ldapCredentials,e=>e.id,(n,i)=>{var a=od(),c=o(a),u=o(c),f=G(u,!0),p=l(u,2),m=G(p,!0),h=l(p,2),g=n=>{var r=ad(),a=G(r,!0);s(e=>B(a,e),[()=>Z(`ldap.credentials.app`,{name:t(i).client.name})]),e(n,r)};r(h,e=>{t(i).client&&e(g)});var _=l(h,2),y=G(_,!0);Y(c);var b=l(c,2),x=G(b,!0);Y(a),s((e,n)=>{B(f,t(i).label),B(m,t(i).bindDn),B(y,e),B(x,n)},[()=>Z(`ldap.credentials.used`,{used:Vt(t(i).usedAt,Z(`ldap.credentials.never`))}),()=>Z(`ldap.credentials.revoke`)]),d(`click`,b,()=>v(t(i))),e(n,a)}),Y(i),e(n,i)};r(N,e=>{t(c).ldapCredentials.length&&e(F)});var R=l(N,2),ee=o(R);j(ee);var z=l(ee,2),H=o(z),te=G(H,!0);H.value=H.__value=``;var ne=l(H);X(ne,17,()=>t(c).clients,e=>e.clientId,(n,r)=>{var i=cd(),a=G(i,!0),o={};s(()=>{B(a,t(r).name),o!==(o=t(r).clientId)&&(i.value=(i.__value=o)??``)}),e(n,i)}),Y(z),I(z);var U=l(z,2),W=G(U,!0);Y(R);var re=l(R,2),ie=G(re,!0),K=l(re,2),ae=G(K,!0),q=l(K,2),oe=n=>{var r=ld(),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0),d=l(c,2),f=G(d,!0),p=l(d,2),h=G(p,!0),g=l(p,2),_=G(g,!0);Y(r),s((e,n,r)=>{B(a,e),B(u,n),B(f,t(m).ldapCredential.bindDn),B(h,r),B(_,t(m).secret)},[()=>Z(`ldap.connect.shown_once`),()=>Z(`ldap.connect.bind_dn`),()=>Z(`ldap.connect.secret`)]),e(n,r)};r(q,e=>{t(m)&&e(oe)});var se=l(q,2);{let e=J(()=>Z(`ldap.binds.password_only`));fa(se,{get label(){return t(e)},get checked(){return t(c).tenant.ldapPasswordOnly},onchange:b})}var ce=l(se,2),le=G(ce,!0);s((e,n,r,i,a,o,s,l,u,d,f)=>{B(y,e),B(w,n),B(E,r),B(k,t(c).ldapBaseDn),P(ee,`aria-label`,i),P(z,`aria-label`,a),B(te,o),U.disabled=s,B(W,l),B(ie,u),B(ae,d),B(le,f)},[()=>Z(`ldap.connect.address`),()=>Z(t(c).ldapTls?`ldap.connect.ldaps`:`ldap.connect.port`,{port:t(c).ldapPort}),()=>Z(`ldap.connect.base_dn`),()=>Z(`ldap.connect.label`),()=>Z(`ldap.connect.app`),()=>Z(`ldap.connect.no_app`),()=>!t(f).trim(),()=>Z(`ldap.connect.issue`),()=>Z(`ldap.connect.help`),()=>Z(`ldap.connect.app_help`),()=>Z(`ldap.binds.help`)]),_(`submit`,R,e=>{e.preventDefault(),g()}),V(ee,()=>t(f),e=>S(f,e)),L(z,()=>t(p),e=>S(p,e)),e(n,i)};r(h,e=>{t(c).tenant.ldapEnabled&&e(x)}),e(n,i)};r(C,e=>{t(c)&&e(w)}),e(n,h)},$$slots:{default:!0}})}D()}c([`click`]);var pd=f(`<span class="hint"> </span>`),md=f(`<li><div class="min-w-0"><div class="text-sm font-medium"> <!></div> <div class="hint text-xs"> </div></div> <button type="button" class="btn btn-ghost btn-xs ml-auto"> </button></li>`),hd=f(`<ul class="compact-list"></ul>`),gd=f(`<button type="button"> </button>`),_d=f(`<div class="alert alert-warning alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <code class="font-mono text-xs break-all"> </code></div>`),vd=f(`<div class="flex flex-col gap-1.5"><span class="field-label"> </span> <code class="tray px-2 py-1 font-mono text-xs break-all"> </code></div> <!> <form class="flex flex-wrap items-center gap-2"><input class="input input-sm w-full max-w-48" placeholder="Entra ID"/> <!> <div class="range" role="group"></div> <button type="submit" class="btn btn-sm"> </button></form> <!>`,1),yd=f(`<!> <!>`,1);function bd(n,i){U(i,!0);let a=[[30,`month`],[90,`quarter`],[365,`year`]],c=At(),f=w(null),p=w(``),m=w(``),h=w(90),g=w(null);async function v(){try{S(f,await i.api.query(`
|
|
597
|
+
query Provisioning {
|
|
598
|
+
scimBaseUrl
|
|
599
|
+
provisioningTokens { id label usedAt expiresAt createdAt issuedBy { identifier } organization { name } }
|
|
600
|
+
organizations { key name }
|
|
601
|
+
}
|
|
602
|
+
`),!0)}catch(e){c.blame(e)}}v();async function y(){let e=await c.attempt(()=>i.api.query(`mutation Issue($label: String!, $expiresIn: Int, $organization: ID) {
|
|
603
|
+
issueProvisioningToken(label: $label, expiresIn: $expiresIn, organization: $organization) { secret }
|
|
604
|
+
}`,{label:t(p).trim()||`Provisioning`,expiresIn:t(h)*86400,organization:t(m)||null}));e&&(S(g,e.issueProvisioningToken,!0),S(p,``),await v())}async function b(e){confirm(Z(`provisioning.revoke_confirm`,{label:e.label}))&&await c.attempt(()=>i.api.query(`mutation Revoke($id: ID!) { revokeProvisioningToken(id: $id) { provisioningToken { id } } }`,{id:e.id}),Z(`provisioning.revoked`,{label:e.label}))&&await v()}{let i=J(()=>Z(`provisioning.title`)),v=J(()=>`${Z(`provisioning.lede`)} ${Z(`provisioning.connect.help`)}`);Q(n,{row:!0,get title(){return t(i)},get help(){return t(v)},children:(n,i)=>{var v=yd(),x=u(v);Bn(x,{get feedback(){return c.state}});var C=l(x,2),w=n=>{var i=vd(),c=u(i),v=o(c),x=G(v,!0),C=l(v,2),w=G(C,!0);Y(c);var T=l(c,2),E=n=>{var i=hd();X(i,21,()=>t(f).provisioningTokens,e=>e.id,(n,i)=>{var a=md(),c=o(a),u=o(c),f=o(u,!0),p=l(f),m=n=>{var r=pd(),a=G(r);s(()=>B(a,`· ${t(i).organization.name??``}`)),e(n,r)};r(p,e=>{t(i).organization&&e(m)}),Y(u);var h=l(u,2),g=G(h,!0);Y(c);var _=l(c,2),v=G(_,!0);Y(a),s((e,n)=>{B(f,t(i).label),B(g,e),B(v,n)},[()=>t(i).issuedBy?Z(`provisioning.tokens.issued_by`,{identifier:t(i).issuedBy.identifier,used:Vt(t(i).usedAt,Z(`provisioning.tokens.never`)),expires:zt(t(i).expiresAt)}):Z(`provisioning.tokens.detail`,{used:Vt(t(i).usedAt,Z(`provisioning.tokens.never`)),expires:zt(t(i).expiresAt)}),()=>Z(`provisioning.tokens.revoke`)]),d(`click`,_,()=>b(t(i))),e(n,a)}),Y(i),e(n,i)};r(T,e=>{t(f).provisioningTokens.length&&e(E)});var D=l(T,2),O=o(D);j(O);var k=l(O,2),A=e=>{{let n=J(()=>Z(`provisioning.connect.provisions`)),r=J(()=>[[``,Z(`provisioning.connect.every_account`)],...t(f).organizations.map(e=>[e.key,Z(`provisioning.connect.only_members`,{name:e.name})])]);ua(e,{get name(){return t(n)},get value(){return t(m)},get options(){return t(r)},onchange:e=>S(m,e,!0)})}};r(k,e=>{t(f).organizations.length&&e(A)});var M=l(k,2);X(M,21,()=>a,([e,t])=>e,(n,r)=>{var i=J(()=>re(t(r),2));let a=()=>t(i)[0],o=()=>t(i)[1];var c=gd(),l=G(c,!0);s(e=>{P(c,`aria-pressed`,t(h)===a()),B(l,e)},[()=>Z(`provisioning.lifetimes.${o()}`)]),d(`click`,c,()=>S(h,a(),!0)),e(n,c)}),Y(M);var N=l(M,2),F=G(N,!0);Y(D);var I=l(D,2),L=n=>{var r=_d(),i=o(r),a=G(i,!0),c=l(i,2),u=G(c,!0);Y(r),s(e=>{B(a,e),B(u,t(g).secret)},[()=>Z(`provisioning.connect.shown_once`)]),e(n,r)};r(I,e=>{t(g)&&e(L)}),s((e,n,r,i)=>{B(x,e),B(w,t(f).scimBaseUrl),P(O,`aria-label`,n),P(M,`aria-label`,r),B(F,i)},[()=>Z(`provisioning.connect.base_url`),()=>Z(`provisioning.connect.label`),()=>Z(`provisioning.connect.lifetime`),()=>Z(`provisioning.connect.issue`)]),_(`submit`,D,e=>{e.preventDefault(),y()}),V(O,()=>t(p),e=>S(p,e)),e(n,i)};r(C,e=>{t(f)&&e(w)}),e(n,v)},$$slots:{default:!0}})}D()}c([`click`]);var xd=f(`<div class="grid gap-4"><!> <!></div>`);function Sd(n,r){U(r,!0);{let i=J(()=>Z(`directory.title`)),a=J(()=>Z(`directory.lede`));Kn(n,{get title(){return t(i)},get lede(){return t(a)},children:(t,n)=>{var i=xd(),a=o(i);bd(a,{get api(){return r.api}}),fd(l(a,2),{get api(){return r.api}}),Y(i),e(t,i)},$$slots:{default:!0}})}D()}var Cd=f(`<img width="24" height="24" alt=""/>`),wd=f(`<div class="settings"><div class="settings-bar"><nav class="settings-tabs"></nav> <div class="settings-me"><a class="settings-who"><!> <span> </span></a> <button type="button" class="settings-tab"> </button> <button type="button" class="settings-tab settings-quiet"> </button></div></div> <div class="min-w-0"><!></div></div>`);function Td(n,i){U(i,!0);let c=[`settings`,`policies`,`providers`,`directory`,`messages`,`activity`];function u(){confirm(Z(`settings_shell.forget_confirm`))&&i.onunpair()}var f=wd(),p=o(f),m=o(p);X(m,20,()=>c,e=>e,(n,r)=>{{let o=J(()=>`/${r}`),c=J(()=>i.current===r?`settings-tab-on`:``);yt(n,{get to(){return t(o)},get class(){return`settings-tab ${t(c)??``}`},children:(t,n)=>{H();var i=a();s(e=>B(i,e),[()=>Z(`settings_shell.tabs.${r}`)]),e(t,i)},$$slots:{default:!0}})}}),Y(m);var h=l(m,2),g=o(h),y=o(g),b=t=>{var n=Cd();let r;s(()=>{P(n,`src`,`${i.viewer.avatars.photo??i.viewer.avatars.identicon}?size=64`),r=ce(n,1,``,null,r,{drawn:!i.viewer.avatars.photo})}),_(`error`,n,e=>e.currentTarget.src=`${i.viewer.avatars.identicon}?size=64`),le(n),e(t,n)};r(y,e=>{i.viewer&&e(b)});var x=l(y,2),S=G(x,!0);Y(g);var C=l(g,2),w=G(C,!0),T=l(C,2),E=G(T,!0);Y(h),Y(p);var O=l(p,2),k=o(O);v(k,()=>i.children),Y(O),Y(f),s((e,t,n,r)=>{P(m,`aria-label`,e),P(g,`href`,i.account),P(g,`title`,t),B(S,i.identifier),B(w,n),B(E,r)},[()=>Z(`settings_shell.label`),()=>Z(`settings_shell.account`),()=>Z(`settings_shell.sign_out`),()=>Z(`settings_shell.forget`)]),d(`click`,C,function(...e){i.onsignout?.apply(this,e)}),d(`click`,T,u),e(n,f),D()}c([`click`]);var Ed=f(`<div class="grid min-h-screen place-items-center"><!></div>`),Dd=f(`<div class="auth-page"><main class="auth-col surface-terminus"><div class="flow"><span class="state state-bad"> </span> <h1 class="prompt-title"> </h1> <p class="said"> </p> <button type="button" class="action"> </button></div></main></div>`),Od=f(`<img src="/masks-public/icon.svg" alt="" class="brand-mark"/> `,1),kd=f(`<span class="nav-count"> </span>`),Ad=f(` <!>`,1),jd=p(`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17.03 8.46 L19.13 8.85 L19.13 11.15 L17.03 11.54 L16.06 13.88 L17.27 15.64 L15.64 17.27 L13.88 16.06 L11.54 17.03 L11.15 19.13 L8.85 19.13 L8.46 17.03 L6.12 16.06 L4.36 17.27 L2.73 15.64 L3.94 13.88 L2.97 11.54 L0.87 11.15 L0.87 8.85 L2.97 8.46 L3.94 6.12 L2.73 4.36 L4.36 2.73 L6.12 3.94 L8.46 2.97 L8.85 0.87 L11.15 0.87 L11.54 2.97 L13.88 3.94 L15.64 2.73 L17.27 4.36 L16.06 6.12 Z"></path><circle cx="10" cy="10" r="2.75"></circle></svg>`),Md=f(`<p class="alert alert-info mb-4 text-sm" role="status"> </p>`),Nd=f(`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"></svg> <span> </span>`,1),Pd=f(`<div class="flex min-h-screen flex-col"><header class="console-top sticky top-0 z-20"><div class="console-bar mx-auto flex w-full max-w-6xl items-center gap-x-6 py-2"><!> <nav class="nav md:flex-1"></nav> <!></div></header> <main class="console-main mx-auto w-full max-w-6xl flex-1"><!> <!></main> <nav class="tabbar md:hidden"></nav></div>`);function Fd(i,c){U(c,!0);let f=x(()=>ut(c.boot)),p=x(()=>ft(c.boot.root));pt(p);let m=w(`starting`),h=w(null),g=w(null),_=w(null),v=J(()=>!t(_)||t(_).includes(`owner`)?null:t(_).includes(`security`)&&t(_).includes(`support`)?Z(`app.limited.both`):t(_).includes(`security`)?Z(`app.limited.security`):t(_).includes(`support`)?Z(`app.limited.support`):Z(`app.limited.read`)),y=[[``,`overview`,`<path d="M3.5 10.5 10 4l6.5 6.5"/><path d="M5.5 9v7h9V9"/>`],[`/actors`,`actors`,`<circle cx="10" cy="7" r="3"/><path d="M4 17c.8-3 3.2-4.5 6-4.5s5.2 1.5 6 4.5"/>`],[`/organizations`,`organizations`,`<rect x="3.5" y="7" width="13" height="9.5" rx="1.5"/><path d="M7.5 7V4.5h5V7"/><path d="M3.5 11h13"/>`],[`/clients`,`clients`,`<rect x="3" y="3" width="6" height="6" rx="1.5"/><rect x="11" y="3" width="6" height="6" rx="1.5"/><rect x="3" y="11" width="6" height="6" rx="1.5"/><rect x="11" y="11" width="6" height="6" rx="1.5"/>`]],C=[`settings`,`policies`,`providers`,`directory`,`messages`,`activity`],T=`masks:manage:repaired`;function E(e){if(e===`invalid_client`)return!0;if(e!==`invalid_scope`)return!1;try{return!sessionStorage.getItem(T)&&(sessionStorage.setItem(T,`1`),!0)}catch{return!1}}function O(){location.replace(st(c.boot))}async function k(){let e=new URLSearchParams(location.search);try{if(E(e.get(`error`))){f.unpair(),O();return}if(e.get(`error`)){S(h,e.get(`error_description`)||e.get(`error`),!0),p.replace(``),S(m,`failed`);return}if(e.get(`initial_access_token`)){await ct(c.boot,e.get(`initial_access_token`)),p.replace(``),await f.authorize(``);return}if(!f.paired()){O();return}if(p.segments[0]===`callback`){let{returnTo:e}=await f.callback();p.replace(e||``),F();return}if(!f.signedIn()){await f.authorize(p.state.path.slice(c.boot.root.length)+p.state.search+location.hash);return}F()}catch(e){S(h,e.message,!0),S(m,`failed`)}}let A=w(0);async function j(){try{let e=await f.query(`query Waiting { approvals: actorCount(pendingApproval: true) help: actorCount(recoveryRequested: true) }`);S(A,e.approvals+e.help)}catch{S(A,0)}}let M=J(()=>p.segments[0]??``),N=J(()=>Z(`app.waiting`,{count:t(A)}));b(()=>{t(m)===`ready`&&t(M)!==void 0&&j()});function F(){S(m,`ready`),f.query(`query Viewer { viewer { identifier avatars { photo identicon } } manageLevels }`).then(e=>{S(g,e.viewer,!0),S(_,e.manageLevels,!0)}).catch(()=>{})}k();let I=J(()=>p.segments[0]??``),L=J(()=>C.includes(t(I))),R=J(()=>t(g)?.identifier??f.state.identity?.preferred_username??Z(`app.account`));function ee(){location.assign(c.boot.root)}function V(){f.unpair(),ee()}async function te(){location.assign(await f.signOut()??c.boot.root)}var ne=z(),W=u(ne),ie=n=>{var r=Ed(),i=o(r);{let e=J(()=>Z(`app.starting`));xt(i,{get label(){return t(e)}})}Y(r),e(n,r)},K=n=>{var r=Dd(),i=o(r),a=o(i),u=o(a),f=G(u,!0),p=l(u,2),m=G(p,!0),g=l(p,2),_=G(g,!0),v=l(g,2),y=G(v,!0);Y(a),Y(i),Y(r),s((e,n,r)=>{B(f,e),B(m,n),B(_,t(h)),B(y,r)},[()=>Z(`app.stopped`),()=>Z(`app.failed`,{tenant:c.boot.tenant.name}),()=>Z(`app.retry`)]),d(`click`,v,ee),e(n,r)},ae=i=>{var d=Pd(),m=o(d),h=o(m),_=o(h);yt(_,{to:``,class:`brand`,children:(t,n)=>{var r=Od(),i=l(u(r),1,!0);s(()=>B(i,c.boot.tenant.name)),e(t,r)},$$slots:{default:!0}});var b=l(_,2);X(b,21,()=>y,([e,t])=>e,(n,i)=>{var a=J(()=>re(t(i),2));let o=()=>t(a)[0],c=()=>t(a)[1];{let i=J(()=>t(I)===o().replace(`/`,``)?`nav-item-on`:``);yt(n,{get to(){return o()},get class(){return`nav-item ${t(i)??``}`},children:(n,i)=>{H();var a=Ad(),o=u(a,!0),d=l(o),f=n=>{var r=kd(),i=G(r,!0);s(()=>{P(r,`title`,t(N)),B(i,t(A))}),e(n,r)};r(d,e=>{c()===`actors`&&t(A)>0&&e(f)}),s(e=>B(o,e),[()=>Z(`app.nav.${c()}`)]),e(n,a)},$$slots:{default:!0}})}}),Y(b);var x=l(b,2);{let n=J(()=>t(L)?`console-cog-on`:``),r=J(()=>Z(`app.settings`)),i=J(()=>Z(`app.settings`));yt(x,{to:`/settings`,get class(){return`console-cog ms-auto ${t(n)??``}`},get"aria-label"(){return t(r)},get title(){return t(i)},children:(t,n)=>{var r=jd();e(t,r)},$$slots:{default:!0}})}Y(h),Y(m);var S=l(m,2),C=o(S),w=n=>{var r=Md(),i=G(r,!0);s(()=>B(i,t(v))),e(n,r)};r(C,e=>{t(v)&&e(w)});var T=l(C,2),E=e=>{Xc(e,{get api(){return f},get boot(){return c.boot}})},D=t=>{var n=z(),i=u(n),a=e=>{ra(e,{get api(){return f},get id(){return p.segments[2]}})},o=e=>{Wi(e,{get api(){return f},get uuid(){return p.segments[1]},get part(){return p.segments[2]}})},s=e=>{cr(e,{get api(){return f}})};r(i,e=>{p.segments[1]===`devices`&&p.segments[2]?e(a):p.segments[1]?e(o,1):e(s,-1)}),e(t,n)},O=t=>{var n=z(),i=u(n),a=e=>{Vs(e,{get api(){return f},get organizationKey(){return p.segments[1]},get part(){return p.segments[2]}})},o=e=>{cs(e,{get api(){return f}})};r(i,e=>{p.segments[1]?e(a):e(o,-1)}),e(t,n)},k=t=>{var n=z(),i=u(n),a=e=>{qo(e,{get api(){return f},get clientId(){return p.segments[1]},get part(){return p.segments[2]}})},o=e=>{Oa(e,{get api(){return f}})};r(i,e=>{p.segments[1]?e(a):e(o,-1)}),e(t,n)},j=n=>{Td(n,{get current(){return t(I)},get viewer(){return t(g)},get identifier(){return t(R)},get account(){return c.boot.account},onsignout:te,onunpair:V,children:(n,i)=>{var a=z(),o=u(a),s=e=>{ql(e,{get api(){return f},get providerKey(){return p.segments[1]},get part(){return p.segments[2]}})},l=e=>{gl(e,{get api(){return f}})},d=e=>{rd(e,{get api(){return f}})},m=e=>{Sd(e,{get api(){return f}})},h=e=>{Su(e,{get api(){return f},get part(){return p.segments[1]}})},g=e=>{Mu(e,{get api(){return f}})},_=e=>{ol(e,{get api(){return f}})},v=e=>{wc(e,{get api(){return f},get boot(){return c.boot}})};r(o,e=>{t(I)===`providers`&&p.segments[1]?e(s):t(I)===`providers`?e(l,1):t(I)===`policies`?e(d,2):t(I)===`directory`?e(m,3):t(I)===`messages`?e(h,4):t(I)===`activity`&&p.segments[1]===`streams`?e(g,5):t(I)===`activity`?e(_,6):e(v,-1)}),e(n,a)},$$slots:{default:!0}})},M=t=>{gt(t,{children:(t,n)=>{H();var r=a();s(e=>B(r,e),[()=>Z(`app.missing`)]),e(t,r)},$$slots:{default:!0}})};r(T,e=>{t(I)===``?e(E):t(I)===`actors`?e(D,1):t(I)===`organizations`?e(O,2):t(I)===`clients`?e(k,3):t(L)?e(j,4):e(M,-1)}),Y(S);var F=l(S,2);X(F,21,()=>y,([e,t,n])=>e,(r,i)=>{var a=J(()=>re(t(i),3));let o=()=>t(a)[0],c=()=>t(a)[1],d=()=>t(a)[2];{let i=J(()=>t(I)===o().replace(`/`,``)?`tabbar-item-on`:``);yt(r,{get to(){return o()},get class(){return`tabbar-item ${t(i)??``}`},children:(t,r)=>{var i=Nd(),a=u(i);n(a,d,!0),Y(a);var o=l(a,2),f=G(o,!0);s(e=>B(f,e),[()=>Z(`app.nav.${c()}`)]),e(t,i)},$$slots:{default:!0}})}}),Y(F),Y(d),s(e=>P(F,`aria-label`,e),[()=>Z(`app.sections`)]),e(i,d)};r(W,e=>{t(m)===`starting`?e(ie):t(m)===`failed`?e(K,1):e(ae,-1)}),e(i,ne),D()}c([`click`]);var Id=document.getElementById(`manage`);if(Id){let e=JSON.parse(Id.dataset.boot);Ze(e.copy,document.documentElement.lang||`en`),Id.replaceChildren(),m(Fd,{target:Id,props:{boot:e}})}
|
|
605
|
+
//# sourceMappingURL=manage-DbLHfFvt.js.map
|