You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nextcloud-server/dist/files_external-settings.mjs

2 lines
27 KiB

import{H as K,a1 as ee,Q as ke,y as C,b as U,q as B,o as u,c as k,u as e,p as M,B as z,g as x,k as h,h as y,t as v,F as S,E as Ve,D as T,L as W,M as Y,i as O,x as Z,N as Se,af as Q,U as ie,l as b,w,z as V,O as Ce,e as Me,f as Ae}from"./Web-CGrAivgv.chunk.mjs";import{t as $e,g as Ue,N as Oe,u as Te,v as Ne,l as qe,w as Pe,s as Ee,k as Re}from"./mdi-CVr4TDRq.chunk.mjs";import{_ as N,l as A}from"./public-C1mLBHT3.chunk.mjs";import{t as o,a as Fe}from"./translation-DoG5ZELJ-Cnt4vXgN.chunk.mjs";import{N as P}from"./logger-D3RVzcfQ-k6GV3wRV.chunk.mjs";import"./MapMarkerOutline-CaDE-M5O.chunk.mjs";import{N as F}from"./createElementId-DhjFt1I9-DwrDuyxe.chunk.mjs";import{N as re}from"./TrashCanOutline-CSbixKR2.chunk.mjs";import{N as ce}from"./ContentCopy-Dp2WhVww.chunk.mjs";import{N as ae}from"./index-C9vOCEFf.chunk.mjs";import{_ as _e}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-TaokGzY3.chunk.mjs";import{c as $}from"./index-ChXuPuJU.chunk.mjs";import{b as R}from"./index-kP1pdrFW.chunk.mjs";import{N as De}from"./NcTextArea-Dxzj4zdb-J_890cMZ.chunk.mjs";import{b as Be}from"./index-Axi4fOCK.chunk.mjs";import"./PencilOutline-m7gX2JJw.chunk.mjs";/* empty css */import"./NcActionInput-Dr8Yrafu-AjFZSxXv.chunk.mjs";import"./NcActionLink-BFiaYt9A-C66mrFQH.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-B9ePistO.chunk.mjs";import"./NcModal-DiDvgcU8-AyGpO2Wl.chunk.mjs";import"./NcActionSeparator-B9pNQaji-BUiNpaVF.chunk.mjs";import"./NcActionText-CQ9qwJ0p-CzEyGOHa.chunk.mjs";import"./NcContent-BYh5hWDN-B5d_OhyY.chunk.mjs";import{N as me}from"./Check-B8g3wLRC.chunk.mjs";import"./NcAvatar-1KxMUN7V-CiZW3sVm.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-tnJr-W9y.chunk.mjs";import{N as E}from"./NcCheckboxRadioSwitch-DVdt5Hkq-Br1OKBC8.chunk.mjs";import{N as je}from"./Plus-DGzMgyph.chunk.mjs";import"./index-DnejXa67.chunk.mjs";import"./TrayArrowDown-DndwfH8J.chunk.mjs";import"./NcDashboardWidget-zmbDEGL--BdmPJpkj.chunk.mjs";import"./index-BDkcdQkM.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-CqK4KSFH.chunk.mjs";import"./index-DohIqH9U.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-Bm503eyF.chunk.mjs";import{N as Le}from"./NcPasswordField-BFyzHTOO-DEvsvPdM.chunk.mjs";import"./index-DXvSskei.chunk.mjs";import"./NcSelectTags-I2hJaNax-CHf7mgho.chunk.mjs";import{N as He}from"./NcUserBubble-BXR7vT0V-BLCA5Wd-.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-CflDfVCi.chunk.mjs";import"./emoji-C8k9NUlo-BNYdWfNi.chunk.mjs";import"./colors-Cv9F-jWS-BOqQ6yCH.chunk.mjs";import{C as pe}from"./AuthMechanismRsa-CRhd6P34.chunk.mjs";import{C as G,a as fe,M as D,S as j,b as Ge,c as Ie}from"./types-B74XPbf6.chunk.mjs";import{a as ge,P as I}from"./index-CWomaT30.chunk.mjs";import{p as Qe}from"./externalStorageUtils-CQ1qe2np.chunk.mjs";import{a as te,d as le}from"./index-DYY4wUHN.chunk.mjs";import{l as ve}from"./logger-BizK0iH2.chunk.mjs";import"./util-C9Hc1fff.chunk.mjs";import"./ArrowRight-Bo5pSHoF.chunk.mjs";const ze='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-account-group-outline" viewBox="0 0 24 24"><path d="M12,5A3.5,3.5 0 0,0 8.5,8.5A3.5,3.5 0 0,0 12,12A3.5,3.5 0 0,0 15.5,8.5A3.5,3.5 0 0,0 12,5M12,7A1.5,1.5 0 0,1 13.5,8.5A1.5,1.5 0 0,1 12,10A1.5,1.5 0 0,1 10.5,8.5A1.5,1.5 0 0,1 12,7M5.5,8A2.5,2.5 0 0,0 3,10.5C3,11.44 3.53,12.25 4.29,12.68C4.65,12.88 5.06,13 5.5,13C5.94,13 6.35,12.88 6.71,12.68C7.08,12.47 7.39,12.17 7.62,11.81C6.89,10.86 6.5,9.7 6.5,8.5C6.5,8.41 6.5,8.31 6.5,8.22C6.2,8.08 5.86,8 5.5,8M18.5,8C18.14,8 17.8,8.08 17.5,8.22C17.5,8.31 17.5,8.41 17.5,8.5C17.5,9.7 17.11,10.86 16.38,11.81C16.5,12 16.63,12.15 16.78,12.3C16.94,12.45 17.1,12.58 17.29,12.68C17.65,12.88 18.06,13 18.5,13C18.94,13 19.35,12.88 19.71,12.68C20.47,12.25 21,11.44 21,10.5A2.5,2.5 0 0,0 18.5,8M12,14C9.66,14 5,15.17 5,17.5V19H19V17.5C19,15.17 14.34,14 12,14M4.71,14.55C2.78,14.78 0,15.76 0,17.5V19H3V17.07C3,16.06 3.69,15.22 4.71,14.55M19.29,14.55C20.31,15.22 21,16.06 21,17.07V19H24V17.5C24,15.76 21.22,14.78 19.29,14.55M12,16C13.53,16 15.24,16.5 16.23,17H7.77C8.76,16.5 10.47,16 12,16Z" /></svg>',J=ke(new Map);function be(l){const a=C(()=>ee(l).map(t=>({id:`user:${t}`,user:t,displayName:J.get(t)||t})));return K(async()=>{const t=ee(l).filter(r=>!J.has(r));if(t.length>0){const{data:r}=await $.post(R("/displaynames"),{users:t});for(const[d,c]of Object.entries(r.users))J.set(d,c)}}),a}function Ze(l){return C(()=>ee(l).map(ye))}function ye(l){return{id:l,isNoUser:!0,displayName:l,iconSvg:ze}}const Ke=U({__name:"ApplicableEntities",props:{groups:{default:()=>[]},groupsModifiers:{},users:{default:()=>[]},usersModifiers:{}},emits:["update:groups","update:users"],setup(l){const a=B(l,"groups"),t=B(l,"users"),r=M([]),d=be(t),c=Ze(a),n=C({get(){return[...c.value,...d.value]},set(p){t.value=p.filter(_=>_.user).map(_=>_.user),a.value=p.filter(_=>_.isNoUser).map(_=>_.id)}}),i=Be(s,500);async function s(p){const{data:_}=await $.get(R("apps/files_external/ajax/applicable"),{params:{pattern:p,limit:20}}),m=[...r.value.map(f=>[f.id,f]),...Object.entries(_.groups).map(([f,g])=>[f,{...ye(f),displayName:g}]),...Object.entries(_.users).map(([f,g])=>[`user:${f}`,{id:`user:${f}`,user:f,displayName:g}])];r.value=[...new Map(m).values()]}return(p,_)=>(u(),k(e(De),{modelValue:n.value,"onUpdate:modelValue":_[0]||(_[0]=m=>n.value=m),keepOpen:"",multiple:"",options:r.value,inputLabel:e(o)("files_external","Restrict to"),onSearch:e(i)},null,8,["modelValue","options","inputLabel","onSearch"]))}}),We=U({__name:"AuthMechanismConfiguration",props:Z({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=B(l,"modelValue"),t=l,r=C(()=>{if(!t.authMechanism.configuration)return;const s=Object.entries(t.authMechanism.configuration).filter(([,p])=>!(p.flags&G.UserProvided));return Object.fromEntries(s)}),d=C(()=>window.OCA.FilesExternal.AuthMechanism.getHandler(t.authMechanism)),c=C(()=>{if(!r.value)return!1;for(const s of Object.values(r.value))if(!(s.flags&G.Hidden||s.flags&G.UserProvided))return!0;return!1}),n=M(!1);K(async()=>{d.value&&(n.value=!0,await window.customElements.whenDefined(d.value.tagName),n.value=!1)}),z(r,()=>{for(const s in r.value)s in a.value||(a.value[s]=r.value[s]?.type===fe.Boolean?!1:"")});function i(s){const p=[s.detail].flat()[0];a.value={...a.value,...p}}return(s,p)=>c.value?(u(),x("fieldset",{key:0,class:h(s.$style.authMechanismConfiguration)},[y("legend",null,v(e(o)("files_external","Authentication")),1),d.value?(u(),x(S,{key:0},[n.value?(u(),k(e(me),{key:0})):(u(),k(Ve(d.value.tagName),{key:1,".modelValue":a.value,".authMechanism":l.authMechanism,"onUpdate:modelValue":i},null,40,[".modelValue",".authMechanism"]))],64)):(u(!0),x(S,{key:1},T(r.value,(_,m)=>W((u(),k(pe,{key:_.value,modelValue:a.value[m],"onUpdate:modelValue":f=>a.value[m]=f,"config-key":m,"config-option":_},null,8,["modelValue","onUpdate:modelValue","config-key","config-option"])),[[Y,!(_.flags&e(G).Hidden)]])),128))],2)):O("",!0)}}),Ye="_authMechanismConfiguration_kpcpy_2",Je={authMechanismConfiguration:Ye},Xe={$style:Je},ea=N(We,[["__cssModules",Xe]]),aa=U({__name:"BackendConfiguration",props:Z({configuration:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=B(l,"modelValue"),t=l;return z(()=>t.configuration,()=>{for(const r in t.configuration)r in a.value||(a.value[r]=t.configuration[r]?.defaultValue??(t.configuration[r]?.type===fe.Boolean?!1:""))},{immediate:!0}),(r,d)=>(u(),x("fieldset",{class:h(r.$style.backendConfiguration)},[y("legend",null,v(e(o)("files_external","Storage configuration")),1),(u(!0),x(S,null,T(l.configuration,(c,n)=>W((u(),k(pe,{key:c.value,modelValue:a.value[n],"onUpdate:modelValue":i=>a.value[n]=i,configKey:n,configOption:c},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[Y,!(c.flags&e(G).Hidden)]])),128))],2))}}),ta="_backendConfiguration_1sf6y_2",la={backendConfiguration:ta},sa={$style:la},na=N(aa,[["__cssModules",sa]]),{isAdmin:oa}=A("files_external","settings"),ia=Object.freeze({encrypt:!0,previews:!0,filesystem_check_changes:D.OncePerRequest,enable_sharing:!1,encoding_compatibility:!1,readonly:!1}),se=Se("files_external--storages",()=>{const l=M([]),a=M([]);async function t(m){const f=R("apps/files_external/globalstorages"),{data:g}=await $.post(f,Q(m),{confirmPassword:I.Strict});l.value.push(L(g))}async function r(m){const f=R("apps/files_external/userstorages"),{data:g}=await $.post(f,Q(m),{confirmPassword:I.Strict});a.value.push(L(g))}async function d(m){await $.delete(p(m),{confirmPassword:I.Strict}),m.type==="personal"?a.value=a.value.filter(f=>f.id!==m.id):l.value=l.value.filter(f=>f.id!==m.id)}async function c(m){const{data:f}=await $.put(p(m),Q(m),{confirmPassword:I.Strict});_(L(f))}async function n(m){const{data:f}=await $.get(p(m));_(L(f))}return s(),{globalStorages:l,userStorages:a,createGlobalStorage:t,createUserStorage:r,deleteStorage:d,reloadStorage:n,updateStorage:c};async function i(m){const f=`apps/files_external/${m}`,{data:g}=await $.get(R(f));return Object.values(g).map(L)}async function s(){ge($),oa?l.value=await i("globalstorages"):(a.value=await i("userstorages"),l.value=await i("userglobalstorages"))}function p(m){const f=m.type==="personal"?"userstorages":"globalstorages";return R(`apps/files_external/${f}/${m.id}`)}function _(m){if(m.type==="personal"){const f=a.value.findIndex(g=>g.id===m.id);a.value.splice(f,1,m)}else{const f=l.value.findIndex(g=>g.id===m.id);l.value.splice(f,1,m)}}});function L(l){return{...l,mountOptions:he(l.mountOptions)}}function he(l){const a={...l};return a.encrypt=H(a.encrypt,!0),a.previews=H(a.previews,!0),a.enable_sharing=H(a.enable_sharing,!1),a.filesystem_check_changes=typeof a.filesystem_check_changes=="string"?Number.parseInt(a.filesystem_check_changes):a.filesystem_check_changes??D.Never,a.encoding_compatibility=H(a.encoding_compatibility,!1),a.readonly=H(a.readonly,!1),a}function H(l,a=!1){return l===void 0?a:l===!0||l==="true"||l==="1"}const ra=["id","aria-labelledby"],ua=U({__name:"MountOptions",props:{modelValue:{required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(l){const a=B(l,"modelValue");K(()=>{Object.keys(a.value).length===0&&(a.value=he(a.value))});const{hasEncryption:t}=A("files_external","settings"),r=ie(),d=ie(),c=M(!1),n=[{label:o("files_external","Never"),value:D.Never},{label:o("files_external","Once every direct access"),value:D.OncePerRequest},{label:o("files_external","Always"),value:D.Always}],i=C({get(){return n.find(s=>s.value===a.value.filesystem_check_changes)},set(s){a.value.filesystem_check_changes=s?.value??D.OncePerRequest}});return(s,p)=>(u(),x("div",{class:h(s.$style.mountOptions)},[b(e(P),{id:e(r),"aria-controls":e(d),"aria-expanded":c.value,variant:"tertiary-no-background",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{directional:"",path:c.value?e($e):e(Ue)},null,8,["path"])]),default:w(()=>[V(" "+v(e(o)("files_external","Mount options")),1)]),_:1},8,["id","aria-controls","aria-expanded"]),W(y("fieldset",{id:e(d),class:h(s.$style.mountOptions__fieldset),"aria-labelledby":e(r)},[b(e(ae),{modelValue:i.value,"onUpdate:modelValue":p[1]||(p[1]=_=>i.value=_),inputLabel:e(o)("files_external","Check filesystem changes"),options:n},null,8,["modelValue","inputLabel"]),b(e(E),{modelValue:l.modelValue.readonly,"onUpdate:modelValue":p[2]||(p[2]=_=>l.modelValue.readonly=_),type:"switch"},{default:w(()=>[V(v(e(o)("files_external","Read only")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.previews,"onUpdate:modelValue":p[3]||(p[3]=_=>l.modelValue.previews=_),type:"switch"},{default:w(()=>[V(v(e(o)("files_external","Enable previews")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.enable_sharing,"onUpdate:modelValue":p[4]||(p[4]=_=>l.modelValue.enable_sharing=_),type:"switch"},{default:w(()=>[V(v(e(o)("files_external","Enable sharing")),1)]),_:1},8,["modelValue"]),e(t)?(u(),k(e(E),{key:0,modelValue:l.modelValue.encrypt,"onUpdate:modelValue":p[5]||(p[5]=_=>l.modelValue.encrypt=_),type:"switch"},{default:w(()=>[V(v(e(o)("files_external","Enable encryption")),1)]),_:1},8,["modelValue"])):O("",!0),b(e(E),{modelValue:l.modelValue.encoding_compatibility,"onUpdate:modelValue":p[6]||(p[6]=_=>l.modelValue.encoding_compatibility=_),type:"switch"},{default:w(()=>[V(v(e(o)("files_external","Compatibility with Mac NFD encoding (slow)")),1)]),_:1},8,["modelValue"])],10,ra),[[Y,c.value]])],2))}}),da="_mountOptions_1fqyb_2",ca="_mountOptions__fieldset_1fqyb_12",_a={mountOptions:da,mountOptions__fieldset:ca},ma={$style:_a},pa=N(ua,[["__cssModules",ma]]),{isAdmin:ue}=A("files_external","settings"),fa=A("files_external","allowedBackends"),de=A("files_external","backends").filter(l=>fa.includes(l.identifier)),ga=A("files_external","authMechanisms"),va=U({__name:"AddExternalStorageDialog",props:Z({storage:{default:()=>({backendOptions:{},mountOptions:{...ia},type:ue?"system":"personal"})}},{open:{type:Boolean,default:!0},openModifiers:{}}),emits:Z(["close"],["update:open"]),setup(l){const a=B(l,"open"),t=M(structuredClone(Q(l.storage)));K(()=>{a.value&&(t.value=structuredClone(Q(l.storage)))});const r=C({get(){return de.find(n=>n.identifier===t.value.backend)},set(n){t.value.backend=n?.identifier}}),d=C(()=>ga.filter(({scheme:n})=>r.value?.authSchemes[n])),c=C({get(){return d.value.find(n=>n.identifier===t.value.authMechanism)},set(n){const i=d.value.find(s=>s.identifier===t.value.authMechanism);i&&i.identifier!==n?.identifier&&t.value.backendOptions&&Qe(t.value.backendOptions,i.configuration,[n?.configuration,r.value?.configuration]),t.value.authMechanism=n?.identifier}});return z(d,()=>{d.value.length===1&&(t.value.authMechanism=d.value[0].identifier)}),(n,i)=>(u(),k(e(Oe),{open:a.value,"onUpdate:open":[i[9]||(i[9]=s=>a.value=s),i[11]||(i[11]=s=>s||n.$emit("close"))],isForm:"",contentClasses:n.$style.externalStorageDialog,name:t.value.id?e(o)("files_external","Edit storage"):e(o)("files_external","Add storage"),onSubmit:i[10]||(i[10]=s=>n.$emit("close",t.value))},{actions:w(()=>[l.storage.id?(u(),k(e(P),{key:0,onClick:i[8]||(i[8]=s=>n.$emit("close"))},{default:w(()=>[V(v(e(o)("files_external","Cancel")),1)]),_:1})):O("",!0),b(e(P),{variant:"primary",type:"submit"},{default:w(()=>[V(v(l.storage.id?e(o)("files_external","Edit"):e(o)("files_external","Create")),1)]),_:1})]),default:w(()=>[b(e(_e),{modelValue:t.value.mountPoint,"onUpdate:modelValue":i[0]||(i[0]=s=>t.value.mountPoint=s),label:e(o)("files_external","Folder name"),required:""},null,8,["modelValue","label"]),b(pa,{modelValue:t.value.mountOptions,"onUpdate:modelValue":i[1]||(i[1]=s=>t.value.mountOptions=s)},null,8,["modelValue"]),e(ue)?(u(),k(Ke,{key:0,groups:t.value.applicableGroups,"onUpdate:groups":i[2]||(i[2]=s=>t.value.applicableGroups=s),users:t.value.applicableUsers,"onUpdate:users":i[3]||(i[3]=s=>t.value.applicableUsers=s),class:h(n.$style.externalStorageDialog__dropdown)},null,8,["groups","users","class"])):O("",!0),b(e(ae),{modelValue:r.value,"onUpdate:modelValue":i[4]||(i[4]=s=>r.value=s),options:e(de),disabled:!!(t.value.id&&t.value.backend),inputLabel:e(o)("files_external","External storage"),class:h(n.$style.externalStorageDialog__dropdown),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel","class"]),b(e(ae),{modelValue:c.value,"onUpdate:modelValue":i[5]||(i[5]=s=>c.value=s),options:d.value,disabled:!t.value.backend||d.value.length<=1,inputLabel:e(o)("files_external","Authentication"),class:h(n.$style.externalStorageDialog__dropdown),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel","class"]),r.value&&t.value.backendOptions?(u(),k(na,{key:1,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[6]||(i[6]=s=>t.value.backendOptions=s),class:h(n.$style.externalStorageDialog__configuration),configuration:r.value.configuration},null,8,["modelValue","class","configuration"])):O("",!0),c.value&&t.value.backendOptions?(u(),k(ea,{key:2,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[7]||(i[7]=s=>t.value.backendOptions=s),class:h(n.$style.externalStorageDialog__configuration),authMechanism:c.value},null,8,["modelValue","class","authMechanism"])):O("",!0)]),_:1},8,["open","contentClasses","name"]))}}),ba="_externalStorageDialog_l5jv4_2",ya="_externalStorageDialog__configuration_l5jv4_9",ha="_externalStorageDialog__dropdown_l5jv4_13",xa={externalStorageDialog:ba,externalStorageDialog__configuration:ya,externalStorageDialog__dropdown:ha},wa={$style:xa},xe=N(va,[["__cssModules",wa]]),ka={class:"hidden-visually"},Va={key:0},Sa=U({__name:"ExternalStorageTableRow",props:{storage:{},isAdmin:{type:Boolean}},setup(l){const a=l,t=se(),r=A("files_external","backends"),d=C(()=>r.find(g=>g.identifier===a.storage.backend).name),c=A("files_external","authMechanisms"),n=C(()=>c.find(g=>g.identifier===a.storage.authMechanism).name),i=M(!1),s=C(()=>{if(i.value)return{icon:"loading",label:o("files_external","Checking …")};const g=a.storage.status??j.Indeterminate,ne=a.storage.statusMessage||Ge[g],q=Ie[g],oe=g===j.NetworkError||g===j.Timeout,we=!oe&&g!==j.Success&&g!==j.Indeterminate;return{icon:q,label:ne,isWarning:oe,isError:we}}),p=be(()=>a.storage.applicableUsers||[]);async function _(){await t.deleteStorage(a.storage)}async function m(){const g=await Ee(xe,{storage:a.storage});g&&await t.updateStorage(g)}async function f(){i.value=!0;try{await t.reloadStorage(a.storage)}finally{i.value=!1}}return(g,ne)=>(u(),x("tr",{class:h(g.$style.storageTableRow)},[y("td",null,[y("span",ka,v(s.value.label),1),b(e(P),{"aria-label":e(o)("files_external","Recheck status"),title:s.value.label,variant:"tertiary-no-background",onClick:f},{icon:w(()=>[s.value.icon==="loading"?(u(),k(e(me),{key:0})):(u(),k(e(F),{key:1,class:h({[g.$style.storageTableRow__status_error]:s.value.isError,[g.$style.storageTableRow__status_warning]:s.value.isWarning}),path:s.value.icon},null,8,["class","path"]))]),_:1},8,["aria-label","title"])]),y("td",null,v(l.storage.mountPoint),1),y("td",null,v(d.value),1),y("td",null,v(n.value),1),l.isAdmin?(u(),x("td",Va,[y("div",{class:h(g.$style.storageTableRow__cellApplicable)},[(u(!0),x(S,null,T(l.storage.applicableGroups,q=>(u(),k(e(je),{key:q,iconPath:e(Te),noClose:"",text:q},null,8,["iconPath","text"]))),128)),(u(!0),x(S,null,T(e(p),q=>(u(),k(e(He),{key:q.user,displayName:q.displayName,size:24,user:q.user},null,8,["displayName","user"]))),128))],2)])):O("",!0),y("td",null,[l.isAdmin||l.storage.type==="personal"?(u(),x("div",{key:0,class:h(g.$style.storageTableRow__cellActions)},[b(e(P),{"aria-label":e(o)("files_external","Edit"),title:e(o)("files_external","Edit"),onClick:m},{icon:w(()=>[b(e(F),{path:e(Ne)},null,8,["path"])]),_:1},8,["aria-label","title"]),b(e(P),{"aria-label":e(o)("files_external","Delete"),title:e(o)("files_external","Delete"),variant:"error",onClick:_},{icon:w(()=>[b(e(F),{path:e(qe)},null,8,["path"])]),_:1},8,["aria-label","title"])],2)):(u(),k(e(F),{key:1,inline:"",path:e(Pe),name:e(o)("files_external","System provided storage"),title:e(o)("files_external","System provided storage")},null,8,["path","name","title"]))])],2))}}),Ca="_storageTableRow__cellActions_1k62p_2",Ma="_storageTableRow__cellApplicable_1k62p_7",Aa="_storageTableRow__status_warning_1k62p_17",$a="_storageTableRow__status_error_1k62p_21",Ua={storageTableRow__cellActions:Ca,storageTableRow__cellApplicable:Ma,storageTableRow__status_warning:Aa,storageTableRow__status_error:$a},Oa={$style:Ua},Ta=N(Sa,[["__cssModules",Oa]]),Na=["aria-label"],qa={class:"hidden-visually"},Pa={key:0},Ea={class:"hidden-visually"},Ra=U({__name:"ExternalStorageTable",setup(l){const a=se(),{isAdmin:t}=A("files_external","settings"),r=C(()=>t?a.globalStorages:[...a.userStorages,...a.globalStorages]);return(d,c)=>(u(),x("table",{class:h(d.$style.storageTable),"aria-label":e(o)("files_external","External storages")},[y("thead",{class:h(d.$style.storageTable__header)},[y("tr",null,[y("th",{class:h(d.$style.storageTable__headerStatus)},[y("span",qa,v(e(o)("files_external","Status")),1)],2),y("th",{class:h(d.$style.storageTable__headerFolder)},v(e(o)("files_external","Folder name")),3),y("th",{class:h(d.$style.storageTable__headerBackend)},v(e(o)("files_external","External storage")),3),y("th",{class:h(d.$style.storageTable__headerAuthentication)},v(e(o)("files_external","Authentication")),3),e(t)?(u(),x("th",Pa,v(e(o)("files_external","Restricted to")),1)):O("",!0),y("th",{class:h(d.$style.storageTable__headerActions)},[y("span",Ea,v(e(o)("files_external","Actions")),1)],2)])],2),y("tbody",null,[(u(!0),x(S,null,T(r.value,n=>(u(),k(Ta,{key:n.id,isAdmin:e(t),storage:n},null,8,["isAdmin","storage"]))),128))])],10,Na))}}),Fa="_storageTable_1dqte_2",Da="_storageTable__header_1dqte_11",Ba="_storageTable__headerStatus_1dqte_16",ja="_storageTable__headerFolder_1dqte_20",La="_storageTable__headerBackend_1dqte_24",Ha="_storageTable__headerFAuthentication_1dqte_28",Ga="_storageTable__headerActions_1dqte_32",Ia={storageTable:Fa,storageTable__header:Da,storageTable__headerStatus:Ba,storageTable__headerFolder:ja,storageTable__headerBackend:La,storageTable__headerFAuthentication:Ha,storageTable__headerActions:Ga},Qa={$style:Ia},za=N(Ra,[["__cssModules",Qa]]),Za=U({__name:"UserMountSettings",setup(l){const a=A("files_external","user-mounting"),t=A("files_external","backends").filter(c=>c.identifier!=="local"),r=M(a.allowUserMounting),d=M(a.allowedBackends);return z(r,()=>{const c=!r.value;window.OCP.AppConfig.setValue("files_external","allow_user_mounting",r.value?"yes":"no",{success:()=>le(o("files_external","Saved")),error:()=>{r.value=c,te(o("files_external","Error while saving"))}})}),z(d,(c,n)=>{window.OCP.AppConfig.setValue("files_external","user_mounting_backends",c.join(","),{success:()=>le(o("files_external","Saved allowed backends")),error:()=>{te(o("files_external","Failed to save allowed backends")),d.value=n}})}),(c,n)=>(u(),x("form",null,[y("h3",{class:h(c.$style.userMountSettings__heading)},v(e(o)("files_external","Advanced options for external storage mounts")),3),b(e(E),{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=i=>r.value=i),type:"switch"},{default:w(()=>[V(v(e(o)("files_external","Allow people to mount external storage")),1)]),_:1},8,["modelValue"]),W(y("fieldset",{class:h(c.$style.userMountSettings__backends)},[y("legend",null,v(e(o)("files_external","External storage backends people are allowed to mount")),1),(u(!0),x(S,null,T(e(t),i=>(u(),k(e(E),{key:i.identifier,modelValue:d.value,"onUpdate:modelValue":n[1]||(n[1]=s=>d.value=s),value:i.identifier,name:"allowUserMountingBackends[]"},{default:w(()=>[V(v(i.name),1)]),_:2},1032,["modelValue","value"]))),128))],2),[[Y,r.value]])]))}}),Ka="_userMountSettings__heading_59moz_2",Wa="_userMountSettings__backends_59moz_9",Ya={userMountSettings__heading:Ka,userMountSettings__backends:Wa},Ja={$style:Ya},Xa=N(Za,[["__cssModules",Ja]]);const et=["aria-label"],at=U({__name:"ExternalStoragesSection",setup(l){const a=A("files_external","settings",{docUrl:"",dependencyIssues:{messages:null,modules:null},isAdmin:!1}),t=se(),r=a.dependencyIssues?.messages??[],d=a.dependencyIssues?.modules??{},c=M(!1),n=M();async function i(s){if(c.value=!1,!!s)try{a.isAdmin?await t.createGlobalStorage(s):await t.createUserStorage(s),n.value=void 0}catch(p){ve.error("Failed to add external storage",{error:p,storage:s}),n.value={...s},c.value=!0}}return(s,p)=>(u(),k(e(ce),{docUrl:e(a).docUrl,name:e(o)("files_external","External storage"),description:e(o)("files_external","External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices.")+(e(a).isAdmin?" "+e(o)("files_external","You may also allow people to mount their own external storage services."):"")},{default:w(()=>[(u(!0),x(S,null,T(e(r),(_,m)=>(u(),k(e(re),{key:m,type:"error"},{default:w(()=>[V(v(_),1)]),_:2},1024))),128)),(u(!0),x(S,null,T(e(d),(_,m)=>(u(),k(e(re),{key:m,type:"warning"},{default:w(()=>[y("p",null,[m==="curl"?(u(),x(S,{key:0},[V(v(e(o)("files_external","The cURL support in PHP is not enabled or installed.")),1)],64)):m==="ftp"?(u(),x(S,{key:1},[V(v(e(o)("files_external","The FTP support in PHP is not enabled or installed.")),1)],64)):(u(),x(S,{key:2},[V(v(e(o)("files_external","{module} is not installed.",{module:m})),1)],64)),V(" "+v(e(Fe)("files_external","Please ask your system administrator to install it as otherwise mounting the following backend is not possible:","Please ask your system administrator to install it as otherwise mounting the following backends is not possible:",_.length)),1)]),y("ul",{class:h(s.$style.externalStoragesSection__dependantList),"aria-label":e(o)("files_external","Dependant backends")},[(u(!0),x(S,null,T(_,f=>(u(),x("li",{key:f},v(f),1))),128))],10,et)]),_:2},1024))),128)),O("",!0),b(za),b(e(P),{class:h(s.$style.externalStoragesSection__newStorageButton),variant:"primary",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{path:e(Re)},null,8,["path"])]),default:w(()=>[V(" "+v(e(o)("files_external","Add external storage")),1)]),_:1},8,["class"]),b(xe,{open:c.value,"onUpdate:open":p[1]||(p[1]=_=>c.value=_),storage:n.value,onClose:i},null,8,["open","storage"]),e(a).isAdmin?(u(),k(Xa,{key:1})):O("",!0)]),_:1},8,["docUrl","name","description"]))}}),tt="_externalStoragesSection__dependantList_atsmn_2",lt="_externalStoragesSection__newStorageButton_atsmn_7",st={externalStoragesSection__dependantList:tt,externalStoragesSection__newStorageButton:lt},nt={$style:st},ot=N(at,[["__cssModules",nt]]),it=U({__name:"GlobalCredentialsSection",setup(l){const a=A("files_external","global-credentials"),t=M(!1),r=M(a.user),d=M(a.password);ge($);async function c(){try{t.value=!0;const{data:n}=await $.post(R("apps/files_external/globalcredentials"),{uid:a.uid,user:r.value,password:d.value},{confirmPassword:I.Strict});if(n){le(o("files_external","Global credentials saved"));return}}catch(n){ve.error(n)}finally{t.value=!1}te(o("files_external","Could not save global credentials")),r.value=a.user,d.value=a.password}return(n,i)=>(u(),k(e(ce),{name:e(o)("files_external","Global credentials"),description:e(o)("files_external","Global credentials can be used to authenticate with multiple external storages that have the same credentials.")},{default:w(()=>[y("form",{id:"global_credentials",class:h(n.$style.globalCredentialsSectionForm),autocomplete:"false",onSubmit:Ce(c,["prevent"])},[b(e(_e),{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=s=>r.value=s),name:"username",autocomplete:"false",label:e(o)("files_external","Login")},null,8,["modelValue","label"]),b(e(Le),{modelValue:d.value,"onUpdate:modelValue":i[1]||(i[1]=s=>d.value=s),name:"password",autocomplete:"false",label:e(o)("files_external","Password")},null,8,["modelValue","label"]),b(e(P),{class:h(n.$style.globalCredentialsSectionForm__submit),disabled:t.value,variant:"primary",type:"submit"},{default:w(()=>[V(v(t.value?e(o)("files_external","Saving …"):e(o)("files_external","Save")),1)]),_:1},8,["class","disabled"])],34)]),_:1},8,["name","description"]))}}),rt="_globalCredentialsSectionForm_bgjv2_2",ut="_globalCredentialsSectionForm__submit_bgjv2_10",dt={globalCredentialsSectionForm:rt,globalCredentialsSectionForm__submit:ut},ct={$style:dt},_t=N(it,[["__cssModules",ct]]),mt=U({__name:"FilesExternalSettings",setup(l){return(a,t)=>(u(),x(S,null,[b(ot),b(_t)],64))}}),pt=Me(),X=Ae(mt);X.config.idPrefix="files-external",X.use(pt),X.mount("#files-external");
//# sourceMappingURL=files_external-settings.mjs.map