1"use strict";(globalThis.webpackChunkwips_components_scripts||=[]).push([[1295],{"2920dfb97b6e8842"(e,t,a){a.r(t),a.d(t,{default:()=>A}),a("1519ef9f27f54b60"),a("1afb2fd57889d583");var s=a("b641633d6c906d19"),o=a("99c472be6da17922"),l=a("a54fa6d0a722ba3f"),n=a("ab5c7e913102dd40"),u=a("ba3785355cfb5e6b"),r=a("b412771483bb9625"),i=a("fc32e747a2e978da"),d=a("16b512075f10bf61"),c=a("92c490e8e5efe9cd"),p=a("eb0d7dd6674ec63a"),g=a("6155503b942128ba");const v={key:0,class:"tab-strip",role:"tablist"},m=["aria-selected","onClick"],h={class:"tab-count"},b={class:"group-section"},f={class:"section-description"},y={key:0,class:"empty-hint"},k={class:"group-count"},E={class:"section-description"},w={key:0,class:"sync-info"},L={key:2,class:"group-section"},C={class:"section-description"},_={key:0,class:"empty-hint"},W={key:3,class:"group-section external-groups"},S={class:"group-count"},U={class:"section-description"},$={key:0,class:"sync-info"},X=(0,s.pM)({name:"GroupListMode"}),R=(0,s.pM)({...X,props:{params:{},mode:{},message:{},messageType:{}},emits:["update:mode","update:message","update:message-type"],setup(e,{emit:t}){const a=t,{t:X}=(0,n.s)(),{canManageAuth:R}=(0,p.bP)((0,c.x)()),A=(0,s.EW)(()=>"/admin/users-api/groups"),I=(0,s.EW)(()=>"/admin/identity-providers-api/providers"),{data:F,refresh:P}=(0,g.u)(A),{data:G}=(0,g.u)(I),Q=(0,s.EW)(()=>F.value??[]),D=(0,s.EW)(()=>{const e=G.value?.providers;return Array.isArray(e)?e.filter(e=>e?.enabled):[]}),x=(0,s.EW)(()=>Q.value.filter(e=>"normal"===e.type)),K=(0,s.EW)(()=>Q.value.filter(e=>"auto"===e.type&&e.sourceProviderId&&!e.externalId)),M=(0,s.EW)(()=>x.value.filter(e=>!e.sourceProviderId)),T=(0,s.EW)(()=>x.value.filter(e=>!!e.sourceProviderId)),j=(0,s.EW)(()=>[...K.value,...T.value]),N=(0,s.EW)(()=>{const e=new Set,t=[];for(const a of j.value){const s=a.sourceProviderId;if(null===s||e.has(s))continue;e.add(s);const o=D.value.find(e=>e.id===s);if(!o)continue;const l=j.value.filter(e=>e.sourceProviderId===s).filter(e=>"normal"===e.type),n=l.length>0?l[0].lastSyncedAt:null;t.push({id:s,name:o.name,lastSyncedAt:n})}return t});function Y(e){return j.value.filter(t=>t.sourceProviderId===e)}const B=(0,l.KR)("all"),q=(0,s.EW)(()=>{const e=[{id:"all",title:X("All groups"),count:x.value.length+K.value.length},{id:"local",title:X("Local"),count:M.value.length}];for(const t of N.value)e.push({id:`provider-${t.id}`,title:t.name,count:Y(t.id).length});return e}),z=(0,s.EW)(()=>{if("string"!=typeof B.value||!B.value.startsWith("provider-"))return null;const e=parseInt(B.value.substring(9),10);return N.value.find(t=>t.id===e)??null});function H(e){return e?new Date(e).toLocaleString():""}function J(e,t){a("update:message",t),a("update:message-type",e)}async function O(e){const t=new URL(location.href);t.hash="#"+new URLSearchParams({"edit-group":String(e.id)}).toString(),a("update:message",""),history.pushState(null,"",t)}async function V(e){const t=new URL(location.href);t.hash="#"+new URLSearchParams({"edit-group-roles":String(e.id)}).toString(),a("update:message",""),history.pushState(null,"",t)}async function Z(){a("update:mode","create-group")}async function ee(e){e?.id&&((await fetch("/admin/users-api/groups/"+e.id,{method:"delete"})).ok?J("ok",X("User group was deleted")):J("error",X("Failed deleting user group")),P())}return(t,a)=>((0,s.uX)(),(0,s.Wv)(u.default,{title:t.$t("User groups"),"submit-button-label":"","back-button-label":t.$t("Back")},(0,s.eX)({default:(0,s.k6)(()=>[(0,s.Lk)("div",null,[(0,s.bF)(d.default,{message:e.message,"message-type":e.messageType,"onUpdate:message":a[0]||(a[0]=e=>t.$emit("update:message",e))},null,8,["message","message-type"]),q.value.length>1?((0,s.uX)(),(0,s.CE)("div",v,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(q.value,e=>((0,s.uX)(),(0,s.CE)("button",{key:e.id,type:"button",role:"tab","aria-selected":B.value===e.id,class:(0,o.C4)(["tab-button",{"tab-button--active":B.value===e.id}]),onClick:t=>B.value=e.id},[(0,s.eW)((0,o.v_)(e.title)+" ",1),(0,s.Lk)("span",h,(0,o.v_)(e.count),1)],10,m))),128))])):(0,s.Q3)("",!0),"all"===B.value?((0,s.uX)(),(0,s.CE)(s.FK,{key:1},[(0,s.Lk)("section",b,[(0,s.Lk)("h3",null,(0,o.v_)(t.$t("Local Groups")),1),(0,s.Lk)("p",f,(0,o.v_)(t.$t("Groups created and managed locally in this system.")),1),(0,s.bF)(r.default,{groups:M.value,"allow-edit":!0,"allow-delete":!0,"show-counts":!0,"onUpdated:groups":(0,l.R1)(P),"onDelete:group":a[1]||(a[1]=e=>ee(e)),"onEdit:group":a[2]||(a[2]=e=>O(e))},null,8,["groups","onUpdated:groups"]),0===M.value.length?((0,s.uX)(),(0,s.CE)("p",y,(0,o.v_)(t.$t('No local groups. Click "Create user group" to add one.')),1)):(0,s.Q3)("",!0)]),((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(N.value,e=>((0,s.uX)(),(0,s.CE)("section",{key:e.id,class:"group-section external-groups"},[(0,s.Lk)("h3",null,[a[11]||(a[11]=(0,s.Lk)("span",{class:"provider-icon"},"ð",-1)),(0,s.eW)(" "+(0,o.v_)(e.name)+" ",1),(0,s.Lk)("span",k,"("+(0,o.v_)(Y(e.id).length)+")",1)]),(0,s.Lk)("p",E,[(0,s.eW)((0,o.v_)(t.$t("Groups synced from identity provider. You can rename them (the new name is kept through future syncs), delete them (the group is tombstoned so the sync job will not recreate it), or assign roles to control member permissions."))+" ",1),e.lastSyncedAt?((0,s.uX)(),(0,s.CE)("span",w,(0,o.v_)(t.$t("Last synced: {time}").replace("{time}",H(e.lastSyncedAt))),1)):(0,s.Q3)("",!0)]),(0,s.bF)(r.default,{groups:Y(e.id),"allow-edit":!0,"allow-delete":!0,"allow-edit-roles":!0,"show-counts":!0,"onUpdated:groups":(0,l.R1)(P),"onDelete:group":a[3]||(a[3]=e=>ee(e)),"onEdit:group":a[4]||(a[4]=e=>O(e)),"onEdit:groupRoles":a[5]||(a[5]=e=>V(e))},null,8,["groups","onUpdated:groups"])]))),128))],64)):"local"===B.value?((0,s.uX)(),(0,s.CE)("section",L,[(0,s.Lk)("h3",null,(0,o.v_)(t.$t("Local Groups")),1),(0,s.Lk)("p",C,(0,o.v_)(t.$t("Groups created and managed locally in this system.")),1),(0,s.bF)(r.default,{groups:M.value,"allow-edit":!0,"allow-delete":!0,"show-counts":!0,"onUpdated:groups":(0,l.R1)(P),"onDelete:group":a[6]||(a[6]=e=>ee(e)),"onEdit:group":a[7]||(a[7]=e=>O(e))},null,8,["groups","onUpdated:groups"]),0===M.value.length?((0,s.uX)(),(0,s.CE)("p",_,(0,o.v_)(t.$t('No local groups. Click "Create user group" to add one.')),1)):(0,s.Q3)("",!0)])):z.value?((0,s.uX)(),(0,s.CE)("section",W,[(0,s.Lk)("h3",null,[a[12]||(a[12]=(0,s.Lk)("span",{class:"provider-icon"},"ð",-1)),(0,s.eW)(" "+(0,o.v_)(z.value.name)+" ",1),(0,s.Lk)("span",S,"("+(0,o.v_)(Y(z.value.id).length)+")",1)]),(0,s.Lk)("p",U,[(0,s.eW)((0,o.v_)(t.$t("Groups synced from identity provider. You can rename them (the new name is kept through future syncs), delete them (the group is tombstoned so the sync job will not recreate it), or assign roles to control member permissions."))+" ",1),z.value.lastSyncedAt?((0,s.uX)(),(0,s.CE)("span",$,(0,o.v_)(t.$t("Last synced: {time}").replace("{time}",H(z.value.lastSyncedAt))),1)):(0,s.Q3)("",!0)]),(0,s.bF)(r.default,{groups:Y(z.value.id),"allow-edit":!0,"allow-delete":!0,"allow-edit-roles":!0,"show-counts":!0,"onUpdated:groups":(0,l.R1)(P),"onDelete:group":a[8]||(a[8]=e=>ee(e)),"onEdit:group":a[9]||(a[9]=e=>O(e)),"onEdit:groupRoles":a[10]||(a[10]=e=>V(e))},null,8,["groups","onUpdated:groups"])])):(0,s.Q3)("",!0)])]),_:2},[(0,l.R1)(R)?{name:"buttons-top",fn:(0,s.k6)(()=>[(0,s.bF)(i.default,{onClick:Z,label:t.$t("Create user group"),highlighted:""},null,8,["label"])]),key:"0"}:void 0]),1032,["title","back-button-label"]))}}),A=(0,a("461bee8a7784aa7f").A)(R,[["__scopeId","data-v-61bd84a1"]])}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.