PageSourceSearch

https://phloxe.io/_nuxt/JluWQLM2.js

js phloxe.io collected 2026-10-08 12:47:10 UTC 4,051 bytes, 1 lines download raw bytes

1import{d as G,x as Y,I as q,Y as H,c as m,r as w,z as J,a as i,b as n,e as B,t as l,u as r,f as $,F as x,h as C,k as S,y as N,o as a,_ as Q,i as A,g as E,n as W,w as X,E as Z}from"#entry";import{_ as ee}from"./6K3D47wn.js";import{_ as se}from"./DtolQxHL.js";import"./DWGMdCOl.js";const te={class:"max-w-5xl mx-auto py-8 px-4 space-y-6"},ne={class:"text-2xl font-bold text-gray-900"},ae={class:"text-sm text-gray-500 mt-1"},oe={key:0,class:"flex justify-center py-12"},ie={class:"flex gap-2 flex-wrap"},re={class:"space-y-6"},le={class:"bg-gray-50 px-4 py-2 border-b"},ce={class:"text-xs font-semibold uppercase tracking-wide text-gray-500"},de={class:"divide-y"},ue=["onClick"],_e={class:"flex items-center gap-3"},pe={class:"text-sm font-medium text-gray-900"},me={class:"text-xs text-gray-400 font-mono"},ye={key:0,class:"text-xs text-gray-400"},ve={class:"flex justify-end pt-4"},be=G({__name:"index",async setup(fe){let y,I;const K=Y(),{t:v,te:k}=q();function L(e,s){const o=`admin.permissions.perm_labels.${e.replace(/:/g,"_")}`;return k(o)?v(o):s}function O(e){const s=`admin.permissions.scope_${e}`;return k(s)?v(s):e}const{data:c,pending:P,refresh:z}=([y,I]=H(()=>N("admin/platform-permissions")),y=await y,I(),y),U=m(()=>{if(!c.value)return[];const e=[{key:"moderator",label:v("admin.users.role_moderator"),partner_type_id:null}],s=(c.value.partner_types??[]).map(o=>{const u=`admin.permissions.partner_type_${o.slug.replace(/-/g,"_")}`;return{key:"partner",label:k(u)?v(u):o.name,partner_type_id:o.id}});return[...e,...s]}),h=w(0),d=m(()=>U.value[h.value]),R=m(()=>{if(!c.value||!d.value)return new Set;const e=c.value.assignments[d.value.key]??[];return new Set(e.filter(s=>s.partner_type_id===d.value.partner_type_id).map(s=>s.permission))}),p=w(new Set);J(d,()=>{p.value=new Set(R.value)},{immediate:!0});const T=m(()=>{if(!c.value)return[];const e=c.value.registry;return Object.entries(e).map(([s,o])=>({scope:s,permissions:Object.entries(o).map(([u,b])=>({key:u,label:b}))}))}),f=["admin:roles:manage","admin:users:assign_role"],D=m(()=>K.user?.platform_role==="super_admin"),g=w(!1),V=e=>{f.includes(e)||(p.value.has(e)?p.value.delete(e):p.value.add(e))},F=async()=>{if(d.value){g.value=!0;try{await N(`admin/platform-permissions/${d.value.key}`,{method:"PUT",body:{permissions:Array.from(p.value),partner_type_id:d.value.partner_type_id}}),await z()}finally{g.value=!1}}};return(e,s)=>{const o=Q,u=Z,b=ee,M=se;return a(),i("div",te,[n("div",null,[n("h1",ne,l(e.$t("admin.permissions.title")),1),n("p",ae,l(e.$t("admin.permissions.description")),1)]),r(P)?(a(),i("div",oe,[$(o,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-gray-400"})])):r(c)?(a(),i(x,{key:1},[n("div",ie,[(a(!0),i(x,null,C(r(U),(_,t)=>(a(),A(u,{key:`${_.key}-${_.partner_type_id}`,variant:r(h)===t?"solid":"outline",size:"sm",onClick:j=>h.value=t},{default:S(()=>[E(l(_.label),1)]),_:2},1032,["variant","onClick"]))),128))]),n("div",re,[(a(!0),i(x,null,C(r(T),_=>(a(),i("div",{key:_.scope,class:"border rounded-lg overflow-hidden"},[n("div",le,[n("span",ce,l(O(_.scope)),1)]),n("ul",de,[(a(!0),i(x,null,C(_.permissions,t=>(a(),i("li",{key:t.key,class:W(["flex items-center justify-between px-4 py-3",f.includes(t.key)?"bg-gray-50":"hover:bg-gray-50 cursor-pointer"]),onClick:j=>V(t.key)},[n("div",_e,[f.includes(t.key)?(a(),A(o,{key:0,name:"i-heroicons-lock-closed",class:"h-4 w-4 text-gray-400 shrink-0"})):(a(),A(b,{key:1,"model-value":r(p).has(t.key),disabled:!r(D),onClick:s[0]||(s[0]=X(()=>{},["stop"])),"onUpdate:modelValue":j=>V(t.key)},null,8,["model-value","disabled","onUpdate:modelValue"])),n("div",null,[n("p",pe,l(L(t.key,t.label)),1),n("p",me,l(t.key),1)])]),f.includes(t.key)?(a(),i("span",ye,l(e.$t("admin.permissions.super_admin_only")),1)):B("",!0)],10,ue))),128))])]))),128))]),n("div",ve,[$(M,{permission:"admin:roles:manage"},{default:S(()=>[$(u,{loading:r(g),disabled:r(g),onClick:F},{default:S(()=>[E(l(e.$t("admin.permissions.save")),1)]),_:1},8,["loading","disabled"])]),_:1})])],64)):B("",!0)])}}});export{be as default};

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.