r2-explorer 1.0.7 → 1.1.1

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.
Files changed (86) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -4
  3. package/dashboard/assets/AuthLayout.297460d7.js +1 -0
  4. package/dashboard/assets/EmailFilePage.c4890c9c.css +1 -0
  5. package/dashboard/assets/EmailFilePage.f737d2d4.js +2 -0
  6. package/dashboard/assets/ErrorNotFound.be9ef3ac.js +1 -0
  7. package/dashboard/assets/KFOkCnqEu92Fr1MmgVxIIzQ.d240a9ae.woff +0 -0
  8. package/dashboard/assets/KFOlCnqEu92Fr1MmEU9fBBc-.6ba203eb.woff +0 -0
  9. package/dashboard/assets/KFOlCnqEu92Fr1MmSU5fBBc-.80684728.woff +0 -0
  10. package/dashboard/assets/KFOlCnqEu92Fr1MmWUlfBBc-.2df244f6.woff +0 -0
  11. package/dashboard/assets/KFOlCnqEu92Fr1MmYUtfBBc-.742ce02b.woff +0 -0
  12. package/dashboard/assets/KFOmCnqEu92Fr1Mu4mxM.f00fa16d.woff +0 -0
  13. package/dashboard/assets/LoginPage.fbddb0c0.js +1 -0
  14. package/dashboard/assets/auth-store.748ba7e9.js +1 -0
  15. package/dashboard/assets/auth.221c63c3.js +1 -0
  16. package/dashboard/assets/bus.b6904cee.js +1 -0
  17. package/dashboard/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff +0 -0
  18. package/dashboard/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 +0 -0
  19. package/dashboard/assets/index.b2fb13c9.js +104 -0
  20. package/dashboard/assets/index.c9ff738b.css +5 -0
  21. package/dashboard/favicon.ico +0 -0
  22. package/dashboard/icons/favicon-128x128.png +0 -0
  23. package/dashboard/icons/favicon-16x16.png +0 -0
  24. package/dashboard/icons/favicon-32x32.png +0 -0
  25. package/dashboard/icons/favicon-96x96.png +0 -0
  26. package/dashboard/icons/logo.png +0 -0
  27. package/dashboard/index.html +48 -0
  28. package/dashboard/logo-white.svg +5 -0
  29. package/dashboard/logo.png +0 -0
  30. package/dashboard/robots.txt +2 -0
  31. package/dashboard/spa/assets/AuthLayout.297460d7.js +1 -0
  32. package/dashboard/spa/assets/EmailFilePage.c4890c9c.css +1 -0
  33. package/dashboard/spa/assets/EmailFilePage.f737d2d4.js +2 -0
  34. package/dashboard/spa/assets/ErrorNotFound.be9ef3ac.js +1 -0
  35. package/dashboard/spa/assets/KFOkCnqEu92Fr1MmgVxIIzQ.d240a9ae.woff +0 -0
  36. package/dashboard/spa/assets/KFOlCnqEu92Fr1MmEU9fBBc-.6ba203eb.woff +0 -0
  37. package/dashboard/spa/assets/KFOlCnqEu92Fr1MmSU5fBBc-.80684728.woff +0 -0
  38. package/dashboard/spa/assets/KFOlCnqEu92Fr1MmWUlfBBc-.2df244f6.woff +0 -0
  39. package/dashboard/spa/assets/KFOlCnqEu92Fr1MmYUtfBBc-.742ce02b.woff +0 -0
  40. package/dashboard/spa/assets/KFOmCnqEu92Fr1Mu4mxM.f00fa16d.woff +0 -0
  41. package/dashboard/spa/assets/LoginPage.fbddb0c0.js +1 -0
  42. package/dashboard/spa/assets/auth-store.748ba7e9.js +1 -0
  43. package/dashboard/spa/assets/auth.221c63c3.js +1 -0
  44. package/dashboard/spa/assets/bus.b6904cee.js +1 -0
  45. package/dashboard/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff +0 -0
  46. package/dashboard/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 +0 -0
  47. package/dashboard/spa/assets/index.b2fb13c9.js +104 -0
  48. package/dashboard/spa/assets/index.c9ff738b.css +5 -0
  49. package/dashboard/spa/favicon.ico +0 -0
  50. package/dashboard/spa/icons/favicon-128x128.png +0 -0
  51. package/dashboard/spa/icons/favicon-16x16.png +0 -0
  52. package/dashboard/spa/icons/favicon-32x32.png +0 -0
  53. package/dashboard/spa/icons/favicon-96x96.png +0 -0
  54. package/dashboard/spa/icons/logo.png +0 -0
  55. package/dashboard/spa/index.html +48 -0
  56. package/dashboard/spa/logo-white.svg +5 -0
  57. package/dashboard/spa/logo.png +0 -0
  58. package/dashboard/spa/robots.txt +2 -0
  59. package/dist/index.d.mts +33 -0
  60. package/dist/index.d.ts +33 -0
  61. package/dist/index.js +804 -1
  62. package/dist/index.mjs +773 -1
  63. package/package.json +66 -103
  64. package/dist/src/authentication/api/access.d.ts +0 -4
  65. package/dist/src/authentication/api/basic.d.ts +0 -3
  66. package/dist/src/buckets/api/createFolder.d.ts +0 -8
  67. package/dist/src/buckets/api/deleteObject.d.ts +0 -8
  68. package/dist/src/buckets/api/getObject.d.ts +0 -8
  69. package/dist/src/buckets/api/headObject.d.ts +0 -8
  70. package/dist/src/buckets/api/listBuckets.d.ts +0 -10
  71. package/dist/src/buckets/api/listObjects.d.ts +0 -8
  72. package/dist/src/buckets/api/moveObject.d.ts +0 -8
  73. package/dist/src/buckets/api/multipart/completeUpload.d.ts +0 -11
  74. package/dist/src/buckets/api/multipart/createUpload.d.ts +0 -8
  75. package/dist/src/buckets/api/multipart/partUpload.d.ts +0 -8
  76. package/dist/src/buckets/api/putMetadata.d.ts +0 -8
  77. package/dist/src/buckets/api/putObject.d.ts +0 -8
  78. package/dist/src/buckets/router.d.ts +0 -1
  79. package/dist/src/dashbord.d.ts +0 -2
  80. package/dist/src/dates.d.ts +0 -2
  81. package/dist/src/emails/receiveEmail.d.ts +0 -2
  82. package/dist/src/index.d.ts +0 -5
  83. package/dist/src/interfaces.d.ts +0 -22
  84. package/dist/src/server/api/getInfo.d.ts +0 -25
  85. package/dist/src/server/router.d.ts +0 -1
  86. package/dist/src/settings.d.ts +0 -5
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Gabriel Massadas
3
+ Copyright (c) 2023-2024 Gabriel Massadas
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -35,13 +35,14 @@ Read this in other languages: [Español](READMEes.md), [Português](READMEpt.md)
35
35
  - Upload/Rename/Download/Delete files
