PageSourceSearch

https://www.benjaminvfphotographie.com/assets/espace-client-BVigSQrW.js

js benjaminvfphotographie.com collected 2026-10-09 22:04:04 UTC 10,811 bytes, 1 lines download raw bytes

1import{r as e,t}from"./jsx-runtime-DGeXAQPT.js";import{t as n}from"./react-vt4WmSOl.js";import{et as r,it as i,nt as a,rt as o,tt as s}from"./index-DGR32VCW.js";function c(e){if(Array.isArray(e))return e.flatMap(e=>c(e));if(typeof e!=`string`)return[];let t=[],n=0,r,i,a,o,s,l=()=>{for(;n<e.length&&/\s/.test(e.charAt(n));)n+=1;return n<e.length},u=()=>(i=e.charAt(n),i!==`=`&&i!==`;`&&i!==`,`);for(;n<e.length;){for(r=n,s=!1;l();)if(i=e.charAt(n),i===`,`){for(a=n,n+=1,l(),o=n;n<e.length&&u();)n+=1;n<e.length&&e.charAt(n)===`=`?(s=!0,n=o,t.push(e.slice(r,a)),r=n):n=a+1}else n+=1;(!s||n>=e.length)&&t.push(e.slice(r))}return t}function l(e){return e instanceof Headers?e:Array.isArray(e)||typeof e==`object`?new Headers(e):null}function u(...e){return e.reduce((e,t)=>{let n=l(t);if(!n)return e;for(let[t,r]of n.entries())t===`set-cookie`?c(r).forEach(t=>e.append(`set-cookie`,t)):e.set(t,r);return e},new Headers)}function d(e){return e!==`__proto__`&&e!==`constructor`&&e!==`prototype`}function f(e,t){let n=Object.create(null);if(e)for(let t of Object.keys(e))d(t)&&(n[t]=e[t]);if(t&&typeof t==`object`)for(let e of Object.keys(t))d(e)&&(n[e]=t[e]);return n}function p(e){if(!e)return Object.create(null);let t=Object.create(null);for(let n of Object.keys(e))d(n)&&(t[n]=e[n]);return t}var m=()=>{throw Error(`createServerOnlyFn() functions can only be called on the server!`)},h=(e,t)=>{let n=t||e||{};n.method===void 0&&(n.method=`GET`);let r=e=>h(void 0,{...n,validator:e,inputValidator:e});return Object.assign(e=>h(void 0,{...n,...e}),{options:n,middleware:e=>{let t=[...n.middleware||[]];e.forEach(e=>{i in e?e.options.middleware&&t.push(...e.options.middleware):t.push(e)});let r=h(void 0,{...n,middleware:t});return r[i]=!0,r},validator:r,inputValidator:r,handler:(...e)=>{let[t,r]=e,i={...n,extractedFn:t,serverFn:r},o=[...i.middleware||[],y(i)];return t.method=n.method,Object.assign(async e=>{let n=await g(o,`client`,{...t,...i,data:e?.data,headers:e?.headers,signal:e?.signal,fetch:e?.fetch,context:p()}),r=a(n.error);if(r)throw r;if(n.error)throw n.error;return n.result},{...t,method:n.method,__executeServer:async e=>{let r=m(),i=r.contextAfterGlobalMiddlewares;return await g(o,`server`,{...t,data:e.data,method:e.method??n.method,serverFnMeta:t.serverFnMeta,context:f(e.context,i),request:r.request}).then(e=>({result:e.result,error:e.error,context:e.sendContext}))}})}})};async function g(e,t,n){let r=_([...o()?.functionMiddleware||[],...e]);if(t===`server`){let e=m({throwIfNotFound:!1});e?.executedRequestMiddlewares&&(r=r.filter(t=>!e.executedRequestMiddlewares.has(t)))}let i=async e=>{let n=r.shift();if(!n)return e;try{let r=`validator`in n.options?n.options.validator:void 0;!r&&`inputValidator`in n.options&&(r=n.options.inputValidator),r&&t===`server`&&(e.data=await v(r,e.data));let a;if(t===`client`?`client`in n.options&&(a=n.options.client):`server`in n.options&&(a=n.options.server),a){let t=async(t={})=>{let n=await i({...e,...t,context:f(e.context,t.context),sendContext:f(e.sendContext,t.sendContext),headers:u(e.headers,t.headers),_callSiteFetch:e._callSiteFetch,fetch:e._callSiteFetch??t.fetch??e.fetch,result:t.result===void 0?t instanceof Response?t:e.result:t.result,error:t.error??e.error});if(n.error)throw n.error;return n},n=await a({...e,next:t});if(s(n))return{...e,error:n};if(n instanceof Response)return{...e,result:n};if(!n)throw Error(`User middleware returned undefined. You must call next() or return a result in your middlewares.`);return n}return i(e)}catch(t){return{...e,error:t}}};return i({...n,headers:n.headers||{},sendContext:n.sendContext||{},context:n.context||p(),_callSiteFetch:n.fetch})}function _(e,t=100){let n=new Set,r=[],i=(e,a)=>{if(a>t)throw Error(`Middleware nesting depth exceeded maximum of ${t}. Check for circular references.`);e.forEach(e=>{e.options.middleware&&i(e.options.middleware,a+1),n.has(e)||(n.add(e),r.push(e))})};return i(e,0),r}async function v(e,t){if(e==null)return{};if(`~standard`in e){let n=await e[`~standard`].validate(t);if(n.issues)throw Error(JSON.stringify(n.issues,void 0,2));return n.value}if(`parse`in e)return e.parse(t);if(typeof e==`function`)return e(t);throw Error(`Invalid validator type!`)}function y(e){return{"~types":void 0,options:{inputValidator:e.validator??e.inputValidator,client:async({next:t,sendContext:n,fetch:r,...i})=>{let a={...i,context:n,fetch:r};return t(await e.extractedFn?.(a))},server:async({next:t,...n})=>{let r=await e.serverFn?.(n);return t({...n,result:r})}}}}var b=e(n(),1),x=h({method:`POST`}).handler(r(`f8f235c300cb06308a065fc6d5eecaa883759ac8389817bfe139a7e3f5599b89`)),S=h({method:`POST`}).handler(r(`a8750f45a210ad4ff2440fa4eb1e9d182382e3023d020220ba7a12d44521844b`)),C=h({method:`POST`}).handler(r(`4b310a681dbfbf4432c4d92cb2256098f2576c5e5e52abae3156c0d218cd318b`)),w=h({method:`POST`}).handler(r(`2368a3b4a20f90dbf7dd0fedf8ce9f197e30d92e7d6d43076f1aaf436e4f03aa`)),T=h({method:`POST`}).handler(r(`c254e176373d44383b2872f0d8d3d29266c4b6985eb73391a9724442151618fa`)),E=t(),D=e=>{let t=new Date(e);return`${t.getFullYear()}
1-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`},O=`w-full rounded-sm border border-border bg-ink px-4 py-3 text-sm text-ivory placeholder:text-muted-foreground/50 focus:border-gold focus:outline-none transition-colors`;function k({adminPassword:e,onExit:t}){let[n,r]=(0,b.useState)([]),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(``),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(null),[f,p]=(0,b.useState)(!1),m=async()=>r(await S({data:{adminPassword:e}}));(0,b.useEffect)(()=>{m().catch(()=>d(`Impossible de charger la liste.`))},[]);let h=async t=>{t.preventDefault(),p(!0),d(null);try{let t=c.replace(/[\s\u200B-\u200D\uFEFF]/g,``).match(/https?:\/\/\S+/i);if(!t)throw Error(`lien`);await C({data:{adminPassword:e,code:i.trim(),label:o,url:t[0]}}),a(``),s(``),l(``),d(`Client enregistré.`),await m()}catch(e){d(e instanceof Error&&e.message.includes(`réservé`)?`Ce code est réservé.`:`Vérifiez le code et le lien (il doit commencer par https://).`)}finally{p(!1)}},g=async t=>{confirm(`Supprimer ce client ?`)&&(await T({data:{adminPassword:e,id:t}}),await m())};return(0,E.jsxs)(`div`,{className:`w-full max-w-2xl text-left`,children:[(0,E.jsx)(`p`,{className:`eyebrow text-center`,children:`Administration`}),(0,E.jsx)(`h1`,{className:`mt-4 text-center text-4xl font-display text-foreground`,children:`Mes clients`}),(0,E.jsxs)(`form`,{onSubmit:h,className:`mt-10 space-y-3`,children:[(0,E.jsx)(`input`,{className:O,placeholder:`Nom du client (ex : Famille Geoffroy)`,value:o,onChange:e=>s(e.target.value)}),(0,E.jsx)(`input`,{className:O,placeholder:`Mot de passe du client`,value:i,onChange:e=>a(e.target.value),required:!0}
1),(0,E.jsx)(`input`,{className:O,placeholder:`Lien de la galerie (https://…)`,value:c,onChange:e=>l(e.target.value),required:!0,type:`text`,inputMode:`url`,autoComplete:`off`}),(0,E.jsx)(`div`,{className:`text-center`,children:(0,E.jsx)(`button`,{type:`submit`,disabled:f,className:`btn-gold mt-2`,children:f?`Enregistrement…`:`Ajouter le client`})}),u&&(0,E.jsx)(`p`,{className:`text-center text-sm text-gold`,role:`status`,children:u})]}),(0,E.jsxs)(`ul`,{className:`mt-12 divide-y divide-border border-y border-border`,children:[n.length===0&&(0,E.jsx)(`li`,{className:`py-4 text-center text-sm text-muted-foreground`,children:`Aucun client pour le moment.`}),n.map(t=>(0,E.jsxs)(`li`,{className:`flex items-center gap-4 py-4`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,E.jsx)(`p`,{className:`text-sm text-foreground`,children:t.label||`Sans nom`}),(0,E.jsx)(`p`,{className:`text-xs tracking-[0.15em] text-gold`,children:t.code}),(0,E.jsx)(`a`,{href:t.url,target:`_blank`,rel:`noopener noreferrer`,className:`block truncate text-xs text-muted-foreground hover:text-gold`,children:t.url})]}),(0,E.jsxs)(`label`,{className:`flex flex-col text-[10px] uppercase tracking-[0.15em] text-muted-foreground`,children:[`Expire le`,(0,E.jsx)(`input`,{type:`date`,defaultValue:D(t.expires_at),onChange:async n=>{n.target.value&&(await w({data:{adminPassword:e,id:t.id,expires:n.target.value}}),d(`Date d'expiration mise à jour.`))},className:`mt-1 rounded-sm border border-border bg-ink px-2 py-1 text-xs text-ivory focus:border-gold focus:outline-none [color-scheme:dark]`})]}),(0,E.jsx)(`button`,{onClick:()=>g(t.id),className:`text-xs uppercase tracking-[0.15em] text-muted-foreground hover:text-gold`,children:`Supprimer`})]},t.id))]}),(0,E.jsx)(`div`,{className:`mt-8 text-center`,children:(0,E.jsx)(`button`,{onClick:t,className:`text-xs uppercase tracking-[0.2em] text-muted-foreground hover:text-gold`,children:`Quitter l'administration`})})]})}function A(){let[e,t]=(0,b.useState)(``),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(null);return i?(0,E.jsx)(`div`,{className:`flex min-h-screen justify-center bg-background px-4 pt-32 pb-20`,children:(0,E.jsx)(k,{adminPassword:i,onExit:()=>a(null)})}):(0,E.jsx)(`div`,{className:`flex min-h-screen items-center justify-center bg-background px-4 pt-32 pb-20`,children:(0,E.jsxs)(`div`,{className:`w-full max-w-md text-center`,children:[(0,E.jsx)(`p`,{className:`eyebrow`,children:`Espace privé`}),(0,E.jsx)(`h1`,{className:`mt-4 text-4xl md:text-5xl font-display text-foreground`,children:`Galerie Photo Client`}),(0,E.jsx)(`p`,{className:`mt-4 text-sm text-muted-foreground leading-relaxed`,children:`Bienvenue dans votre espace dédié. Saisissez le code d'accès qui vous a été transmis pour découvrir vos photographies.`}),(0,E.jsxs)(`form`,{onSubmit:async n=>{n.preventDefault();let i=window.open(``,`_blank`);try{let n=await x({data:{code:e}});if(n.admin){i?.close(),a(e.trim()),t(``);return}n.url?(r(!1),i?(i.opener=null,i.location.href=n.url):window.location.href=n.url):(i?.close(),r(!0))}catch{i?.close(),r(!0)}},className:`mt-10`,children:[(0,E.jsx)(`input`,{type:`password`,value:e,onChange:e=>{t(e.target.value),r(!1)},placeholder:`Votre code d'accès`,"aria-label":`Code d'accès`,autoFocus:!0,className:`w-full rounded-sm border border-border bg-ink px-5 py-4 text-center text-sm tracking-[0.2em] text-ivory placeholder:text-muted-foreground/50 focus:border-gold focus:outline-none transition-colors`}),(0,E.jsx)(`button`,{type:`submit`,className:`btn-gold mt-4`,children:`Accéder à ma galerie`})]}),n&&(0,E.jsx)(`p`,{className:`mt-5 text-sm text-gold animate-fade`,role:`alert`,children:`Mot de passe invalide. Veuillez vérifier le code transmis par votre photographe.`}),(0,E.jsxs)(`p`,{className:`mt-10 text-xs text-muted-foreground/60`,children:[`Un souci d'accès ? Contactez-moi à`,` `,(0,E.jsx)(`a`,{href:`mailto:[email protected]`,className:`gold-link`,children:`[email protected]`})]})]})})}export{A as component};

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.