mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-26 18:12:51 +08:00
3 lines
7.8 KiB
JavaScript
3 lines
7.8 KiB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./LoginShowcase-CwRzXrsa.js","./vendor-react-Bf71BWbF.js","./index-CXHBmSa5.js","./index-BMPxGQXj.css"])))=>i.map(i=>d[i]);
|
|
import{u as z,a as W,e as X,d as I,A as L,i as Y,b as ee,s as se,r as ne,w as te,n as B,c as re,f as oe,L as C,h as ie,g as ae,S as le,l as ce,E as H,j as ue,I as de,T as b,B as ge,k as me,_ as pe}from"./index-CXHBmSa5.js";import{r as u,j as s}from"./vendor-react-Bf71BWbF.js";import{D as P,s as fe,d as he,a as xe,o as we}from"./auth-BGnwk8Hi.js";function ke(n,r,o,a){return n.some(t=>t.id===r&&B(t.api)===B(o))?n.map(t=>t.id===r?{...t,token:a.trim()}:t):null}const ye=/^[A-Za-z0-9_.-]{1,64}$/;function je(n,r,o,a){const t={};r?ye.test(r)||(t.username="login.badUsername"):t.username="login.usernameRequired";const l=[...o].length;return l?n==="setup"&&l<8?t.password="login.passwordShort":l>128||new TextEncoder().encode(o).length>512?t.password="login.passwordLong":n==="setup"&&o!==a&&(t.confirm="login.mismatch"):t.password="login.passwordRequired",t}function ve(n){return n instanceof L?n.code==="invalid_credentials"?{key:"login.invalidCredentials"}:n.code==="setup_required"?{key:"login.needsSetup",switchTo:"setup"}:n.code==="setup_already_completed"?{key:"login.alreadySetUp",switchTo:"login"}:n.code==="permission_denied"?{key:"login.setupPeer"}:n.code==="rate_limited"?{key:"login.rateLimited",params:{n:n.retryAfter??60}}:null:null}function be(n){return n instanceof SyntaxError?!0:n instanceof L&&(n.status===404||n.status===401||n.status===403)}async function Se(n,r){try{return fe(await he(n,r))}catch(o){if(!be(o))throw o;return!(o instanceof L)||o.status!==404||await xe(n,r)?"token":"no-api"}}function Te(n,r,o){try{const{profiles:a,activeId:t}=ne(),l=ke(a,n,r,o);if(!l)return"login.stale";te({profiles:l,activeId:t})}catch{return"settings.saveError"}return null}async function Ee(n,r,o,a){let t;try{t=await we(r,o,a)}catch(l){return ve(l)??{error:l}}try{se(n,r,t.token,t.expires_at)}catch{return{key:"settings.saveError"}}return null}function Ne(n,r){const{kind:o,failure:a,attempt:t,ended:l,rejected:h}=n;return o==="no-api"?null:a!==null?{tone:"negative",text:typeof a=="string"?a:r(a.key,a.params),focus:!0,id:t}:l?{tone:"informative",text:r("login.sessionEnded"),focus:!1,id:0}:h&&o==="token"?{tone:"negative",text:r("login.rejected"),focus:!1,id:0}:null}function Ae(n,r,o,a){const t=z(),l=W(),[h]=u.useState(()=>X(n,r)),[c,w]=u.useState(null),[k,y]=u.useState({attempt:0,error:null});u.useEffect(()=>{const i=new AbortController;return Se(r,i.signal).then(g=>w(g),g=>{i.signal.aborted||y(m=>({...m,error:g instanceof Error?g:new Error(String(g))}))}),()=>i.abort()},[r,k.attempt]);const[p,d]=u.useState(""),e=Y(r),[x,j]=u.useState(e?P.username:""),[f,S]=u.useState(e?P.password:""),[D,R]=u.useState(""),[T,K]=u.useState(!1),[U,q]=u.useState(!1),[E,F]=u.useState({}),[V,v]=u.useState(null),[Z,Q]=u.useState(0),N=(i,g)=>m=>{g(m),E[i]&&F(({[i]:Ce,...J})=>J)},$=()=>{if(!p.trim())return;const i=Te(n,r,p);i?v({key:i}):location.reload()},G=async i=>{const g=je(i,x,f,D);if(F(g),Object.keys(g).length)return;q(!0);const m=await Ee(n,r,i,{username:x,password:f});if(!m){location.reload();return}if(q(!1),"error"in m){v(t("login.failed",{error:ee(m.error,t)}));return}m.switchTo&&(w(m.switchTo),R("")),v(m)},A=c==="setup"||c==="login",_=i=>E[i]?t(E[i]):void 0;return{kind:c,discoveryError:k.error,retryDiscovery:()=>y(i=>({attempt:i.attempt+1,error:null})),title:t(c==="no-api"?"login.noApiTitle":c==="setup"?"login.setupTitle":c==="token"?"login.title":"login.passwordTitle"),note:c==="no-api"?t("login.noApiNote"):c==="setup"?t("login.setupNote",{backend:o}):c==="login"?t("login.connectedTo",{backend:o}):t("login.note",{backend:o}),demoNote:e&&c==="login"?t("login.demoNote",P):null,alert:Ne({kind:c,failure:V,attempt:Z,ended:h,rejected:a},t),busy:U,token:p,setToken:d,username:x,setUsername:N("username",j),usernameError:_("username"),password:f,setPassword:N("password",S),passwordError:_("password"),confirm:D,setConfirm:N("confirm",R),confirmError:_("confirm"),submit:()=>{U||c==="no-api"||(v(null),Q(i=>i+1),A?G(c):$())},canSubmit:c!=="no-api"&&(A||!!p.trim()),secretType:T?"text":"password",toggle:()=>K(i=>!i),toggleText:t(A?T?"login.hidePassword":"login.showPassword":T?"settings.hideToken":"settings.showToken"),guideHref:I(l),requirementsHref:I(l,"no-native-api")}}function M({className:n,...r}){return s.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:10,height:10,viewBox:"0 0 12 12","aria-hidden":"true",focusable:"false",className:re("rp-icon rp-link-out",n),...r,children:s.jsx("path",{fill:"currentColor",d:"m10.08887,1h-5.51074c-.50293,0-.91113.4082-.91113.91113s.4082.91113.91113.91113h3.31055L1.35547,9.35547c-.35645.35645-.35645.93262,0,1.28906.17773.17773.41113.2666.64453.2666s.4668-.08887.64453-.2666l6.5332-6.5332v3.31055c0,.50293.4082.91113.91113.91113s.91113-.4082.91113-.91113V1.91113c0-.50293-.4082-.91113-.91113-.91113Z"})})}const _e=u.lazy(()=>pe(()=>import("./LoginShowcase-CwRzXrsa.js"),__vite__mapDeps([0,1,2,3]),import.meta.url)),O=s.jsx("div",{className:"rp-login-showcase","aria-hidden":"true"});function Re({profileId:n,api:r,backend:o,rejected:a,lang:t,pickLang:l,dark:h,themeLabel:c,toggleScheme:w,wordmark:k,error:y,onRetry:p}){const d=z(),e=Ae(n,r,o,a),x=oe("(min-width: 1024px)"),j={shown:e.secretType==="text",label:e.toggleText,onToggle:e.toggle},f=s.jsxs("div",{className:"rp-login-links",children:[s.jsx(C,{appearance:"link",href:ie("settings"),children:d("login.settings")}),s.jsxs(C,{appearance:"link",href:e.guideHref,external:!0,children:[d("shell.guide"),s.jsx(M,{})]})]});return s.jsxs("div",{className:"rp-login-page",children:[s.jsxs("div",{className:"rp-login-pane",children:[s.jsxs("header",{className:"rp-login-controls",children:[s.jsx(ae,{lang:t,pickLang:l}),s.jsx(le,{dark:h,label:c,toggle:w})]}),s.jsxs("main",{className:"rp-login-column",children:[s.jsxs("div",{className:"rp-login-brand",children:[s.jsx("img",{src:ce,alt:""}),s.jsx("span",{className:"rp-brand-text",children:s.jsx("span",{children:k})})]}),s.jsxs("div",{className:"rp-login-head",children:[s.jsx("h1",{className:"rp-h1",children:e.title}),e.note&&s.jsx("p",{className:"rp-login-note",children:e.note})]}),s.jsx(H,{error:y,onRetry:p}),e.kind===null?e.discoveryError?s.jsxs(s.Fragment,{children:[s.jsx(H,{error:e.discoveryError,onRetry:e.retryDiscovery}),f]}):s.jsx(ue,{}):s.jsxs(s.Fragment,{children:[s.jsxs("form",{className:"rp-login",onSubmit:S=>{S.preventDefault(),e.submit()},children:[e.alert&&s.jsx(de,{tone:e.alert.tone,takeFocus:e.alert.focus,children:e.alert.text},e.alert.id),e.kind==="no-api"?s.jsxs(C,{appearance:"link",href:e.requirementsHref,external:!0,children:[d("login.requirements"),s.jsx(M,{})]}):e.kind==="token"?s.jsx(b,{label:d("login.token"),name:"token",type:e.secretType,value:e.token,autoComplete:"off",onChange:e.setToken,reveal:j}):s.jsxs(s.Fragment,{children:[s.jsx(b,{label:d("login.username"),name:"username",value:e.username,autoComplete:"username",spellCheck:"false",error:e.usernameError,onChange:e.setUsername}),s.jsx(b,{label:d("login.password"),name:"password",type:e.secretType,value:e.password,autoComplete:e.kind==="setup"?"new-password":"current-password",description:e.kind==="setup"?d("login.passwordRule"):void 0,error:e.passwordError,onChange:e.setPassword,reveal:j}),e.kind==="setup"&&s.jsx(b,{label:d("login.confirm"),name:"confirm",type:e.secretType,value:e.confirm,autoComplete:"new-password",error:e.confirmError,onChange:e.setConfirm})]}),e.kind!=="no-api"&&s.jsx(ge,{accent:!0,className:"rp-login-submit",type:"submit",isDisabled:!e.canSubmit,isPending:e.busy,children:d(e.kind==="setup"?"login.create":e.kind==="login"?"login.signIn":"login.submit")})]}),e.demoNote&&s.jsx("p",{className:"rp-login-note rp-login-account",children:e.demoNote}),f]})]})]}),x&&s.jsx(me,{fallback:O,children:s.jsx(u.Suspense,{fallback:O,children:s.jsx(_e,{})})})]})}export{Re as Login};
|