NeahNew/.next/server/app/api/missions/route.js
2025-05-06 23:01:34 +02:00

1 line
9.8 KiB
JavaScript

(()=>{var e={};e.id=3659,e.ids=[3659],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")},12269:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0})},12412:e=>{"use strict";e.exports=require("assert")},19854:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={};Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o.default}});var n=t(12269);Object.keys(n).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(s,e))&&(e in r&&r[e]===n[e]||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}}))});var o=function(e,r){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=i(r);if(t&&t.has(e))return t.get(e);var s={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&({}).hasOwnProperty.call(e,o)){var a=n?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(s,o,a):s[o]=e[o]}return s.default=e,t&&t.set(e,s),s}(t(35426));function i(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(i=function(e){return e?t:r})(e)}Object.keys(o).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(s,e))&&(e in r&&r[e]===o[e]||Object.defineProperty(r,e,{enumerable:!0,get:function(){return o[e]}}))})},21820:e=>{"use strict";e.exports=require("os")},25037:(e,r,t)=>{"use strict";t.d(r,{_:()=>n});var s=t(70762);let n=s.z.object({NODE_ENV:s.z.enum(["development","test","production"]).default("development"),DATABASE_URL:s.z.string().url(),NEWSDB_URL:s.z.string().regex(/^postgresql:\/\//,"Must be a valid PostgreSQL URL"),NEWS_API_URL:s.z.string().url(),KEYCLOAK_CLIENT_ID:s.z.string(),KEYCLOAK_CLIENT_SECRET:s.z.string(),KEYCLOAK_REALM:s.z.string(),KEYCLOAK_ISSUER:s.z.string().url(),LEANTIME_TOKEN:s.z.string(),LEANTIME_API_URL:s.z.string().url(),ROCKET_CHAT_TOKEN:s.z.string(),ROCKET_CHAT_USER_ID:s.z.string()}).parse(process.env)},26690:(e,r,t)=>{"use strict";t.d(r,{N:()=>a});var s=t(1926),n=t(10591);function o(e){let r=process.env[e];if(!r)throw Error(`Missing required environment variable: ${e}`);return r}async function i(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"}),t=await r.json();if(!r.ok)throw t;return{...e,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,accessTokenExpires:Date.now()+1e3*t.expires_in}}catch(r){return console.error("Error refreshing access token:",r),{...e,error:"RefreshAccessTokenError"}}}let a={providers:[(0,s.A)({clientId:o("KEYCLOAK_CLIENT_ID"),clientSecret:o("KEYCLOAK_CLIENT_SECRET"),issuer:o("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 t=r.map(e=>e.replace(/^ROLE_/,"").toLowerCase());return console.log("Profile callback cleaned roles:",t),{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:t}}})],session:{strategy:"jwt",maxAge:2592e3},callbacks:{async jwt({token:e,account:r,profile:t}){if(r&&t){let s=(t.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=t.sub,e.role=s,e.username=t.preferred_username??"",e.first_name=t.given_name??"",e.last_name=t.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:i(e)},async session({session:e,token:r}){if(r.error)throw Error(r.error);let t=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:t,nextcloudInitialized:!1},e.accessToken=r.accessToken,e}},pages:{signIn:"/signin",error:"/signin"},debug:!1}},27910:e=>{"use strict";e.exports=require("stream")},28354:e=>{"use strict";e.exports=require("util")},29021:e=>{"use strict";e.exports=require("fs")},29294:e=>{"use strict";e.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:e=>{"use strict";e.exports=require("path")},38412:(e,r,t)=>{"use strict";t.r(r),t.d(r,{patchFetch:()=>h,routeModule:()=>_,serverHooks:()=>y,workAsyncStorage:()=>g,workUnitAsyncStorage:()=>E});var s={};t.r(s),t.d(s,{GET:()=>m,POST:()=>f});var n=t(96559),o=t(48088),i=t(37719),a=t(32190),c=t(19854),u=t(26690),l=t(79464),p=t(60297);async function d(e){let r=await (0,c.getServerSession)(u.N);return r?.user?.id?{authorized:!0,userId:r.user.id}:(console.error("Unauthorized access attempt:",{url:e.url,method:e.method,headers:Object.fromEntries(e.headers)}),{authorized:!1,userId:null})}async function m(e){try{let{authorized:r,userId:t}=await d(e);if(!r||!t)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:s}=new URL(e.url),n=Number(s.get("limit")||"10"),o=Number(s.get("offset")||"0"),i=s.get("search"),c={};i&&(c.OR=[{name:{contains:i,mode:"insensitive"}},{intention:{contains:i,mode:"insensitive"}}]);let u=await l.z.mission.findMany({where:c,skip:o,take:n,orderBy:{createdAt:"desc"},select:{id:!0,name:!0,logo:!0,oddScope:!0,niveau:!0,missionType:!0,projection:!0,participation:!0,services:!0,intention:!0,createdAt:!0,creator:{select:{id:!0,email:!0}},missionUsers:{select:{id:!0,role:!0,user:{select:{id:!0,email:!0}}}}}}),p=await l.z.mission.count({where:c}),m=u.map(e=>({...e,logo:e.logo?`/api/missions/image/${e.logo}`:null}));return a.NextResponse.json({missions:m,pagination:{total:p,offset:o,limit:n}})}catch(e){return console.error("Error listing missions:",e),a.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}async function f(e){try{let{authorized:r,userId:t}=await d(e);if(!r||!t)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{name:s,logo:n,oddScope:o,niveau:i,intention:c,missionType:u,donneurDOrdre:m,projection:f,services:_,participation:g,profils:E,guardians:y,volunteers:h}=await e.json();if(!s||!i||!c||!u||!m||!f)return a.NextResponse.json({error:"Missing required fields",required:{name:!0,niveau:!0,intention:!0,missionType:!0,donneurDOrdre:!0,projection:!0},received:{name:!!s,niveau:!!i,intention:!!c,missionType:!!u,donneurDOrdre:!!m,projection:!!f}},{status:400});let v=await l.z.$transaction(async e=>{let r=await e.mission.create({data:{name:s,logo:n,oddScope:o||[],niveau:i,intention:c,missionType:u,donneurDOrdre:m,projection:f,services:_||[],participation:g,profils:E||[],creatorId:t}});if(y){let t=["gardien-temps","gardien-parole","gardien-memoire"],s=Object.entries(y).filter(([e,r])=>t.includes(e)&&r).map(([e,t])=>({role:e,userId:t,missionId:r.id}));s.length>0&&await e.missionUser.createMany({data:s})}if(h&&h.length>0){let t=h.map(e=>({role:"volontaire",userId:e,missionId:r.id}));await e.missionUser.createMany({data:t})}return r});try{let e=new p.a,r=await e.setupIntegrationsForMission(v.id);if(!r.success)return a.NextResponse.json({error:"Failed to set up external services",details:r.error},{status:500});return a.NextResponse.json({success:!0,mission:{id:v.id,name:v.name,createdAt:v.createdAt},integrations:{status:"success",data:r.data}})}catch(e){return console.error("Integration error:",e),await l.z.mission.delete({where:{id:v.id}}),a.NextResponse.json({error:"Failed to set up external services",details:e instanceof Error?e.message:String(e)},{status:500})}}catch(e){return console.error("Error creating mission:",e),a.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}let _=new n.AppRouteRouteModule({definition:{kind:o.RouteKind.APP_ROUTE,page:"/api/missions/route",pathname:"/api/missions",filename:"route",bundlePath:"app/api/missions/route"},resolvedPagePath:"/Users/alma/Documents/NeahNew/app/api/missions/route.ts",nextConfigOutput:"",userland:s}),{workAsyncStorage:g,workUnitAsyncStorage:E,serverHooks:y}=_;function h(){return(0,i.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:E})}},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")},79464:(e,r,t)=>{"use strict";t.d(r,{z:()=>o});var s=t(96330),n=t(25037);let o=globalThis.prisma||new s.PrismaClient({datasources:{db:{url:n._.DATABASE_URL}},log:["query"]})},79551:e=>{"use strict";e.exports=require("url")},81630:e=>{"use strict";e.exports=require("http")},83997:e=>{"use strict";e.exports=require("tty")},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 t=e=>r(r.s=e),s=r.X(0,[4243,5419,580,8794,762,4612,297],()=>t(38412));module.exports=s})();