1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7832],{4186:(e,r,s)=>{s.d(r,{w:()=>n});var a=s(95818),t=s(36712);function n(e){let{roles:r}=e;return r.length?(0,a.jsx)("span",{className:"inline-flex flex-wrap items-center gap-1",children:[...r].sort((e,r)=>e===t.QY.SUPER_ADMIN?-1:r===t.QY.SUPER_ADMIN?1:e.localeCompare(r)).map(e=>{var r;return(0,a.jsx)("span",{className:"inline-flex rounded-lg border px-1.5 py-0.5 text-[10px] font-semibold ".concat(e===t.QY.SUPER_ADMIN?"border-primary bg-primary/15 text-primary":e===t.QY.ADMIN||e===t.QY.SHOP_ADMIN?"border-border bg-background text-foreground":"border-border bg-background text-muted-foreground"),children:null!==(r=t.fn[e])&&void 0!==r?r:e.replace(/_/g," ")},e)})}):null}},7832:(e,r,s)=>{s.r(r),s.d(r,{default:()=>S});var a=s(95818),t=s(16418),n=s(54322),o=s(17687),l=s(74003),d=s(98338),i=s(40743),c=s(62249),m=s(46640),N=s(62233),A=s(97350),u=s(38438),E=s(4186),x=s(36712);let _={hub:"Hub",notes:"Notes",diagrams:"Diagram",storage:"Storage",files:"File Manager",seek:"Bot Chat",mail:"Mail",admin:"Admin",shop:"Shop Bot",system:"Há» thá»ng"};function S(){var e,r,s;let[S,b]=(0,t.useState)("matrix"),[p,h]=(0,t.useState)(null),[I,M]=(0,t.useState)(!0),[g,R]=(0,t.useState)(""),[D,y]=(0,t.useState)(""),[f,T]=(0,t.useState)(new Set),[O,H]=(0,t.useState)(""),[j,U]=(0,t.useState)([]),[C,v]=(0,t.useState)(0),[L,P]=(0,t.useState)(1),[w,B]=(0,t.useState)(!1),[k,G]=(0,t.useState)(null),[W,F]=(0,t.useState)(null),[K,Y]=(0,t.useState)(""),[Q,V]=(0,t.useState)(""),[q,z]=(0,t.useState)(""),$=(0,t.useCallback)(async()=>{M(!0);try{let r=await (0,u.oK)();if(h(r),!D&&r.roles.length>0){var e;let s=null!==(e=r.roles.find(e=>e.code!==x.QY.SUPER_ADMIN))&&void 0!==e?e:r.roles[0];y(s.code)}}catch(e){A.W.error(e instanceof Error?e.message:"Kh\xf4ng tải ÄÆ°á»£c RBAC.")}finally{M(!1)}},[D]);(0,t.useEffect)(()=>{$()},[$]),(0,t.useEffect)(()=>{p&&D&&T(new Set(p.rolePermissions.filter(e=>e.role_code===D).map(e=>e.permission_code)))},[p,D]);let X=(0,t.useMemo)(()=>p?Object.keys(p.permissionsByModule).sort():[],[p]),Z=D===x.QY.SUPER_ADMIN,J=async(e,r)=>{R(e);try{await r()}finally{R("")}},ee=()=>J("sync",async()=>{let e=await (0,u.Nc)();h(e.catalog);let r=e.newPermissions.length;A.W.success(r>0?"Ä\xe3 sync â ".concat(r," quyá»n má»i."):"Ä\xe3 sync registry.")}),er=()=>J("seen",async()=>{h((await (0,u.lH)()).catalog),A.W.success("Ä\xe3 Ä\xe1nh dấu Ä\xe3 xem.")}),es=()=>J("save",async()=>{h((await (0,u.Km)(D,[...f])).catalog),A.W.success("Ä\xe3 lưu quyá»n role.")}),ea=()=>J("create-role",async()=>{let e=await (0,u.te)(K,Q);h(e.catalog),y(e.code),Y(""),V(""),A.W.success("Ä\xe3 tạo role.")}),et=(0,t.useCallback)(async function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];B(!0);try{let a=new URLSearchParams({page:String(r),pageSize:"20"});e.trim()&&a.set("search",e.trim());let t=await fetch("/api/admin/users?".concat(a),{credentials:"same-origin",cache:"no-store"}),n=await t.json().catch(()=>({}));if(!t.ok)throw Error(n.error||"Kh\xf4ng tải ÄÆ°á»£c user.");let o=Array.isArray(n.users)?n.users.map(e=>({id:e.id,name:e.name||"",email:e.email||"",username:e.username||null,roles:Array.isArray(e.roles)?e.roles:[]})):[];U(e=>s?[...e,...o]:o),v(Number(n.total||0)),P(r)}catch(e){A.W.error(e instanceof Error?e.message:"Kh\xf4ng tải ÄÆ°á»£c user.")}finally{B(!1)}},[]);(0,t.useEffect)(()=>{if("users"!==S)return;let e=setTimeout(()=>void et(O,1,!1),320*!!O);return()=>clearTimeout(e)},[S,O,et]);let en=e=>J("load-user",async()=>{G(await (0,u.QV)(e.id)),F({name:e.name,email:e.email})}),eo=e=>{Z||T(r=>{let s=new Set(r);return s.has(e)?s.delete(e):s.add(e),s})};return I&&!p?(0,a.jsx)(N.SkeletonPanel,{children:(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)(N.Z1,{className:"h-6 w-32"}),(0,a.jsx)(N.Z1,{className:"h-4 w-80 max-w-full"}),(0,a.jsx)(N.Z1,{className:"h-44 w-full rounded-xl"})]})}):(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"RBAC"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Quyá»n há» thá»ng â sync từ co
1de, chá»nh matrix role, g\xe1n user"})]}),(null!==(e=null==p?void 0:p.newCount)&&void 0!==e?e:0)>0&&(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-2xl border border-primary/30 bg-primary/10 p-3 text-sm",children:[(0,a.jsx)(n.A,{className:"h-4 w-4 text-primary"}),(0,a.jsxs)("span",{className:"font-semibold text-primary",children:[null==p?void 0:p.newCount," quyá»n má»i chưa xem"]}),(0,a.jsx)(m.$,{type:"button",size:"sm",variant:"outline",className:"rounded-lg border-border",disabled:!!g,onClick:()=>void er(),children:"Ä\xe1nh dấu Ä\xe3 xem"})]}),(0,a.jsx)("div",{className:"rounded-2xl border border-border bg-card p-3",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)(m.$,{type:"button",size:"sm",variant:"outline",className:"rounded-lg border-border",disabled:!!g,onClick:()=>void ee(),children:["sync"===g?(0,a.jsx)(o.A,{className:"h-4 w-4 animate-spin"}):(0,a.jsx)(l.A,{className:"h-4 w-4"}),"Sync registry"]}),(0,a.jsxs)("span",{className:"text-xs text-muted-foreground",children:[null!==(r=null==p?void 0:p.permissions.length)&&void 0!==r?r:0," quyá»n \xb7 ",null!==(s=null==p?void 0:p.roles.length)&&void 0!==s?s:0," role"]})]})}),(0,a.jsxs)("div",{className:"inline-flex overflow-hidden rounded-lg border border-border",children:[(0,a.jsx)("button",{type:"button",className:"px-3 py-2 text-sm font-semibold ".concat("matrix"===S?"border-primary bg-primary/15 text-primary":"bg-background text-foreground"),onClick:()=>b("matrix"),children:"Matrix role"}),(0,a.jsx)("button",{type:"button",className:"border-l border-border px-3 py-2 text-sm font-semibold ".concat("users"===S?"border-primary bg-primary/15 text-primary":"bg-background text-foreground"),onClick:()=>b("users"),children:"G\xe1n user"})]}),"matrix"===S&&p&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"rounded-2xl border border-border bg-card p-3",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-end gap-2",children:[(0,a.jsxs)("label",{className:"flex min-w-[180px] flex-col gap-1 text-xs font-semibold text-muted-foreground",children:["Role",(0,a.jsx)("select",{className:"rounded-lg border border-border bg-background px-2 py-2 text-sm text-foreground",value:D,onChange:e=>y(e.target.value),children:p.roles.map(e=>(0,a.jsxs)("option",{value:e.code,children:[e.label," (",e.code,")",e.is_system?"":" \xb7 custom"]},e.code))})]}),!Z&&(0,a.jsxs)(m.$,{type:"button",size:"sm",className:"rounded-lg border border-primary bg-primary/15 text-primary",disabled:!!g,onClick:()=>void es(),children:["save"===g?(0,a.jsx)(o.A,{className:"h-4 w-4 animate-spin"}):(0,a.jsx)(d.A,{className:"h-4 w-4"}),"Lưu"]}),Z&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"super_admin lu\xf4n c\xf3 má»i quyá»n Äang active"})]})}),(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-card p-3",children:[(0,a.jsx)("p",{className:"mb-2 text-xs font-semibold text-muted-foreground",children:"Role custom"}),(0,a.jsxs)("div",{className:"flex flex-wrap items-end gap-2",children:[(0,a.jsx)("input",{className:"rounded-lg border border-border bg-background px-2 py-2 text-sm",placeholder:"m\xe3 role",value:K,onChange:e=>Y(e.target.value)}),(0,a.jsx)("input",{className:"min-w-[160px] rounded-lg border border-border bg-background px-2 py-2 text-sm",placeholder:"T\xean hiá»n thá»",value:Q,onChange:e=>V(e.target.value)}),(0,a.jsx)(m.$,{type:"button",size:"sm",variant:"outline",className:"rounded-lg border-border",disabled:!!g||!K.trim()||!Q.trim(),onClick:()=>void ea(),children:"Tạo"})]})]}),(0,a.jsx)("div",{className:"max-h-[520px] space-y-3 overflow-y-auto",children:X.map(e=>{var r,s;return(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-card p-3",children:[(0,a.jsx)("p",{className:"mb-2 text-sm font-semibold text-foreground",children:null!==(r=_[e])&&void 0!==r?r:e}),(0,a.jsx)("div",{className:"space-y-1.5",children:(null!==(s=p.permissionsByModule[e])&&void 0!==s?s:[]).map(e=>{let r=Z||f.has(e.code);return(0,a.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 rounded-xl border border-border bg-background p-2.5 text-sm",children:[(0,a.jsx)("input",{type:"checkbox",className:"mt-0.5",checked:r,disabled:Z||!!g,onChange:()=>eo(e.code)}),(0,a.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:"font-medium text-foreground",children:e.label}),(0,a.jsx)("span",{className:"ml-2 font-mono text-xs text-muted-foreground",children:e.code}
1),e.isNew&&(0,a.jsx)("span",{className:"ml-2 rounded bg-primary/15 px-1.5 py-0.5 text-xs font-semibold text-primary",children:"Má»i"})]})]},e.code)})})]},e)})})]}),"users"===S&&p&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-card p-3",children:[(0,a.jsxs)("div",{className:"relative mb-2",children:[(0,a.jsx)(i.A,{className:"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),(0,a.jsx)("input",{className:"w-full rounded-lg border border-border bg-background py-2 pl-8 pr-8 text-sm outline-none focus:border-primary",value:O,onChange:e=>H(e.target.value),placeholder:"T\xecm t\xean, email, username"}),O?(0,a.jsx)("button",{type:"button",className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",onClick:()=>H(""),title:"Xo\xe1",children:(0,a.jsx)(c.A,{className:"h-3.5 w-3.5"})}):null]}),(0,a.jsx)("p",{className:"mb-2 text-xs text-muted-foreground",children:w?"Äang t\xecmâ¦":"Äang hiá»n ".concat(j.length,"/").concat(C)}),(0,a.jsx)("div",{className:"max-h-64 space-y-1 overflow-y-auto",children:0!==j.length||w?j.map(e=>(0,a.jsxs)("button",{type:"button",className:"flex w-full items-center justify-between gap-2 rounded-xl border px-2.5 py-2 text-left text-sm ".concat((null==k?void 0:k.userId)===e.id?"border-primary bg-primary/15 text-primary":"border-border bg-background text-foreground"),onClick:()=>void en(e),children:[(0,a.jsxs)("span",{className:"min-w-0",children:[(0,a.jsx)("span",{className:"block truncate font-medium",children:e.name||e.email||e.id}),(0,a.jsxs)("span",{className:"block truncate text-xs text-muted-foreground",children:[e.email,e.username?" \xb7 @".concat(e.username):""]})]}),(0,a.jsx)(E.w,{roles:e.roles.filter(e=>e!==x.QY.USER)})]},e.id)):(0,a.jsx)("p",{className:"px-1 py-3 text-sm text-muted-foreground",children:O.trim()?"Kh\xf4ng t\xecm thấy khá»p.":"Chưa c\xf3 user."})}),j.length<C?(0,a.jsxs)(m.$,{type:"button",size:"sm",variant:"outline",className:"mt-2 rounded-lg border-border",disabled:w,onClick:()=>void et(O,L+1,!0),children:["Tải th\xeam (",C-j.length,")"]}):null]}),k&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-card p-3",children:[(0,a.jsxs)("p",{className:"mb-2 text-sm font-semibold",children:["Roles",W?(0,a.jsx)("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:W.name||W.email}):null]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:p.roles.map(e=>{let r=k.roles.includes(e.code);return(0,a.jsx)("button",{type:"button",disabled:!!g||e.code===x.QY.USER&&r,className:"rounded-lg border px-3 py-2 text-sm font-semibold disabled:opacity-50 ".concat(r?"border-primary bg-primary/15 text-primary":"border-border bg-background text-foreground"),onClick:()=>J("role-".concat(e.code),async()=>{let s=r?await (0,u.m4)(k.userId,e.code):await (0,u.yj)(k.userId,e.code);G(s),U(e=>e.map(e=>e.id===k.userId?{...e,roles:s.roles}:e)),A.W.success(r?"Ä\xe3 gỡ role.":"Ä\xe3 g\xe1n role.")}),children:e.label},e.code)})})]}),(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-card p-3",children:[(0,a.jsx)("p",{className:"mb-2 text-sm font-semibold",children:"Quyá»n trá»±c tiếp (ngo\xe0i role)"}),(0,a.jsxs)("div",{className:"mb-2 flex flex-wrap gap-2",children:[0===k.directPermissions.length&&(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"Chưa c\xf3"}),k.directPermissions.map(e=>(0,a.jsxs)("button",{type:"button",disabled:!!g,className:"rounded-lg border border-primary bg-primary/15 px-2 py-1 text-xs font-semibold text-primary disabled:opacity-50",onClick:()=>J("revoke-".concat(e),async()=>{G(await (0,u.YK)(k.userId,e)),A.W.success("Ä\xe3 gỡ quyá»n.")}),children:[e," \xd7"]},e))]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-end gap-2",children:[(0,a.jsxs)("select",{className:"min-w-[200px] rounded-lg border border-border bg-background px-2 py-2 text-sm",value:q,onChange:e=>z(e.target.value),children:[(0,a.jsx)("option",{value:"",children:"Chá»n quyá»nâ¦"}),p.permissions.map(e=>(0,a.jsxs)("option",{value:e.code,children:[e.label," (",e.code,")"]},e.code))]}),(0,a.jsx)(m.$,{type:"button",size:"sm",variant:"outline",className:"rounded-lg border-border",disabled:!!g||!q,onClick:()=>J("grant-direct",async()=>{G(await (0,u.yY)(k.userId,q)),z(""),A.W.success("Ä\xe3 g\xe1n quyá»n.")}),children:"G\xe1n"})]})]}),(0,a.jsxs)("div",{className:"rounded-2xl border border-border bg-card p-3",children:[(0,a.jsxs)("p",{className:"mb-1 text-sm font-semibold",children:["Hiá»u lá»±c (",k.permissions.length,")"]}),(0,a.jsx)("p",{className:"font-mono text-xs text-muted-foreground break-all",children:k.permissions.join(", ")||"â"})]})]})]})]})}},19801:(e,r,s)=>{s.d(r,{Nx:()=>a});let a={HUB_NOTES:"hub:notes",HUB_DIAGRAM:"hub:diagram",HUB_STORAGE:"hub:storage",HUB_FILES:"hub:files",HUB_SEEK:"hub:seek",HUB_MAIL:"hub:mail",HUB_TEXT:"hub:text",HUB_TOOLS:"hub:tools",HUB_GAME:"hub:game",HUB_LEARN:"hub:learn",NOTES_CREATE:"notes:create",NOTES_SHARE:"notes:share",DIAGRAMS_CREATE:"diagrams:create",DIAGRAMS_SHARE:"diagrams:share",STORAGE_USE:"storage:use",FILES_USE:"files:use",FILES_TEAM_CREATE:"files:team:create",FILES_TEAM_MANAGE:"files:team:manage",SEEK_USE:"seek:use",MAIL_FETCH:"mail:fetch",LEARN_CREATE:"learn:create",LEARN_AI:"learn:ai",LEARN_VIDEO:"learn:video",ADMIN_ACCESS:"admin:access",ADMIN_USERS_READ:"admin:users:read",ADMIN_USERS_WRITE:"admin:users:write",ADMIN_WALLET_READ:"admin:wallet:read",ADMIN_WALLET_WRITE:"admin:wallet:write",ADMIN_SHOP:"admin:shop",ADMIN_MAIL:"admin:mail",ADMIN_ADS:"admin:ads",ADMIN_PLANS:"admin:plans",ADMIN_SITE:"admin:site",ADMIN_RBAC_READ:"admin:rbac:read",ADMIN_RBAC_MANAGE:"admin:rbac:manage",ADMIN_REVENUE_READ:"admin:revenue:read",ADMIN_REVENUE_MANAGE:"admin:revenue:manage",SHOP_ACCESS:"shop:access",SHOP_SALES:"shop:sales",SHOP_TOOLS:"shop:tools",SHOP_CUSTOMERS:"shop:customers",SHOP_PAYMENTS:"shop:payments",SHOP_SIM:"shop:sim",SHOP_CONTENT:"shop:content",SHOP_OPS:"shop:ops"};a.HUB_NOTES,a.HUB_DIAGRAM,a.HUB_STORAGE,a.HUB_FILES,a.HUB_SEEK,a.HUB_MAIL,a.HUB_TEXT,a.HUB_TOOLS,a.HUB_GAME,a.HUB_LEARN,a.NOTES_CREATE,a.NOTES_SHARE,a.DIAGRAMS_CREATE,a.DIAGRAMS_SHARE,a.STORAGE_USE,a.FILES_USE,a.FILES_TEAM_CREATE,a.FILES_TEAM_MANAGE,a.SEEK_USE,a.MAIL_FETCH,a.LEARN_CREATE,a.LEARN_AI,a.LEARN_VIDEO,a.ADMIN_ACCESS,a.ADMIN_USERS_READ,a.ADMIN_USERS_WRITE,a.ADMIN_WALLET_READ,a.ADMIN_WALLET_WRITE,a.ADMIN_SHOP,a.ADMIN_MAIL,a.ADMIN_ADS,a.ADMIN_PLANS,a.ADMIN_SITE,a.ADMIN_RBAC_READ,a.ADMIN_RBAC_MANAGE,a.ADMIN_REVENUE_READ,a.ADMIN_REVENUE_MANAGE,a.SHOP_ACCESS,a.SHOP_SALES,a.SHOP_TOOLS,a.SHOP_CUSTOMERS,a.SHOP_PAYMENTS,a.SHOP_SIM,a.SHOP_CONTENT,a.SHOP_OPS,Object.values(a),a.HUB_NOTES,a.HUB_DIAGRAM,a.HUB_STORAGE,a.HUB_FILES,a.HUB_SEEK,a.HUB_MAIL,a.HUB_TEXT,a.HUB_TOOLS,a.HUB_GAME,a.HUB_LEARN,a.NOTES_CREATE,a.NOTES_SHARE,a.DIAGRAMS_CREATE,a.DIAGRAMS_SHARE,a.STORAGE_USE,a.FILES_USE,a.FILES_TEAM_CREATE,a.FILES_TEAM_MANAGE,a.SEEK_USE,a.MAIL_FETCH,a.LEARN_CREATE,a.LEARN_AI,a.LEARN_VIDEO,a.ADMIN_ACCESS,a.ADMIN_USERS_READ,a.ADMIN_USERS_WRITE,a.ADMIN_WALLET_READ,a.ADMIN_WALLET_WRITE,a.ADMIN_SHOP,a.ADMIN_MAIL,a.ADMIN_ADS,a.ADMIN_PLANS,a.ADMIN_SITE,a.ADMIN_RBAC_READ,a.ADMIN_RBAC_MANAGE,a.ADMIN_REVENUE_READ,a.ADMIN_REVENUE_MANAGE,a.SHOP_ACCESS,a.SHOP_SALES,a.SHOP_TOOLS,a.SHOP_CUSTOMERS,a.SHOP_PAYMENTS,a.SHOP_SIM,a.SHOP_CONTENT,a.SHOP_OPS},36712:(e,r,s)=>{s.d(r,{H4:()=>m,QY:()=>t,fn:()=>n});var a=s(19801);let t={USER:"user",MEMBER:"member",MODERATOR:"moderator",ADMIN:"admin",SHOP_ADMIN:"shop_admin",SUPER_ADMIN:"super_admin"},n={[t.USER]:"User",[t.MEMBER]:"Th\xe0nh vi\xean trả ph\xed",[t.MODERATOR]:"Moderator",[t.ADMIN]:"Admin",[t.SHOP_ADMIN]:"Shop admin",[t.SUPER_ADMIN]:"Super admin"},o=[a.Nx.HUB_NOTES,a.Nx.HUB_DIAGRAM,a.Nx.HUB_STORAGE,a.Nx.HUB_FILES,a.Nx.HUB_TEXT,a.Nx.HUB_TOOLS,a.Nx.HUB_GAME,a.Nx.HUB_MAIL,a.Nx.HUB_LEARN,a.Nx.NOTES_CREATE,a.Nx.NOTES_SHARE,a.Nx.DIAGRAMS_CREATE,a.Nx.DIAGRAMS_SHARE,a.Nx.STORAGE_USE,a.Nx.FILES_USE,a.Nx.MAIL_FETCH,a.Nx.LEARN_CREATE,a.Nx.LEARN_AI],l=[a.Nx.HUB_SEEK,a.Nx.SEEK_USE,a.Nx.FILES_TEAM_CREATE],d=[a.Nx.ADMIN_USERS_READ,a.Nx.ADMIN_RBAC_READ],i=[a.Nx.ADMIN_ACCESS,a.Nx.ADMIN_USERS_READ,a.Nx.ADMIN_USERS_WRITE,a.Nx.ADMIN_WALLET_READ,a.Nx.ADMIN_WALLET_WRITE,a.Nx.ADMIN_SHOP,a.Nx.ADMIN_MAIL,a.Nx.ADMIN_ADS,a.Nx.ADMIN_PLANS,a.Nx.ADMIN_SITE,a.Nx.ADMIN_RBAC_READ,a.Nx.ADMIN_REVENUE_READ,a.Nx.FILES_TEAM_MANAGE,a.N
1x.LEARN_VIDEO],c=[a.Nx.SHOP_ACCESS,a.Nx.SHOP_SALES,a.Nx.SHOP_TOOLS,a.Nx.SHOP_CUSTOMERS,a.Nx.SHOP_PAYMENTS,a.Nx.SHOP_SIM,a.Nx.SHOP_CONTENT,a.Nx.SHOP_OPS];t.USER,t.MEMBER,[...o,...l],t.MODERATOR,[...o,...l,...d],t.ADMIN,[...o,...l,...i],t.SHOP_ADMIN,[...o,...c],t.SUPER_ADMIN,a.Nx.ADMIN_USERS_READ,a.Nx.ADMIN_WALLET_READ,a.Nx.ADMIN_SHOP,a.Nx.ADMIN_MAIL,a.Nx.ADMIN_ADS,a.Nx.ADMIN_PLANS,a.Nx.ADMIN_PLANS,a.Nx.ADMIN_PLANS,a.Nx.ADMIN_PLANS,a.Nx.ADMIN_SITE,a.Nx.ADMIN_SITE,a.Nx.ADMIN_ACCESS,a.Nx.ADMIN_USERS_READ,a.Nx.ADMIN_RBAC_READ,a.Nx.ADMIN_REVENUE_READ,a.Nx.ADMIN_SITE,a.Nx.ADMIN_SITE,a.Nx.ADMIN_SITE,a.Nx.ADMIN_SITE,a.Nx.ADMIN_ACCESS,a.Nx.ADMIN_ADS,a.Nx.ADMIN_PLANS,a.Nx.ADMIN_USERS_READ,Object.values(t);let m=[t.MODERATOR,t.ADMIN,t.SHOP_ADMIN,t.SUPER_ADMIN]},38438:(e,r,s)=>{async function a(e){let r=Error((await e.json().catch(()=>({}))).error||"HTTP ".concat(e.status));throw r.status=e.status,r}async function t(){let e=await fetch("/api/admin/rbac",{credentials:"same-origin",cache:"no-store"});return e.ok||await a(e),await e.json()}async function n(e){let r=await fetch("/api/admin/rbac?userId=".concat(encodeURIComponent(e)),{credentials:"same-origin",cache:"no-store"});return r.ok||await a(r),await r.json()}async function o(e){let r=await fetch("/api/admin/rbac",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});return r.ok||await a(r),r.json()}async function l(){return o({action:"sync"})}async function d(e){return o({action:"mark-seen",permissionCodes:e})}async function i(e,r){return o({action:"set-role-permissions",roleCode:e,permissions:r})}async function c(e,r){return o({action:"grant",userId:e,role:r})}async function m(e,r){return o({action:"revoke",userId:e,role:r})}async function N(e,r){return o({action:"create-role",code:e,label:r})}async function A(e,r){return o({action:"grant-permission",userId:e,permission:r})}async function u(e,r){return o({action:"revoke-permission",userId:e,permission:r})}s.d(r,{Km:()=>i,Nc:()=>l,QV:()=>n,YK:()=>u,lH:()=>d,m4:()=>m,oK:()=>t,te:()=>N,yY:()=>A,yj:()=>c})}}]);
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.