![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/private_html/.next/server/pages/api/admin/ |
"use strict";(()=>{var e={};e.id=2298,e.ids=[2298],e.modules={4722:e=>{e.exports=require("next-auth/react")},8732:e=>{e.exports=require("react/jsx-runtime")},16382:e=>{e.exports=require("next-auth/providers/credentials")},22326:e=>{e.exports=require("react-dom")},27910:e=>{e.exports=require("stream")},29021:e=>{e.exports=require("fs")},40361:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},54773:(e,r,s)=>{s.r(r),s.d(r,{config:()=>c,default:()=>m,routeModule:()=>g});var t={};s.r(t),s.d(t,{default:()=>p});var i=s(33480),o=s(8667),n=s(86435),a=s(65542),d=s(41822),u=s(76760),l=s(16062);async function p(e,r){if(console.log("\uD83D\uDD04 Impersonation API called:",{method:e.method,body:e.body}),"POST"!==e.method)return r.status(405).json({error:"Method not allowed"});try{let s=await (0,a.getServerSession)(e,r,d.N);if(!s?.user)return console.log("❌ Unauthorized impersonation attempt - no session"),r.status(401).json({error:"Unauthorized - No session"});if(console.log("\uD83D\uDD0D Debug - User session:",{userId:s.user.id,email:s.user.email,role:s.user.role,isImpersonating:s.user.isImpersonating,originalUser:s.user.originalUser,isEffectiveAdminResult:(0,l.p_)(s)}),!(0,l.p_)(s))return console.log("❌ Forbidden impersonation attempt - insufficient privileges:",{userId:s.user.id,email:s.user.email,role:s.user.role}),r.status(403).json({error:"Forbidden - Only Super Admins and Admins can impersonate users"});let{userId:t}=e.body;if(!t)return r.status(400).json({error:"User ID is required"});let i=await u.z.user.findUnique({where:{id:t},select:{id:!0,email:!0,name:!0,role:!0,profilePicture:!0,username:!0}});if(!i)return r.status(404).json({error:"Target user not found"});if("SUPERADMIN"===i.role&&!(0,l.p_)(s))return r.status(403).json({error:"Cannot impersonate another Super Admin"});await u.z.impersonationSession.updateMany({where:{originalUserId:s.user.id,isActive:!0,expiresAt:{lt:new Date}},data:{isActive:!1,endedAt:new Date}});let o=await u.z.impersonationSession.findFirst({where:{originalUserId:s.user.id,isActive:!0}});o&&(console.log("⚠️ Found existing active session, ending it first:",o.id),await u.z.impersonationSession.update({where:{id:o.id},data:{isActive:!1,endedAt:new Date}}));let n=new Date(Date.now()+36e5),p=await u.z.impersonationSession.create({data:{originalUserId:s.user.id,impersonatedUserId:i.id,reason:"Administrative impersonation",ipAddress:e.headers["x-forwarded-for"]||e.connection.remoteAddress||"unknown",userAgent:e.headers["user-agent"]||"unknown",expiresAt:n,isActive:!0}});console.log("✅ Impersonation event logged:",{sessionId:p.id,adminUserId:s.user.id,adminEmail:s.user.email,targetUserId:i.id,targetEmail:i.email,targetRole:i.role});let m="/user/dashboard",c=(i.role||"").toUpperCase();"LAWYER"===c?m="/lawyer/dashboard":"JUDGE"===c?m="/judge/dashboard":"JURIST"===c?m="/jurist/dashboard":"ADMIN"===c?m="/admin/dashboard":"CLIENT"===c&&(m="/user/dashboard"),console.log(`[IMPERSONATE] Target user role: ${c}, redirecting to: ${m}`);let g={success:!0,message:"Impersonation started successfully",targetUser:i,redirectUrl:m};console.log("✅ Impersonation success, sending response:",g),r.status(200).json(g)}catch(s){if(console.error("❌ Impersonation error:",{error:s instanceof Error?s.message:s,stack:s instanceof Error?s.stack:void 0}),s instanceof Error&&s.message.includes("Unique constraint failed")){console.log("\uD83D\uDD27 Unique constraint violation detected, attempting cleanup and retry...");try{let s=await (0,a.getServerSession)(e,r,d.N);return await u.z.impersonationSession.updateMany({where:{originalUserId:s?.user?.id,isActive:!0},data:{isActive:!1,endedAt:new Date}}),p(e,r)}catch(e){console.error("❌ Retry failed:",e),r.status(500).json({error:"Failed to start impersonation after cleanup attempt",details:void 0});return}}r.status(500).json({error:"Failed to start impersonation",details:void 0})}}let m=(0,n.M)(t,"default"),c=(0,n.M)(t,"config"),g=new i.PagesAPIRouteModule({definition:{kind:o.A.PAGES_API,page:"/api/admin/impersonate",pathname:"/api/admin/impersonate",bundlePath:"",filename:""},userland:t})},65542:e=>{e.exports=require("next-auth")},74075:e=>{e.exports=require("zlib")},74729:e=>{e.exports=require("bcryptjs")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},82015:e=>{e.exports=require("react")},96330:e=>{e.exports=require("@prisma/client")}};var r=require("../../../webpack-api-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[7332,6062],()=>s(54773));module.exports=t})();