![]() 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/chunks/ |
"use strict";exports.id=3315,exports.ids=[3315],exports.modules={8667:(e,r)=>{Object.defineProperty(r,"A",{enumerable:!0,get:function(){return i}});var i=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}({})},33480:(e,r,i)=>{e.exports=i(75600)},41822:(e,r,i)=>{i.d(r,{N:()=>n});var a=i(16382),o=i.n(a),t=i(74729),s=i(76760);let n={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 r=await s.z.user.findUnique({where:{email:e.email},select:{id:!0,email:!0,password:!0,role:!0,name:!0,isVerified:!0,verificationStatus:!0}});if(!r||!await (0,t.compare)(e.password,r.password))return null;let{password:i,...a}=r;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:r,trigger:i}){try{if(console.log("JWT Callback - trigger:",i),console.log("JWT Callback - user:",r?{id:r.id,email:r.email,role:r.role}:null),r)e.id=r.id,e.role=r.role,e.email=r.email,e.name=r.name||r.email,e.profilePicture=r.profilePicture||void 0,e.username=r.username||void 0,e.isVerified=r.isVerified||!1,e.verificationStatus=r.verificationStatus||"PENDING",e.isImpersonating=r.isImpersonating||!1,e.originalUser=r.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 r=await s.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(r){let i=r.impersonatedUser;e.id=i.id,e.email=i.email,e.name=i.name||i.email,e.role=i.role,e.profilePicture=i.profilePicture||void 0,e.username=i.username||void 0,e.isImpersonating=!0,e.originalUser={id:r.originalUser.id,email:r.originalUser.email,name:r.originalUser.name||r.originalUser.email,role:r.originalUser.role,profilePicture:r.originalUser.profilePicture||void 0,username:r.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(r){console.error("JWT Callback - Database error:",r),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(r){return console.error("JWT Callback - Error:",r),e}},async session({session:e,token:r}){try{return console.log("Session Callback - token:",{id:r.id,email:r.email,role:r.role,isImpersonating:r.isImpersonating}),console.log("Session Callback - session before:",e),r&&e.user&&(e.user.id=r.id,e.user.role=r.role,e.user.email=r.email,e.user.name=r.name,e.user.profilePicture=r.profilePicture,e.user.username=r.username,e.user.isVerified=r.isVerified,e.user.verificationStatus=r.verificationStatus,e.user.isImpersonating=r.isImpersonating,e.user.originalUser=r.originalUser),console.log("Session Callback - session after:",e),console.log("Session Callback - Final user ID:",e.user?.id),e}catch(r){return console.error("Session Callback - Error:",r),e}},redirect:async({url:e,baseUrl:r})=>e===r||e===`${r}/`||e.endsWith("/auth/login")?r:e.startsWith("/")?`${r}${e}`:e.startsWith(r)?e:r},secret:process.env.NEXTAUTH_SECRET||"3560f921b7bbf968e64fbc2835960840d184fcb95977e960a2124de6bbbed2d3",debug:!1}},76760:(e,r,i)=>{i.d(r,{z:()=>o});var a=i(96330);let o=globalThis.prisma??new a.PrismaClient({log:["error"]})},86435:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,i){return i in r?r[i]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,i)):"function"==typeof r&&"default"===i?r:void 0}}})},88251:(e,r,i)=>{i.a(e,async(e,a)=>{try{i.d(r,{DB:()=>g,ZA:()=>c});var o=i(76760),t=i(83636),s=i(75035),n=i(75263),l=e([t,s,n]);[t,s,n]=l.then?(await l)():l;class u{async initialize(){if(this.isRunning)throw Error("Scraper is already running");console.log("\uD83D\uDE80 Initializing Barreau scraper..."),this.browser=await t.launch({headless:!0,args:["--no-sandbox","--disable-setuid-sandbox","--disable-dev-shm-usage","--disable-accelerated-2d-canvas","--no-first-run","--no-zygote","--disable-gpu"]}),this.page=await this.browser.newPage(),await this.page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"),await this.page.setViewport({width:1920,height:1080}),console.log("β
Scraper initialized successfully")}async scrapeEntireDirectory(){if(!this.browser||!this.page)throw Error("Scraper not initialized");this.isRunning=!0,this.progress={totalPages:0,currentPage:0,totalLawyers:0,importedLawyers:0,errors:0,startTime:Date.now()};try{console.log("\uD83D\uDD0D Starting Barreau directory scraping..."),await this.page.goto("https://www.barreau.qc.ca/fr/trouver-avocat",{waitUntil:"networkidle2",timeout:3e4});let e=await this.getTotalPages();this.progress.totalPages=e,console.log(`π Found ${e} pages to scrape`);for(let r=1;r<=e;r++){this.progress.currentPage=r,console.log(`π Scraping page ${r}/${e}`);try{await this.scrapePage(r),await this.delay(2e3)}catch(e){console.error(`β Error scraping page ${r}:`,e),this.progress.errors++}}console.log("\uD83C\uDF89 Directory scraping completed!"),this.printProgressReport()}catch(e){throw console.error("β Fatal error during scraping:",e),e}finally{this.isRunning=!1}}async getTotalPages(){if(!this.page)throw Error("Page not initialized");try{let e=await this.page.evaluate(()=>{let e=document.querySelector(".search-results__count, .results-count, .pagination-info");if(e){let r=e.textContent?.match(/(\d+)[^\d]*rΓ©sultat/);if(r)return parseInt(r[1],10)}let r=document.querySelectorAll("table tbody tr");return r.length>0?r.length:0});return e?Math.ceil(e/20):1}catch(e){return console.warn("β οΈ Could not determine total pages, defaulting to 1"),1}}async scrapePage(e){if(!this.page)throw Error("Page not initialized");try{let r=`https://www.barreau.qc.ca/fr/trouver-avocat?page=${e}`;await this.page.goto(r,{waitUntil:"networkidle2",timeout:3e4}),await this.page.waitForSelector("table tbody tr",{timeout:1e4});let i=await this.page.evaluate(()=>Array.from(document.querySelectorAll("table tbody tr")).map(e=>{let r=e.querySelector("td a");return r?r.href:null}).filter(Boolean));for(let r of(console.log(`π Found ${i.length} lawyers on page ${e}`),i))try{await this.scrapeLawyerProfile(r),this.progress.importedLawyers++,await this.delay(1e3)}catch(e){console.error(`β Error scraping lawyer profile ${r}:`,e),this.progress.errors++}}catch(r){throw console.error(`β Error scraping page ${e}:`,r),r}}async scrapeLawyerProfile(e){if(!this.page)throw Error("Page not initialized");try{await this.page.goto(e,{waitUntil:"networkidle2",timeout:3e4}),await this.page.waitForSelector(".profile-card, .profile, .result-profile, .container",{timeout:1e4});let r=await this.page.evaluate(()=>{let e=e=>{let r=document.querySelector(e);return r&&r.textContent?.trim()||""},r=e=>Array.from(document.querySelectorAll(e)).map(e=>e.textContent?.trim()).filter(Boolean),i=e("h1, .profile__name, .result-profile__name, .profile-card h1"),a=e('td:contains("Soci\xe9t\xe9 / employeur"), .profile__employer, .result-profile__employer'),o=e('td:contains("Adresse"), .profile__address, .result-profile__address'),t=e('td:contains("T\xe9l\xe9phone"), .profile__phone, .result-profile__phone'),s=e('td:contains("T\xe9l\xe9copieur"), .profile__fax, .result-profile__fax'),n=e('td:contains("Courriel"), a[href^="mailto:"], .profile__email, .result-profile__email'),l=e('td:contains("Num\xe9ro de membre"), .profile__bar-number, .result-profile__bar-number'),c=r('td:contains("Domaines de droit"), .profile__domains, .result-profile__domains li'),u=r('td:contains("Langues parl\xe9es"), .profile__languages, .result-profile__languages li'),g=e('td:contains("Ann\xe9e de premi\xe8re inscription"), .profile__year, .result-profile__year'),p=Array.from(document.querySelectorAll("a, button")).find(e=>e.textContent?.toLowerCase().includes("informations suppl\xe9mentaires"));p&&p.click();let d=e('td:contains("Barreau de section"), .profile__section, .result-profile__section'),m=r('td:contains("Types de mandats accept\xe9s"), .profile__mandates, .result-profile__mandates li');return{name:i,employer:a,address:o,phone:t,fax:s,email:n,barNumber:l,domains:c,languages:u,year:g,section:d,mandates:m}});await this.page.waitForTimeout(500),r.name&&r.barNumber?(await this.processLawyerData({name:r.name,barNumber:r.barNumber,email:r.email,phone:r.phone,address:r.address,specializations:r.domains,regions:[r.section].filter(Boolean),acceptsLegalAid:r.mandates.some(e=>e.toLowerCase().includes("aide juridique")),status:"ACTIVE",languages:r.languages,bio:"",website:"",education:"",yearsOfExperience:r.year?new Date().getFullYear()-parseInt(r.year):void 0}),console.log(`β
Imported: ${r.name} (${r.barNumber})`)):console.warn(`β οΈ Skipping lawyer with incomplete data: ${e}`)}catch(r){throw console.error(`β Error scraping lawyer profile ${e}:`,r),r}}async processLawyerData(e){try{let r=await o.z.user.findFirst({where:{OR:[{barNumber:e.barNumber},{email:e.email}]}});r?(await o.z.user.update({where:{id:r.id},data:{name:e.name,email:e.email||r.email,phone:e.phone,address:e.address,websiteUrl:e.website,bio:e.bio,specializations:JSON.stringify(e.specializations),regions:JSON.stringify(e.regions),language:e.languages?e.languages.join(", "):"en",education:e.education,acceptsLegalAid:e.acceptsLegalAid,barreauStatus:e.status,verificationStatus:"VERIFIED_BARREAU",barreauVerifiedAt:new Date,isVerified:!0,isProfilePublic:!0}}),console.log(`π Updated existing lawyer: ${e.name}`)):(await o.z.user.create({data:{name:e.name,email:e.email||`barreau-${e.barNumber}@placeholder.com`,role:"LAWYER",barNumber:e.barNumber,phone:e.phone,address:e.address,websiteUrl:e.website,bio:e.bio,specializations:JSON.stringify(e.specializations),regions:JSON.stringify(e.regions),language:e.languages?e.languages.join(", "):"en",education:e.education,acceptsLegalAid:e.acceptsLegalAid,barreauStatus:e.status,verificationStatus:"VERIFIED_BARREAU",barreauVerifiedAt:new Date,isVerified:!0,isProfilePublic:!0,password:await this.generateTemporaryPassword()}}),console.log(`π Created new lawyer: ${e.name}`))}catch(r){throw console.error(`β Error processing lawyer data for ${e.name}:`,r),r}}async generateTemporaryPassword(){let e=i(74729),r=`Barreau${Date.now()}`;return await e.hash(r,12)}getProgress(){return{...this.progress}}printProgressReport(){let e=Date.now()-this.progress.startTime,r=Math.floor(e/6e4),i=Math.floor(e%6e4/1e3);console.log("\n\uD83D\uDCCA SCRAPING PROGRESS REPORT"),console.log("============================"),console.log(`β±οΈ Duration: ${r}m ${i}s`),console.log(`π Pages scraped: ${this.progress.currentPage}/${this.progress.totalPages}`),console.log(`π₯ Lawyers imported: ${this.progress.importedLawyers}`),console.log(`β Errors: ${this.progress.errors}`),console.log(`π Success rate: ${(this.progress.importedLawyers/(this.progress.importedLawyers+this.progress.errors)*100).toFixed(1)}%`),console.log("============================\n")}async stop(){this.isRunning=!1,this.browser&&(await this.browser.close(),this.browser=null,this.page=null),console.log("\uD83D\uDED1 Scraper stopped")}delay(e){return new Promise(r=>setTimeout(r,e))}constructor(){this.browser=null,this.page=null,this.isRunning=!1,this.progress={totalPages:0,currentPage:0,totalLawyers:0,importedLawyers:0,errors:0,startTime:Date.now()}}}let g=new u;async function c(e,r){let i=`https://www.barreau.qc.ca/fr/trouver-un-avocat/?nom=${encodeURIComponent(e)}&ville=${encodeURIComponent(r)}`,a=await (0,s.default)(i,{headers:{"User-Agent":"Mozilla/5.0 (compatible; avocat.quebec bot)"}}),o=await a.text(),t=n.load(o);return t(".resultats .nom").filter((r,i)=>t(i).text().toLowerCase().includes(e.toLowerCase())).length>0}a()}catch(e){a(e)}})}};