![]() 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/user/ |
"use strict";(()=>{var e={};e.id=9568,e.ids=[9568],e.modules={8667:(e,i)=>{Object.defineProperty(i,"A",{enumerable:!0,get:function(){return r}});var r=function(e){return e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE",e}({})},16382:e=>{e.exports=require("next-auth/providers/credentials")},29021:e=>{e.exports=require("fs")},33480:(e,i,r)=>{e.exports=r(75600)},33873:e=>{e.exports=require("path")},41822:(e,i,r)=>{r.d(i,{N:()=>l});var a=r(16382),o=r.n(a),s=r(74729),n=r(76760);let l={providers:[o()({name:"Credentials",credentials:{email:{label:"Email",type:"email"},password:{label:"Password",type:"password"}},async authorize(e){if(!e?.email||!e?.password)return null;try{let i=await n.z.user.findUnique({where:{email:e.email},select:{id:!0,email:!0,password:!0,role:!0,name:!0,isVerified:!0,verificationStatus:!0}});if(!i||!await (0,s.compare)(e.password,i.password))return null;let{password:r,...a}=i;return{...a,name:a.name||a.email}}catch(e){return console.error("Auth error:",e),null}}})],session:{strategy:"jwt",maxAge:2592e3},cookies:{sessionToken:{name:"__Secure-next-auth.session-token",options:{httpOnly:!0,sameSite:"lax",path:"/",secure:!0,domain:process.env.COOKIE_DOMAIN}}},pages:{signIn:"/auth/login",signOut:"/auth/login",error:"/auth/error"},callbacks:{async jwt({token:e,user:i,trigger:r}){try{if(console.log("JWT Callback - trigger:",r),console.log("JWT Callback - user:",i?{id:i.id,email:i.email,role:i.role}:null),i)e.id=i.id,e.role=i.role,e.email=i.email,e.name=i.name||i.email,e.profilePicture=i.profilePicture||void 0,e.username=i.username||void 0,e.isVerified=i.isVerified||!1,e.verificationStatus=i.verificationStatus||"PENDING",e.isImpersonating=i.isImpersonating||!1,e.originalUser=i.originalUser||void 0,console.log("JWT Callback - Updated token from user:",{id:e.id,role:e.role,isImpersonating:e.isImpersonating});else if(e.id)try{console.log("JWT Callback - Checking for impersonation sessions...");let i=await n.z.impersonationSession.findFirst({where:{originalUserId:e.id,isActive:!0,expiresAt:{gt:new Date}},include:{impersonatedUser:{select:{id:!0,email:!0,name:!0,role:!0,profilePicture:!0,username:!0}},originalUser:{select:{id:!0,email:!0,name:!0,role:!0,profilePicture:!0,username:!0}}}});if(i){let r=i.impersonatedUser;e.id=r.id,e.email=r.email,e.name=r.name||r.email,e.role=r.role,e.profilePicture=r.profilePicture||void 0,e.username=r.username||void 0,e.isImpersonating=!0,e.originalUser={id:i.originalUser.id,email:i.originalUser.email,name:i.originalUser.name||i.originalUser.email,role:i.originalUser.role,profilePicture:i.originalUser.profilePicture||void 0,username:i.originalUser.username||void 0},console.log("JWT Callback - Applied impersonation:",{originalId:e.originalUser.id,impersonatedId:e.id,originalRole:e.originalUser.role,impersonatedRole:e.role})}else e.isImpersonating&&(e.originalUser&&(console.log("JWT Callback - Restoring original user from token"),e.id=e.originalUser.id,e.email=e.originalUser.email,e.name=e.originalUser.name||e.originalUser.email,e.role=e.originalUser.role,e.profilePicture=e.originalUser.profilePicture||void 0,e.username=e.originalUser.username||void 0),e.isImpersonating=!1,e.originalUser=void 0,console.log("JWT Callback - Cleared impersonation state"))}catch(i){console.error("JWT Callback - Database error:",i),e.isImpersonating&&e.originalUser&&(console.log("JWT Callback - Error occurred, restoring original user"),e.id=e.originalUser.id,e.email=e.originalUser.email,e.name=e.originalUser.name||e.originalUser.email,e.role=e.originalUser.role,e.profilePicture=e.originalUser.profilePicture||void 0,e.username=e.originalUser.username||void 0,e.isImpersonating=!1,e.originalUser=void 0)}return console.log("JWT Callback - Final token:",{id:e.id,email:e.email,role:e.role,isImpersonating:e.isImpersonating}),e}catch(i){return console.error("JWT Callback - Error:",i),e}},async session({session:e,token:i}){try{return console.log("Session Callback - token:",{id:i.id,email:i.email,role:i.role,isImpersonating:i.isImpersonating}),console.log("Session Callback - session before:",e),i&&e.user&&(e.user.id=i.id,e.user.role=i.role,e.user.email=i.email,e.user.name=i.name,e.user.profilePicture=i.profilePicture,e.user.username=i.username,e.user.isVerified=i.isVerified,e.user.verificationStatus=i.verificationStatus,e.user.isImpersonating=i.isImpersonating,e.user.originalUser=i.originalUser),console.log("Session Callback - session after:",e),console.log("Session Callback - Final user ID:",e.user?.id),e}catch(i){return console.error("Session Callback - Error:",i),e}},redirect:async({url:e,baseUrl:i})=>e===i||e===`${i}/`||e.endsWith("/auth/login")?i:e.startsWith("/")?`${i}${e}`:e.startsWith(i)?e:i},secret:process.env.NEXTAUTH_SECRET||"3560f921b7bbf968e64fbc2835960840d184fcb95977e960a2124de6bbbed2d3",debug:!1}},62007:(e,i,r)=>{r.a(e,async(e,a)=>{try{r.r(i),r.d(i,{config:()=>P,default:()=>p});var o=r(65542),s=r(76760),n=r(41822),l=r(67313),t=r(33873),u=r.n(t),c=r(29021),d=r.n(c),m=e([l]);l=(m.then?(await m)():m)[0];let P={api:{bodyParser:!1}};async function p(e,i){let r=await (0,o.getServerSession)(e,i,n.N);if(!r)return i.status(401).json({message:"Unauthorized"});switch(e.method){case"GET":return g(e,i,r);case"PUT":return f(e,i,r);case"POST":return b(e,i,r);default:return i.status(405).json({message:"Method not allowed"})}}async function g(e,i,r){try{console.log("Profile API - Session debug:"),console.log(" Session user ID:",r.user.id),console.log(" Session user email:",r.user.email),console.log(" Session user name:",r.user.name),console.log(" Session user role:",r.user.role),console.log(" Session isImpersonating:",r.user.isImpersonating),console.log(" Session originalUser:",r.user.originalUser);let{userId:a}=e.query,o=a||r.user.id;console.log(" Target user ID:",o),console.log(" Query userId:",a);let n=await s.z.user.findUnique({where:{id:o},include:{lawFirm:{select:{id:!0,name:!0,address:!0,city:!0,province:!0,postalCode:!0,phone:!0,email:!0,website:!0,barRegistration:!0,foundedYear:!0,specializations:!0}}}});if(!n)return console.log(" User not found for ID:",o),i.status(404).json({message:"User not found"});if(console.log(" Database user found:"),console.log(" DB user ID:",n.id),console.log(" DB user email:",n.email),console.log(" DB user name:",n.name),console.log(" DB user role:",n.role),n.id!==r.user.id&&!n.isProfilePublic&&"ADMIN"!==r.user.role)return i.status(403).json({message:"Profile is private"});let l={id:n.id,email:n.email,name:n.name,role:n.role,username:n.username,profilePicture:n.profilePicture,bio:n.bio,title:n.title,specialization:n.specialization,yearsOfExperience:n.yearsOfExperience,education:n.education,certifications:n.certifications,officeLocation:n.officeLocation,linkedinUrl:n.linkedinUrl,websiteUrl:n.websiteUrl,availability:n.availability,timezone:n.timezone,pronouns:n.pronouns,isProfilePublic:n.isProfilePublic,lastActive:n.lastActive,language:n.language,createdAt:n.createdAt,updatedAt:n.updatedAt,hourlyRate:n.hourlyRate,proBono:n.proBono,averageRating:n.averageRating,totalCases:n.totalCases,wonCases:n.wonCases,lostCases:n.lostCases,isVerified:n.isVerified,xpPoints:n.xpPoints,level:n.level,boldnessRating:n.boldnessRating,transparencyRating:n.transparencyRating,currentStreak:n.currentStreak,totalBadges:n.totalBadges,lawFirm:n.lawFirm};"ADMIN"===r.user.role&&(l.barNumber=n.barNumber,l.workPhone=n.workPhone),(r.user.id===o||"ADMIN"===r.user.role)&&(l.phone=n.phone,l.address=n.address),i.status(200).json(l)}catch(e){console.error("Error fetching user profile:",e),i.status(500).json({message:"Internal server error"})}}async function f(e,i,r){try{let a=(0,l.default)({uploadDir:"./public/uploads/profiles",keepExtensions:!0,maxFileSize:5242880,filter:({mimetype:e})=>!!(e&&e.includes("image"))}),o="./public/uploads/profiles";d().existsSync(o)||d().mkdirSync(o,{recursive:!0});let[n,t]=await a.parse(e),c={};if(n.name?.[0]&&(c.name=n.name[0]),n.username?.[0]){let e=n.username[0].toLowerCase().trim();if(e&&!/^[a-zA-Z0-9_-]{3,30}$/.test(e))return i.status(400).json({message:"Invalid username format"});if(e){let a=await s.z.user.findUnique({where:{username:e},select:{id:!0}});if(a&&a.id!==r.user.id)return i.status(400).json({message:"Username is already taken"})}c.username=e||null}if(n.bio?.[0]&&(c.bio=n.bio[0]),n.title?.[0]&&(c.title=n.title[0]),n.specialization?.[0]&&(c.specialization=n.specialization[0]),n.barNumber?.[0]&&(c.barNumber=n.barNumber[0]),n.yearsOfExperience?.[0]&&(c.yearsOfExperience=parseInt(n.yearsOfExperience[0])),n.education?.[0]&&(c.education=n.education[0]),n.certifications?.[0]&&(c.certifications=n.certifications[0]),n.officeLocation?.[0]&&(c.officeLocation=n.officeLocation[0]),n.workPhone?.[0]&&(c.workPhone=n.workPhone[0]),n.linkedinUrl?.[0]&&(c.linkedinUrl=n.linkedinUrl[0]),n.websiteUrl?.[0]&&(c.websiteUrl=n.websiteUrl[0]),n.availability?.[0]&&(c.availability=n.availability[0]),n.timezone?.[0]&&(c.timezone=n.timezone[0]),n.pronouns?.[0]&&(c.pronouns=n.pronouns[0]),n.isProfilePublic?.[0]&&(c.isProfilePublic="true"===n.isProfilePublic[0]),n.phone?.[0]&&(c.phone=n.phone[0]),n.address?.[0]&&(c.address=n.address[0]),n.language?.[0]&&(c.language=n.language[0]),t.profilePicture?.[0]){let e=t.profilePicture[0],i=`${r.user.id}-${Date.now()}${u().extname(e.originalFilename||"")}`,a=u().join(o,i);d().renameSync(e.filepath,a),c.profilePicture=`/uploads/profiles/${i}`}c.lastActive=new Date;let m=await s.z.user.update({where:{id:r.user.id},data:c,select:{id:!0,email:!0,name:!0,role:!0,username:!0,profilePicture:!0,bio:!0,title:!0,specialization:!0,yearsOfExperience:!0,education:!0,certifications:!0,officeLocation:!0,linkedinUrl:!0,websiteUrl:!0,availability:!0,timezone:!0,pronouns:!0,isProfilePublic:!0,lastActive:!0,language:!0,updatedAt:!0}});i.status(200).json(m)}catch(e){console.error("Error updating user profile:",e),i.status(500).json({message:"Internal server error"})}}async function b(e,i,r){try{let a=(0,l.default)({uploadDir:"./public/uploads/profiles",keepExtensions:!0,maxFileSize:5242880,filter:({mimetype:e})=>!!(e&&e.includes("image"))}),o="./public/uploads/profiles";d().existsSync(o)||d().mkdirSync(o,{recursive:!0});let[n,t]=await a.parse(e);if(!t.profilePicture?.[0])return i.status(400).json({message:"No file uploaded"});let c=t.profilePicture[0],m=`${r.user.id}-${Date.now()}${u().extname(c.originalFilename||"")}`,p=u().join(o,m);d().renameSync(c.filepath,p);let g=`/uploads/profiles/${m}`;await s.z.user.update({where:{id:r.user.id},data:{profilePicture:g,lastActive:new Date}}),i.status(200).json({profilePicture:g})}catch(e){console.error("Error uploading profile picture:",e),i.status(500).json({message:"Internal server error"})}}a()}catch(e){a(e)}})},64280:(e,i,r)=>{r.a(e,async(e,a)=>{try{r.r(i),r.d(i,{config:()=>c,default:()=>u,routeModule:()=>d});var o=r(33480),s=r(8667),n=r(86435),l=r(62007),t=e([l]);l=(t.then?(await t)():t)[0];let u=(0,n.M)(l,"default"),c=(0,n.M)(l,"config"),d=new o.PagesAPIRouteModule({definition:{kind:s.A.PAGES_API,page:"/api/user/profile",pathname:"/api/user/profile",bundlePath:"",filename:""},userland:l});a()}catch(e){a(e)}})},65542:e=>{e.exports=require("next-auth")},67313:e=>{e.exports=import("formidable")},74729:e=>{e.exports=require("bcryptjs")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:(e,i,r)=>{r.d(i,{z:()=>o});var a=r(96330);let o=globalThis.prisma??new a.PrismaClient({log:["error"]})},86435:(e,i)=>{Object.defineProperty(i,"M",{enumerable:!0,get:function(){return function e(i,r){return r in i?i[r]:"then"in i&&"function"==typeof i.then?i.then(i=>e(i,r)):"function"==typeof i&&"default"===r?i:void 0}}})},96330:e=>{e.exports=require("@prisma/client")}};var i=require("../../../webpack-api-runtime.js");i.C(e);var r=i(i.s=64280);module.exports=r})();