36
36
  - Right click in file for extra options
37
37
  - Multipart upload for big files
38
+ - File editing
38
39
 
39
40
  ## Getting Started
40
41
 
41
42
  Run this command to get an example project setup
42
43
 
43
44
  ```bash
44
- npm create r2-explorer@latest
45
+ npm create cloudflare@latest r2-explorer -- --template "G4brym/R2-Explorer/template"
45
46
  ```
46
47
 
47
48
  ## Upgrading your installation
@@ -62,8 +63,12 @@ wrangler publish
62
63
  - allow bucket names with spaces
63
64
  - Search files
64
65
  - Rename folders
65
- - Delete folders
66
- - Image thumbnail's using Cloudflare workers
66
+ - Image thumbnail's ?
67
+ - Object detection on images using workers-ai ?
67
68
  - Tooltip when hovering a file with absolute time in "x days time ago" format
68
- - bundle bootstrap icons instead of importing
69
69
  - support for responding to emails
70
+ - More advanced file editing with more validations per file type
71
+
72
+ ## Known issues
73
+
74
+ - Email inline images and assets don't load when using basic auth
@@ -0,0 +1 @@
1
+ import{_ as a,c as n,r,o as s,e as c,w as e,Q as _,f as o,g as p}from"./index.b2fb13c9.js";const u=n({name:"AuthLayout",components:{}});function f(i,d,l,m,h,v){const t=r("router-view");return s(),c(_,{view:"hHh lpR fFf"},{default:e(()=>[o(p,{class:"container"},{default:e(()=>[o(t)]),_:1})]),_:1})}var x=a(u,[["render",f]]);export{x as default};
@@ -0,0 +1 @@
1
+ iframe[data-v-59368c26]{width:100%}.attachments[data-v-59368c26]{gap:10px}@media (max-width: 992px){.attachments[data-v-59368c26]{flex-direction:column}}
@@ -0,0 +1,2 @@
1
+ import{h as te,G as _e,H as Se,I as q,J as W,K as Te,L as $e,M as Pe,N as x,k as _,O as N,P as Be,R as Ce,S as qe,T as He,U as Ee,V as Me,W as Ae,X as z,Y as D,Z as U,$ as V,a0 as Fe,a1 as j,a2 as R,a3 as Oe,l as M,a4 as Ie,n as Le,a5 as Qe,m as ae,a6 as We,_ as xe,c as Ne,a7 as G,a8 as J,a9 as ze,aa as w,u as De,ab as Ue,o as u,ac as p,f as s,w as o,F as K,ad as Ve,x as $,E as P,z as b,ae as X,e as H,B as Y,y as d,A as v,t as Z,af as ee,ag as je,ah as Re}from"./index.b2fb13c9.js";var E=te({name:"QTooltip",inheritAttrs:!1,props:{..._e,...Se,...q,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null},transitionShow:{...q.transitionShow,default:"jump-down"},transitionHide:{...q.transitionHide,default:"jump-up"},anchor:{type:String,default:"bottom middle",validator:W},self:{type:String,default:"top middle",validator:W},offset:{type:Array,default:()=>[14,14],validator:Te},scrollTarget:$e,delay:{type:Number,default:0},hideDelay:{type:Number,default:0},persistent:Boolean},emits:[...Pe],setup(e,{slots:t,emit:m,attrs:l}){let a,n;const r=Le(),{proxy:{$q:c}}=r,g=x(null),S=x(!1),se=_(()=>N(e.anchor,c.lang.rtl)),le=_(()=>N(e.self,c.lang.rtl)),ne=_(()=>e.persistent!==!0),{registerTick:oe,removeTick:ie}=Be(),{registerTimeout:T}=Ce(),{transitionProps:re,transitionStyle:de}=qe(e),{localScrollTarget:A,changeScrollEvent:ce,unconfigureScrollTarget:ue}=He(e,L),{anchorEl:f,canShow:fe,anchorEvents:k}=Ee({showing:S,configureAnchorEl:ye}),{show:me,hide:B}=Me({showing:S,canShow:fe,handleShow:pe,handleHide:ve,hideOnRouteChange:ne,processOnMount:!0});Object.assign(k,{delayShow:ge,delayHide:ke});const{showPortal:F,hidePortal:O,renderPortal:he}=Ae(r,g,be,"tooltip");if(c.platform.is.mobile===!0){const i={anchorEl:f,innerRef:g,onClickOutside(h){return B(h),h.target.classList.contains("q-dialog__backdrop")&&We(h),!0}},C=_(()=>e.modelValue===null&&e.persistent!==!0&&S.value===!0);z(C,h=>{(h===!0?Qe:U)(i)}),D(()=>{U(i)})}function pe(i){F(),oe(()=>{n=new MutationObserver(()=>y()),n.observe(g.value,{attributes:!1,childList:!0,characterData:!0,subtree:!0}),y(),L()}),a===void 0&&(a=z(()=>c.screen.width+"|"+c.screen.height+"|"+e.self+"|"+e.anchor+"|"+c.lang.rtl,y)),T(()=>{F(!0),m("show",i)},e.transitionDuration)}function ve(i){ie(),O(),I(),T(()=>{O(!0),m("hide",i)},e.transitionDuration)}function I(){n!==void 0&&(n.disconnect(),n=void 0),a!==void 0&&(a(),a=void 0),ue(),V(k,"tooltipTemp")}function y(){Fe({targetEl:g.value,offset:e.offset,anchorEl:f.value,anchorOrigin:se.value,selfOrigin:le.value,maxHeight:e.maxHeight,maxWidth:e.maxWidth})}function ge(i){if(c.platform.is.mobile===!0){j(),document.body.classList.add("non-selectable");const C=f.value,h=["touchmove","touchcancel","touchend","click"].map(Q=>[C,Q,"delayHide","passiveCapture"]);R(k,"tooltipTemp",h)}T(()=>{me(i)},e.delay)}function ke(i){c.platform.is.mobile===!0&&(V(k,"tooltipTemp"),j(),setTimeout(()=>{document.body.classList.remove("non-selectable")},10)),T(()=>{B(i)},e.hideDelay)}function ye(){if(e.noParentEvent===!0||f.value===null)return;const i=c.platform.is.mobile===!0?[[f.value,"touchstart","delayShow","passive"]]:[[f.value,"mouseenter","delayShow","passive"],[f.value,"mouseleave","delayHide","passive"]];R(k,"anchor",i)}function L(){if(f.value!==null||e.scrollTarget!==void 0){A.value=Oe(f.value,e.scrollTarget);const i=e.noParentEvent===!0?y:B;ce(A.value,i)}}function we(){return S.value===!0?M("div",{...l,ref:g,class:["q-tooltip q-tooltip--style q-position-engine no-pointer-events",l.class],style:[l.style,de.value],role:"tooltip"},ae(t.default)):null}function be(){return M(Ie,re.value,we)}return D(I),Object.assign(r.proxy,{updatePosition:y}),he}}),Ge=te({name:"QBtnGroup",props:{unelevated:Boolean,outline:Boolean,flat:Boolean,rounded:Boolean,square:Boolean,push:Boolean,stretch:Boolean,glossy:Boolean,spread:Boolean},setup(e,{slots:t}){const m=_(()=>{const l=["unelevated","outline","flat","rounded","square","push","stretch","glossy"].filter(a=>e[a]===!0).map(a=>`q-btn-group--${a}`).join(" ");return`q-btn-group row no-wrap${l.length!==0?" "+l:""}`+(e.spread===!0?" q-btn-group--spread":" inline")});return()=>M("div",{class:m.value},ae(t.default))}});const Je=Ne({name:"EmailFolderPage",data:()=>({srcdoc:null,file:null,fileHead:null,timeInterval:null,attachments:[]}),computed:{selectedBucket:function(){return this.$route.params.bucket},selectedFolder:function(){return this.$route.params.folder},selectedFile:function(){return this.$route.params.file},filePath:function(){const e=G(this.selectedFile);return`.r2-explorer/emails/${this.selectedFolder}/${e}`}},watch:{selectedBucket(e){this.$router.push({name:"email-folder",params:{bucket:e,folder:J(this.selectedFolder)}})}},methods:{timeSince:ze,contentFinishedLoading(){clearInterval(this.timeInterval),this.timeInterval=null,this.resizeIframe()},resizeIframe(){this.$refs.renderWindow&&(this.$refs.renderWindow.style.height=`${this.$refs.renderWindow.contentWindow.document.documentElement.scrollHeight}px`)},fetchEmail:async function(){const e=G(this.selectedFile),t=await w.downloadFile(this.selectedBucket,this.filePath,{}),m=e.split(".json")[0];this.file=t.data;let l=t.data.html;if(l){l=l.replaceAll(/<a(.*?)>(.*?)<\/a>/gi,'<a$1 target="_blank">$2</a>');for(const a of t.data.attachments){a.display=!0,a.downloadUrl=`${this.mainStore.serverUrl}/api/buckets/${this.selectedBucket}/${J(`.r2-explorer/emails/${this.selectedFolder}/${m}/${a.filename}`)}`;let n=a.contentId;if(n){n.startsWith("<")&&n.endsWith(">")&&(n=n.substring(1,n.length-1));const r=`cid:${n}`;l.includes(r)&&(l=l.replaceAll(`cid:${n}`,a.downloadUrl),a.display=!1)}}this.srcdoc=l}this.attachments=t.data.attachments.filter(a=>a.display),w.headFile(this.selectedBucket,this.filePath).then(async a=>{a.customMetadata.read==="false"?this.fileHead=await w.updateMetadata(this.selectedBucket,this.filePath,{...a.customMetadata,read:!0}):this.fileHead=a}),setTimeout(()=>{this.contentFinishedLoading()},1e4),this.timeInterval=setInterval(()=>{this.resizeIframe()},400)},markAsUnread:async function(){this.fileHead=await w.updateMetadata(this.selectedBucket,this.filePath,{...this.fileHead.customMetadata,read:!1}),this.q.notify({group:!1,icon:"done",spinner:!1,message:"Email marked as unread!",timeout:2500})},markAsRead:async function(){this.fileHead=await w.updateMetadata(this.selectedBucket,this.filePath,{...this.fileHead.customMetadata,read:!0}),this.q.notify({group:!1,icon:"done",spinner:!1,message:"Email marked as read!",timeout:2500})},downloadAtt:e=>{console.log(e);const t=document.createElement("a");t.download=e.filename,t.href=e.downloadUrl,document.body.appendChild(t),t.click(),document.body.removeChild(t)}},created(){this.fetchEmail()},setup(){return{mainStore:De(),q:Ue()}}}),Ke={key:0},Xe={class:"font-18 q-my-none"},Ye={class:"d-flex row"},Ze={class:"d-flex column"},et={class:"text-muted"},tt={class:"q-ml-auto"},at={class:""},st={class:"overflow-auto d-block email-wrapper"},lt=["srcdoc"],nt=["innerHTML"],ot={class:"row attachments"},it={key:1,class:"text-center q-my-lg"};function rt(e,t,m,l,a,n){return this.file?(u(),p("div",Ke,[s(K,null,{default:o(()=>[s($,{class:"bg-grey-2 text-black",vertical:""},{default:o(()=>[s(Ge,{unelevated:""},{default:o(()=>[s(P,{push:"",icon:"arrow_back",to:{name:"email-folder",params:{bucket:e.$route.params.bucket,folder:e.$route.params.folder}}},{default:o(()=>[s(E,null,{default:o(()=>t[1]||(t[1]=[b("Back")])),_:1})]),_:1},8,["to"]),e.fileHead?(u(),p(X,{key:0},[e.fileHead.customMetadata.read==="true"?(u(),H(P,{key:0,push:"",icon:"mark_email_unread",onClick:e.markAsUnread},{default:o(()=>[s(E,null,{default:o(()=>t[2]||(t[2]=[b("Mark email as unread")])),_:1})]),_:1},8,["onClick"])):(u(),H(P,{key:1,push:"",icon:"mark_email_read",onClick:e.markAsRead},{default:o(()=>[s(E,null,{default:o(()=>t[3]||(t[3]=[b("Mark email as read")])),_:1})]),_:1},8,["onClick"]))],64)):Y("",!0)]),_:1})]),_:1}),s($,{vertical:""},{default:o(()=>[d("h5",Xe,v(e.file.subject),1)]),_:1}),s($,{horizontal:"",class:"q-px-sm"},{default:o(()=>[d("div",Ye,[s(Z,{name:"account_circle",size:"xl",class:"q-mr-sm"}),d("div",Ze,[d("span",null,[b(v(e.file.from.name)+" ",1),d("small",et,"<"+v(e.file.from.address)+">",1)]),d("span",null,"to "+v(e.file.to[0].address),1)])]),d("div",tt,[d("small",at,v(e.file.date)+" ("+v(e.timeSince(new Date(e.file.date)))+")",1)])]),_:1}),s(ee,{vertical:""},{default:o(()=>[d("div",st,[e.srcdoc?(u(),p("iframe",{key:0,frameborder:"0",scrolling:"no",class:"w-100 d-block",onLoad:t[0]||(t[0]=(...r)=>e.contentFinishedLoading&&e.contentFinishedLoading(...r)),ref:"renderWindow",id:"renderWindow",srcdoc:e.srcdoc,sandbox:"allow-popups allow-popups-to-escape-sandbox allow-same-origin",csp:"script-src 'none'"},null,40,lt)):(u(),p("div",{key:1,innerHTML:e.file.text.replaceAll(`
2
+ `,"<br>")},null,8,nt))])]),_:1}),e.attachments.length>0?(u(),H(ee,{key:0,vertical:""},{default:o(()=>[s(je),t[4]||(t[4]=d("h6",{class:"q-my-md"},"Attachments",-1)),d("div",ot,[(u(!0),p(X,null,Re(e.file.attachments,r=>(u(),p("div",{class:"col-md-4 col-sm-12",key:r.filename},[s(K,null,{default:o(()=>[s($,{class:"q-pa-sm flex",style:{"align-items":"center"}},{default:o(()=>[s(Z,{name:"description",size:"md",color:"blue",class:"q-mr-sm"}),b(" "+v(r.filename)+" ",1),s(P,{color:"white","text-color":"black",icon:"download",class:"q-mr-0 q-ml-auto",onClick:c=>e.downloadAtt(r)},null,8,["onClick"])]),_:2},1024)]),_:2},1024)]))),128))])]),_:1})):Y("",!0)]),_:1})])):(u(),p("div",it,[s(Ve,{color:"primary",size:"3em"})]))}var ct=xe(Je,[["render",rt],["__scopeId","data-v-59368c26"]]);export{ct as default};
@@ -0,0 +1 @@
1
+ import{_ as o,c as s,o as r,ac as n,y as t,f as a,E as l}from"./index.b2fb13c9.js";const c=s({name:"ErrorNotFound"}),d={class:"fullscreen bg-blue text-white text-center q-pa-md flex flex-center"};function i(p,e,f,u,x,m){return r(),n("div",d,[t("div",null,[e[0]||(e[0]=t("div",{style:{"font-size":"30vh"}}," 404 ",-1)),e[1]||(e[1]=t("div",{class:"text-h2",style:{opacity:".4"}}," Oops. Nothing here... ",-1)),a(l,{class:"q-mt-xl",color:"white","text-color":"blue",unelevated:"",to:"/",label:"Go Home","no-caps":""})])])}var _=o(c,[["render",i]]);export{_ as default};
@@ -0,0 +1 @@
1
+ import{h,i as w,j as y,k as u,l as r,m,n as k,p as q,q as C,s as S,t as V,_ as x,c as Q,o as p,e as v,w as t,v as B,f as o,x as f,y as g,z as E,A as I,B as _,C as $,D as b,E as A,F as D}from"./index.b2fb13c9.js";import{u as P}from"./auth-store.748ba7e9.js";var N=h({name:"QBanner",props:{...w,inlineActions:Boolean,dense:Boolean,rounded:Boolean},setup(e,{slots:a}){const{proxy:{$q:s}}=k(),d=y(e,s),l=u(()=>"q-banner row items-center"+(e.dense===!0?" q-banner--dense":"")+(d.value===!0?" q-banner--dark q-dark":"")+(e.rounded===!0?" rounded-borders":"")),i=u(()=>`q-banner__actions row items-center justify-end col-${e.inlineActions===!0?"auto":"all"}`);return()=>{const n=[r("div",{class:"q-banner__avatar col-auto row items-center self-start"},m(a.avatar)),r("div",{class:"q-banner__content col text-body2"},m(a.default))],c=m(a.action);return c!==void 0&&n.push(r("div",{class:i.value},c)),r("div",{class:l.value+(e.inlineActions===!1&&c!==void 0?" q-banner--top-padding":""),role:"alert"},n)}}}),U=h({name:"QToggle",props:{...q,icon:String,iconColor:String},emits:C,setup(e){function a(s,d){const l=u(()=>(s.value===!0?e.checkedIcon:d.value===!0?e.indeterminateIcon:e.uncheckedIcon)||e.icon),i=u(()=>s.value===!0?e.iconColor:null);return()=>[r("div",{class:"q-toggle__track"}),r("div",{class:"q-toggle__thumb absolute flex flex-center no-wrap"},l.value!==void 0?[r(V,{name:l.value,color:i.value})]:void 0)]}return S("toggle",a)}});const z=P(),j=Q({name:"login-page",components:{},data(){return{loading:!1,showError:"",form:{username:"",password:"",remind:!0}}},methods:{async onSubmit(){this.loading=!0;try{await z.LogIn(this.$router,this.form),this.showError=""}catch(e){throw this.showError=e.message,e}finally{this.loading=!1}}}});function F(e,a,s,d,l,i){return p(),v(B,{class:"flex flex-center"},{default:t(()=>[o(D,{class:"q-pa-md shadow-2",bordered:""},{default:t(()=>[o(f,{class:"text-center"},{default:t(()=>a[3]||(a[3]=[g("div",{class:"text-grey-9 text-h5 text-weight-bold"},"Sign in",-1),g("div",{class:"text-grey-8"},"Enter your email address and password to access admin panel.",-1)])),_:1}),e.showError?(p(),v(f,{key:0},{default:t(()=>[o(N,{"inline-actions":"",class:"text-white bg-red"},{default:t(()=>[E(I(e.showError),1)]),_:1})]),_:1})):_("",!0),o(f,null,{default:t(()=>[o($,{onSubmit:e.onSubmit,class:"q-gutter-sm"},{default:t(()=>[o(b,{filled:"",modelValue:e.form.username,"onUpdate:modelValue":a[0]||(a[0]=n=>e.form.username=n),label:"Username","lazy-rules":"",type:"text"},null,8,["modelValue"]),o(b,{filled:"",modelValue:e.form.password,"onUpdate:modelValue":a[1]||(a[1]=n=>e.form.password=n),label:"Password","lazy-rules":"",type:"password"},null,8,["modelValue"]),o(U,{modelValue:e.form.remind,"onUpdate:modelValue":a[2]||(a[2]=n=>e.form.remind=n),label:"Remember me"},null,8,["modelValue"]),g("div",null,[o(A,{loading:e.loading,label:"Sign in",type:"submit",color:"primary"},null,8,["loading"])])]),_:1},8,["onSubmit"])]),_:1})]),_:1})]),_:1})}var R=x(j,[["render",F]]);export{R as default};
@@ -0,0 +1 @@
1
+ import{d as c,u as i,a as s}from"./index.b2fb13c9.js";const o="r2_explorer_session_token",h=c("auth",{state:()=>({user:"",loginMethod:""}),getters:{isAuthenticated:e=>!!e.user,StateUser:e=>e.user},actions:{async LogIn(e,t){var n;const r=i(),a=btoa(`${t.username}:${t.password}`);s.defaults.headers.common.Authorization=`Basic ${a}`;try{await r.loadServerConfigs(e)}catch(l){throw console.log(l),delete s.defaults.headers.common.Authorization,new Error("Invalid username or password")}s.defaults.headers.common.Authorization=`Basic ${a}`,this.loginMethod="basic",this.user=t.email,t.remind===!0?localStorage.setItem(o,a):sessionStorage.setItem(o,a),e.replace(((n=e.currentRoute.value.query)==null?void 0:n.next)||"/")},async CheckLoginInStorage(e){let t=sessionStorage.getItem(o);if(t||(t=localStorage.getItem(o)),!t)return!1;const r=i();s.defaults.headers.common.Authorization=`Basic ${t}`;try{await r.loadServerConfigs(e)}catch{delete s.defaults.headers.common.Authorization,await e.replace({name:"login",query:{next:e.currentRoute.fullPath}});return}this.user=atob(t).split(":")[0],this.loginMethod="basic"},async LogOut(e){localStorage.removeItem(o),sessionStorage.removeItem(o),this.user="",this.loginMethod="",await e.replace({name:"login"})}}});export{h as u};
@@ -0,0 +1 @@
1
+ import{b as o,u as e}from"./index.b2fb13c9.js";import{u as r}from"./auth-store.748ba7e9.js";var h=o(async({router:a,store:t})=>{await r(t).CheckLoginInStorage(a)===!1&&await e(t).loadServerConfigs(a,!0)});export{h as default};
@@ -0,0 +1 @@
1
+ import{b as c}from"./index.b2fb13c9.js";class n{constructor(){this.__stack={}}on(t,s,i){return(this.__stack[t]||(this.__stack[t]=[])).push({fn:s,ctx:i}),this}once(t,s,i){const o=(...e)=>{this.off(t,o),s.apply(i,e)};return o.__callback=s,this.on(t,o,i)}emit(t){const s=this.__stack[t];if(s!==void 0){const i=[].slice.call(arguments,1);s.forEach(o=>{o.fn.apply(o.ctx,i)})}return this}off(t,s){const i=this.__stack[t];if(i===void 0)return this;if(s===void 0)return delete this.__stack[t],this;const o=i.filter(e=>e.fn!==s&&e.fn.__callback!==s);return o.length!==0?this.__stack[t]=o:delete this.__stack[t],this}}var h=c(({app:r})=>{const t=new n;r.config.globalProperties.$bus=t,r.provide("bus",t)});export{h as default};