1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{641:function(n,e,t){Promise.resolve().then(t.t.bind(t,8877,23)),Promise.resolve().then(t.bind(t,3259))},3259:function(n,e,t){"use strict";t.d(e,{AuthProvider:function(){return a},a:function(){return r}});var l=t(7437),u=t(2265),i=t(4802);let s=(0,u.createContext)({user:null,role:null,partnerSlug:null,isAdmin:!1,displayName:null,clients:[],loading:!0,signIn:async()=>({error:null,noRole:!1,isAdmin:!1,partnerSlug:null}),signOut:async()=>{},canAccess:()=>!1});function a(n){let{children:e}=n,[t,a]=(0,u.useState)(null),[r,o]=(0,u.useState)(null),[c,d]=(0,u.useState)(null),[I,g]=(0,u.useState)(!1),[h,m]=(0,u.useState)(null),[p,f]=(0,u.useState)([]),[v,y]=(0,u.useState)(!0),[_]=(0,u.useState)(()=>(0,i.e)());async function w(n){try{let t=n;if(!t){let{data:{session:n}}=await _.auth.getSession();t=null==n?void 0:n.access_token}if(!t)return null;let l=new AbortController,u=setTimeout(()=>l.abort(),5e3),i=await fetch("https://nntuztaehnywdbttrajy.supabase.co/rest/v1/rpc/fn_bmp_get_my_role",{method:"POST",headers:{apikey:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im5udHV6dGFlaG55d2RidHRyYWp5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDc5ODg3MzEsImV4cCI6MjA2MzU2NDczMX0.Y78rW4wgHFU_QaKCIdBRCqgJggiPlDk3cDM5ANfVKYw",Authorization:"Bearer "+t,"Content-Type":"application/json"},body:"{}",signal:l.signal});clearTimeout(u);let s=await i.json();if(null==s?void 0:s.authorized){var e;return o(s.role),d(s.partner_slug),g(s.is_admin),m(s.display_name),f(s.clients||[]),{isAdmin:!!s.is_admin,partnerSlug:null!==(e=s.partner_slug)&&void 0!==e?e:null}}return o(null),d(null),g(!1),m(null),f([]),null}catch(n){return o(null),d(null),g(!1),m(null),f([]),null}}async function S(n,e){var t,l,u,i;let{data:s,error:r}=await _.auth.signInWithPassword({email:n,password:e});if(r)return{error:r.message,noRole:!1};a(null!==(u=null===(t=s.session)||void 0===t?void 0:t.user)&&void 0!==u?u:null);let o=null===(l=s.session)||void 0===l?void 0:l.access_token,c=await w(o);return{error:null,noRole:!c,isAdmin:!!(null==c?void 0:c.isAdmin),partnerSlug:null!==(i=null==c?void 0:c.partnerSlug)&&void 0!==i?i:null}}async function C(){await _.auth.signOut(),a(null),o(null),d(null),g(!1),f([])}return(0,u.useEffect)(()=>{let n=!0,e=setTimeout(()=>{n&&v&&(console.warn("[Auth] Loading timeout - force release"),y(!1))},8e3);_.auth.getSession().then(async e=>{let{data:{session:t}}=e;n&&((null==t?void 0:t.user)?(a(t.user),await w(t.access_token)):a(null),n&&y(!1))}).catch(()=>{n&&y(!1)});let{data:{subscription:t}}=_.auth.onAuthStateChange(async(e,t)=>{var l;n&&(a(null!==(l=null==t?void 0:t.user)&&void 0!==l?l:null),(null==t?void 0:t.user)?await w(t.access_token):(o(null),d(null),g(!1),m(null),f([])))});return()=>{n=!1,clearTimeout(e),t.unsubscribe()}},[]),(0,l.jsx)(s.Provider,{value:{user:t,role:r,partnerSlug:c,isAdmin:I,displayName:h,clients:p,loading:v,signIn:S,signOut:C,canAccess:function(n,e){return!!t&&!!r&&(!!I||c===n&&(!e||p.some(t=>t.partner_slug===n&&t.client_slug===e)))}},children:e})}let r=()=>(0,u.useContext)(s)},4802:function(n,e,t){"use strict";t.d(e,{e:function(){return u}});
1var l=t(6038);function u(){return(0,l.createBrowserClient)("https://nntuztaehnywdbttrajy.supabase.co","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im5udHV6dGFlaG55d2RidHRyYWp5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDc5ODg3MzEsImV4cCI6MjA2MzU2NDczMX0.Y78rW4wgHFU_QaKCIdBRCqgJggiPlDk3cDM5ANfVKYw")}},8877:function(){}},function(n){n.O(0,[404,38,971,23,744],function(){return n(n.s=641)}),_N_E=n.O()}]);
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.