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

1 line
8.8 KiB
JavaScript

(()=>{var e={};e.id=9841,e.ids=[9841],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 n.default}});var o=t(12269);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]}}))});var n=function(e,r){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=a(r);if(t&&t.has(e))return t.get(e);var s={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&({}).hasOwnProperty.call(e,n)){var i=o?Object.getOwnPropertyDescriptor(e,n):null;i&&(i.get||i.set)?Object.defineProperty(s,n,i):s[n]=e[n]}return s.default=e,t&&t.set(e,s),s}(t(35426));function a(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(a=function(e){return e?t:r})(e)}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]}}))})},21820:e=>{"use strict";e.exports=require("os")},26690:(e,r,t)=>{"use strict";t.d(r,{N:()=>i});var s=t(1926),o=t(10591);function n(e){let r=process.env[e];if(!r)throw Error(`Missing required environment variable: ${e}`);return r}async function a(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 i={providers:[(0,s.A)({clientId:n("KEYCLOAK_CLIENT_ID"),clientSecret:n("KEYCLOAK_CLIENT_SECRET"),issuer:n("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,o.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:a(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")},42268:(e,r,t)=>{"use strict";t.r(r),t.d(r,{patchFetch:()=>m,routeModule:()=>f,serverHooks:()=>h,workAsyncStorage:()=>d,workUnitAsyncStorage:()=>_});var s={};t.r(s),t.d(s,{GET:()=>p});var o=t(96559),n=t(48088),a=t(37719),i=t(32190),c=t(19854),l=t(26690),u=t(42873);async function p(e){try{let e=await (0,c.getServerSession)(l.N);if(!e?.user?.id)return i.NextResponse.json({error:"Unauthorized"},{status:401});let r=Buffer.from(JSON.stringify({userId:e.user.id,timestamp:Date.now()})).toString("base64"),t=(0,u.GW)(r);return i.NextResponse.json({authUrl:t,state:r})}catch(e){return console.error("Error initiating Microsoft OAuth flow:",e),i.NextResponse.json({error:"Failed to initiate Microsoft OAuth flow",details:e instanceof Error?e.message:"Unknown error"},{status:500})}}let f=new o.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/courrier/microsoft/route",pathname:"/api/courrier/microsoft",filename:"route",bundlePath:"app/api/courrier/microsoft/route"},resolvedPagePath:"/Users/alma/Documents/NeahNew/app/api/courrier/microsoft/route.ts",nextConfigOutput:"",userland:s}),{workAsyncStorage:d,workUnitAsyncStorage:_,serverHooks:h}=f;function m(){return(0,a.patchFetch)({workAsyncStorage:d,workUnitAsyncStorage:_})}},42873:(e,r,t)=>{"use strict";t.d(r,{GW:()=>p,J1:()=>d,oK:()=>f});var s=t(94612);let o=process.env.MICROSOFT_TENANT_ID||"common",n=`https://login.microsoftonline.com/${o}/oauth2/v2.0/authorize`,a=`https://login.microsoftonline.com/${o}/oauth2/v2.0/token`,i=process.env.MICROSOFT_CLIENT_ID,c=process.env.MICROSOFT_CLIENT_SECRET,l=process.env.MICROSOFT_REDIRECT_URI;console.log("Microsoft OAuth Configuration:",{tenantId:o,authorizeUrl:n,tokenUrl:a,clientIdFirstChars:i?i.substring(0,5)+"...":"undefined",redirectUri:l});let u="offline_access https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/SMTP.Send";function p(e){let r=new URLSearchParams({client_id:i,response_type:"code",redirect_uri:l,scope:u,state:e,response_mode:"query"});return`${n}?${r.toString()}`}async function f(e){let r=new URLSearchParams({client_id:i,client_secret:c,code:e,redirect_uri:l,grant_type:"authorization_code"});try{console.log(`Exchanging code for tokens. URL: ${a}`);let e=await s.A.post(a,r.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded"}});return console.log("Token exchange successful!"),{access_token:e.data.access_token,refresh_token:e.data.refresh_token,expires_in:e.data.expires_in}}catch(e){if(console.error("Error exchanging code for tokens:",e),e.response){console.error("Response data:",e.response.data),console.error("Response status:",e.response.status),console.error("Response headers:",e.response.headers);let r=e.response.data;if(r&&r.error_description)throw Error(`Token exchange failed: ${r.error_description}`)}throw Error("Failed to exchange authorization code for tokens")}}async function d(e){let r=new URLSearchParams({client_id:i,client_secret:c,refresh_token:e,grant_type:"refresh_token",scope:u});try{console.log(`Refreshing access token. URL: ${a}`);let e=await s.A.post(a,r.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded"}});return console.log("Token refresh successful!"),{access_token:e.data.access_token,refresh_token:e.data.refresh_token,expires_in:e.data.expires_in}}catch(e){if(console.error("Error refreshing token:",e),e.response){console.error("Response data:",e.response.data),console.error("Response status:",e.response.status),console.error("Response headers:",e.response.headers);let r=e.response.data;if(r&&r.error_description)throw Error(`Token refresh failed: ${r.error_description}`)}throw Error("Failed to refresh access token")}}},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")},83997:e=>{"use strict";e.exports=require("tty")},94735:e=>{"use strict";e.exports=require("events")},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,4612],()=>t(42268));module.exports=s})();