NeahNew/.next/server/app/api/groups/[groupId]/route.js
2026-01-02 14:32:36 +01:00

1 line
8.6 KiB
JavaScript

(()=>{var e={};e.id=7435,e.ids=[7435],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,o)=>{"use strict";o.d(r,{N:()=>i});var s=o(1926),t=o(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"}),o=await r.json();if(!r.ok){if("invalid_grant"===o.error||o.error_description?.includes("Session not active")||o.error_description?.includes("Token is not active"))return console.log("Keycloak session invalidated (likely logged out from iframe), marking token for removal"),{...e,error:"SessionNotActive"};throw o}return{...e,accessToken:o.access_token,refreshToken:o.refresh_token??e.refreshToken,idToken:e.idToken,accessTokenExpires:Date.now()+1e3*o.expires_in}}catch(r){if(console.error("Error refreshing access token:",r),r?.error==="invalid_grant"||r?.error_description?.includes("Session not active")||r?.error_description?.includes("Token is not active"))return{...e,error:"SessionNotActive"};return{...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 o=r.map(e=>e.replace(/^ROLE_/,"").toLowerCase());return console.log("Profile callback cleaned roles:",o),{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:o}}})],session:{strategy:"jwt",maxAge:2592e3},callbacks:{async jwt({token:e,account:r,profile:o}){if(r&&o){let s=(o.realm_access?.roles||[]).map(e=>e.replace(/^ROLE_/,"").toLowerCase());e.accessToken=r.access_token??"",e.refreshToken=r.refresh_token??"",e.idToken=r.id_token??"",e.accessTokenExpires=r.expires_at??0,e.sub=o.sub,e.role=s,e.username=o.preferred_username??"",e.first_name=o.given_name??"",e.last_name=o.family_name??""}else if(e.accessToken)try{let r=(0,t.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)}let s=e.accessTokenExpires;if(s&&Date.now()<s)return e;if(!e.refreshToken)return console.log("No refresh token available, cannot refresh"),{...e,accessToken:void 0,refreshToken:void 0,idToken:void 0,error:"NoRefreshToken"};let n=await a(e);return"SessionNotActive"===n.error?(console.log("Keycloak session invalidated, clearing token to force re-authentication"),{...n,accessToken:void 0,refreshToken:void 0,idToken:void 0}):"RefreshAccessTokenError"!==n.error||n.accessToken?n:(console.log("Refresh token invalid, clearing session to force re-authentication"),{...n,accessToken:void 0,refreshToken:void 0,idToken:void 0})},async session({session:e,token:r}){if("SessionNotActive"===r.error||"NoRefreshToken"===r.error||!r.accessToken||!r.refreshToken)return console.log("Session invalidated or tokens missing, user will be signed out",{error:r.error,hasAccessToken:!!r.accessToken,hasRefreshToken:!!r.refreshToken}),null;if(r.error)throw Error(r.error);let o=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:o,nextcloudInitialized:!1},e.accessToken=r.accessToken,e.idToken=r.idToken,e.refreshToken=r.refreshToken,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")},56794:(e,r,o)=>{"use strict";o.r(r),o.d(r,{patchFetch:()=>E,routeModule:()=>k,serverHooks:()=>g,workAsyncStorage:()=>h,workUnitAsyncStorage:()=>_});var s={};o.r(s),o.d(s,{DELETE:()=>m,GET:()=>p,PATCH:()=>f,PUT:()=>d});var t=o(96559),n=o(48088),a=o(37719),i=o(35426),c=o(26690),u=o(32190);async function l(){let e=await fetch(`${process.env.KEYCLOAK_BASE_URL}/realms/${process.env.KEYCLOAK_REALM}/protocol/openid-connect/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"client_credentials",client_id:process.env.KEYCLOAK_CLIENT_ID,client_secret:process.env.KEYCLOAK_CLIENT_SECRET})}),r=await e.json();if(!e.ok)throw Error(r.error_description||"Failed to get admin token");return r.access_token}async function p(e,r){let o=await r.params;try{if(!await (0,i.getServerSession)(c.N))return u.NextResponse.json({error:"Non autoris\xe9"},{status:401});let e=await l(),r=await fetch(`${process.env.KEYCLOAK_BASE_URL}/admin/realms/${process.env.KEYCLOAK_REALM}/groups/${o.groupId}`,{headers:{Authorization:`Bearer ${e}`}});if(!r.ok)throw Error("Failed to fetch group");let s=await r.json();return u.NextResponse.json(s)}catch(e){return console.error("Get Group Error:",e),u.NextResponse.json({error:"Erreur lors de la r\xe9cup\xe9ration du groupe"},{status:500})}}async function d(e,r){let o=await r.params;try{if(!await (0,i.getServerSession)(c.N))return u.NextResponse.json({error:"Non autoris\xe9"},{status:401});let r=await l(),s=await e.json();if(!(await fetch(`${process.env.KEYCLOAK_BASE_URL}/admin/realms/${process.env.KEYCLOAK_REALM}/groups/${o.groupId}`,{method:"PUT",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify(s)})).ok)throw Error("Failed to update group");return u.NextResponse.json({success:!0})}catch(e){return console.error("Update Group Error:",e),u.NextResponse.json({error:"Erreur lors de la mise \xe0 jour du groupe"},{status:500})}}async function f(e,r){let o=await r.params;try{if(!await (0,i.getServerSession)(c.N))return u.NextResponse.json({error:"Non autoris\xe9"},{status:401});let r=await l(),s=await e.json();if(!(await fetch(`${process.env.KEYCLOAK_BASE_URL}/admin/realms/${process.env.KEYCLOAK_REALM}/groups/${o.groupId}`,{method:"PUT",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify(s)})).ok)throw Error("Failed to update group");return u.NextResponse.json({success:!0})}catch(e){return console.error("Update Group Error:",e),u.NextResponse.json({error:"Erreur lors de la mise \xe0 jour du groupe"},{status:500})}}async function m(e,r){let o=await r.params;try{if(!await (0,i.getServerSession)(c.N))return u.NextResponse.json({error:"Non autoris\xe9"},{status:401});let e=await l();if(!(await fetch(`${process.env.KEYCLOAK_BASE_URL}/admin/realms/${process.env.KEYCLOAK_REALM}/groups/${o.groupId}`,{method:"DELETE",headers:{Authorization:`Bearer ${e}`}})).ok)throw Error("Failed to delete group");return u.NextResponse.json({success:!0})}catch(e){return console.error("Delete Group Error:",e),u.NextResponse.json({error:"Erreur lors de la suppression du groupe"},{status:500})}}let k=new t.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/groups/[groupId]/route",pathname:"/api/groups/[groupId]",filename:"route",bundlePath:"app/api/groups/[groupId]/route"},resolvedPagePath:"/Users/alma/Documents/NeahNew/app/api/groups/[groupId]/route.ts",nextConfigOutput:"",userland:s}),{workAsyncStorage:h,workUnitAsyncStorage:_,serverHooks:g}=k;function E(){return(0,a.patchFetch)({workAsyncStorage:h,workUnitAsyncStorage:_})}},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")},94735:e=>{"use strict";e.exports=require("events")},96487:()=>{}};var r=require("../../../../webpack-runtime.js");r.C(e);var o=e=>r(r.s=e),s=r.X(0,[4243,5419,580],()=>o(56794));module.exports=s})();