(()=>{var e={};e.id=1948,e.ids=[1948],e.modules={3295:e=>{"use strict";e.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11723:e=>{"use strict";e.exports=require("querystring")},12412:e=>{"use strict";e.exports=require("assert")},26690:(e,r,s)=>{"use strict";s.d(r,{N:()=>i});var t=s(1926),n=s(10591);function a(e){let r=process.env[e];if(!r)throw Error(`Missing required environment variable: ${e}`);return r}async function o(e){try{let r=await fetch(`${process.env.KEYCLOAK_ISSUER}/protocol/openid-connect/token`,{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:process.env.KEYCLOAK_CLIENT_ID,client_secret:process.env.KEYCLOAK_CLIENT_SECRET,grant_type:"refresh_token",refresh_token:e.refreshToken||""}),method:"POST"}),s=await r.json();if(!r.ok)throw s;return{...e,accessToken:s.access_token,refreshToken:s.refresh_token??e.refreshToken,accessTokenExpires:Date.now()+1e3*s.expires_in}}catch(r){return console.error("Error refreshing access token:",r),{...e,error:"RefreshAccessTokenError"}}}let i={providers:[(0,t.A)({clientId:a("KEYCLOAK_CLIENT_ID"),clientSecret:a("KEYCLOAK_CLIENT_SECRET"),issuer:a("KEYCLOAK_ISSUER"),authorization:{params:{scope:"openid profile email roles"}},profile(e){console.log("Keycloak profile callback:",{rawProfile:e,rawRoles:e.roles,realmAccess:e.realm_access,groups:e.groups});let r=e.realm_access?.roles||[];console.log("Profile callback raw roles:",r);let s=r.map(e=>e.replace(/^ROLE_/,"").toLowerCase());return console.log("Profile callback cleaned roles:",s),{id:e.sub,name:e.name??e.preferred_username,email:e.email,first_name:e.given_name??"",last_name:e.family_name??"",username:e.preferred_username??e.email?.split("@")[0]??"",role:s}}})],session:{strategy:"jwt",maxAge:2592e3},callbacks:{async jwt({token:e,account:r,profile:s}){if(r&&s){let t=(s.realm_access?.roles||[]).map(e=>e.replace(/^ROLE_/,"").toLowerCase());e.accessToken=r.access_token??"",e.refreshToken=r.refresh_token??"",e.accessTokenExpires=r.expires_at??0,e.sub=s.sub,e.role=t,e.username=s.preferred_username??"",e.first_name=s.given_name??"",e.last_name=s.family_name??""}else if(e.accessToken)try{let r=(0,n.s)(e.accessToken);r.realm_access?.roles&&(e.role=r.realm_access.roles.map(e=>e.replace(/^ROLE_/,"").toLowerCase()))}catch(e){console.error("Error decoding token:",e)}return Date.now()<1e3*e.accessTokenExpires?e:o(e)},async session({session:e,token:r}){if(r.error)throw Error(r.error);let s=Array.isArray(r.role)?r.role:[];return e.user={id:r.sub??"",email:r.email??null,name:r.name??null,image:null,username:r.username??"",first_name:r.first_name??"",last_name:r.last_name??"",role:s,nextcloudInitialized:!1},e.accessToken=r.accessToken,e}},pages:{signIn:"/signin",error:"/signin"},debug:!1}},28354:e=>{"use strict";e.exports=require("util")},29294:e=>{"use strict";e.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:e=>{"use strict";e.exports=require("crypto")},55591:e=>{"use strict";e.exports=require("https")},63033:e=>{"use strict";e.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},74075:e=>{"use strict";e.exports=require("zlib")},78335:()=>{},79428:e=>{"use strict";e.exports=require("buffer")},79551:e=>{"use strict";e.exports=require("url")},81630:e=>{"use strict";e.exports=require("http")},93052:(e,r,s)=>{"use strict";s.r(r),s.d(r,{patchFetch:()=>h,routeModule:()=>x,serverHooks:()=>g,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>_});var t={};s.r(t),s.d(t,{DELETE:()=>f,GET:()=>p,POST:()=>d,PUT:()=>m});var n=s(96559),a=s(48088),o=s(37719),i=s(32190),c=s(35426),l=s(26690);let u=new(s(96330)).PrismaClient;async function p(e){try{let r=await (0,c.getServerSession)(l.N);if(!r)return i.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:s}=new URL(e.url),t=s.get("start"),n=s.get("end"),a=await u.calendar.findMany({where:{userId:r.user.id}}),o=(await u.event.findMany({where:{calendarId:{in:a.map(e=>e.id)},...t&&n?{start:{gte:new Date(t)},end:{lte:new Date(n)}}:{}},include:{calendar:!0},orderBy:{start:"asc"}})).map(e=>({...e,calendarColor:e.calendar.color,calendarName:e.calendar.name,calendar:void 0}));return i.NextResponse.json(o)}catch(e){return console.error("Error fetching events:",e),i.NextResponse.json({error:"Erreur lors du chargement des \xe9v\xe9nements"},{status:500})}}async function d(e){try{let r=await (0,c.getServerSession)(l.N);if(!r?.user)return i.NextResponse.json({error:"Non autoris\xe9"},{status:401});let s=await e.json(),{title:t,description:n,start:a,end:o,location:p,calendarId:d}=s,m=await u.event.create({data:{title:t,description:n,start:new Date(a),end:new Date(o),isAllDay:s.allDay||!1,location:p||null,calendarId:d,userId:r.user.id}});return i.NextResponse.json(m)}catch(e){return console.error("Error creating event:",e),i.NextResponse.json({error:"Erreur lors de la cr\xe9ation de l'\xe9v\xe9nement"},{status:500})}}async function m(e){try{if(!await (0,c.getServerSession)(l.N))return i.NextResponse.json({error:"Unauthorized"},{status:401});let{id:r,...s}=await e.json(),t=await u.event.update({where:{id:r},data:s});return i.NextResponse.json(t)}catch(e){return console.error("Error updating event:",e),i.NextResponse.json({error:"Error updating event"},{status:500})}}async function f(e){try{if(!await (0,c.getServerSession)(l.N))return i.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:r}=new URL(e.url),s=r.get("id");if(!s)return i.NextResponse.json({error:"Event ID is required"},{status:400});return await u.event.delete({where:{id:s}}),i.NextResponse.json({success:!0})}catch(e){return console.error("Error deleting event:",e),i.NextResponse.json({error:"Error deleting event"},{status:500})}}let x=new n.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/calendar/route",pathname:"/api/calendar",filename:"route",bundlePath:"app/api/calendar/route"},resolvedPagePath:"/Users/alma/Documents/NeahNew/app/api/calendar/route.ts",nextConfigOutput:"",userland:t}),{workAsyncStorage:w,workUnitAsyncStorage:_,serverHooks:g}=x;function h(){return(0,o.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:_})}},94735:e=>{"use strict";e.exports=require("events")},96330:e=>{"use strict";e.exports=require("@prisma/client")},96487:()=>{}};var r=require("../../../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[4243,5419,580],()=>s(93052));module.exports=t})();