"use strict";(()=>{var e={};e.id=3953,e.ids=[3953],e.modules={47795:e=>{e.exports=require("generate-password")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},21572:e=>{e.exports=require("nodemailer")},72583:e=>{e.exports=require("sanitize-html")},9973:e=>{e.exports=require("serverless-mysql")},79428:e=>{e.exports=require("buffer")},79646:e=>{e.exports=require("child_process")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},33873:e=>{e.exports=require("path")},68140:(e,r,s)=>{s.r(r),s.d(r,{config:()=>y,default:()=>E,routeModule:()=>h});var t={};s.r(t),s.d(t,{default:()=>v});var a=s(89947),i=s(2706),n=s(96762),l=s(68829),d=s(96052),o=s(67619),u=s(33873),c=s.n(u),m=s(79646),p=s(67580),_=s(48786),g=s(98e3),S=s(30802),f=s(83919);let A=s(29021);async function v(e,r){if("POST"!==e.method)return r.json({user:null,msg:"Registration Failed!"});let s=e.body,{inviteObject:t}=s,a=s.first_name,i=s.last_name,n=s.email,u=s.password,v=s.username;if(!n.match(/.*@.*\..*/))return r.json({user:null,msg:"Invalid Email"});if(!a.match(/^[a-zA-Z]+$/)||!i.match(/^[a-zA-Z]+$/))return r.json({user:null,msg:"Invalid Name"});if(u?.match(/ /))return r.json({user:null,msg:"Invalid Password"});if(v?.match(/ /))return r.json({user:null,msg:"Invalid Username"});try{let e=(0,f.A)({encryptionKey:process.env.DSQL_ENCRYPTION_PASSWORD||"",password:u}),s=await (0,_.A)(`SELECT * FROM users WHERE email='${n}'`);if(s&&s[0])return r.json({user:null,msg:"User Already Exists"});let o=await (0,g.A)({dbFullName:"datasquirel",tableName:"users",data:{first_name:a,last_name:i,email:n,password:e,username:v}});if(!o?.insertId)return r.json({user:null,msg:"Adding User to Database failed"});await (0,p.A)({userId:o.insertId});let E=(0,l.default)({data:JSON.stringify({id:o.insertId,email:n,dateCode:Date.now()})});(0,d.default)({to:n,subject:"Verify Email Address",text:"Please click the link to verify your email address",html:A.readFileSync("./email/send-email-verification-link.html","utf8").replace(/{{host}}/,process.env.DSQL_HOST||"").replace(/{{token}}/,E||"")}).then(e=>{}),"production".match(/production/),o.insertId,o.insertId;let y=process.env.DSQL_STATIC_SERVER_DIR;if(!y)throw console.log("Static File ENV not Found!"),Error("No Static Path");let h=`${process.env.DSQL_USER_DB_SCHEMA_PATH}/user-${o.insertId}`,b=c().join(y,`images/user-images/user-${o.insertId}`);A.mkdirSync(h,{recursive:!0}),A.mkdirSync(b,{recursive:!0}),A.writeFileSync(`${h}/main.json`,JSON.stringify([]),"utf8");let I=c().join(y,`images/user-images/user-${o.insertId}/user-${o.insertId}-profile.jpg`),D=c().join(y,`images/user-images/user-${o.insertId}/user-${o.insertId}-profile-thumbnail.jpg`),L=I.replace(y,process.env.DSQL_STATIC_HOST||""),R=D.replace(y,process.env.DSQL_STATIC_HOST||"");if(A.copyFileSync("./public/images/user-preset.png",I),A.copyFileSync("./public/images/user-preset-thumbnail.png",D),(0,m.execSync)(`chmod 644 ${I} ${D}`),await (0,S.A)({dbFullName:"datasquirel",tableName:"users",identifierColumnName:"id",identifierValue:o.insertId,data:{image:L,image_thumbnail:R}}),t){let e=await (0,g.A)({dbFullName:"datasquirel",tableName:"user_users",data:{user_id:t.invite,invited_user_id:o.insertId,database_access:t.database_access,user_priviledge:t.priviledge,user_type:"admin",first_name:a,last_name:i,email:n,username:v,image:L,image_thumbnail:R}});await (0,_.A)("UPDATE invitations SET invitation_status='Accepted' WHERE inviting_user_id=? AND invited_user_email=?",[t.invite,n]);let r=await (0,_.A)("SELECT db_tables_data FROM invitations WHERE inviting_user_id=? AND invited_user_email=?",[t.invite,n]);if(await (0,_.A)("DELETE FROM delegated_user_tables WHERE root_user_id=? AND delegated_user_id=?",[t.invite,e.insertId]),r&&r[0]){let s=r[0].db_tables_data.split("|");for(let r=0;r ${e.message}`),(0,o.default)({component:"/api/registerUser/main-catch-error",message:e.message,user:{first_name:a,last_name:i,email:n}}),r.json({user:null})}}let E=(0,n.M)(t,"default"),y=(0,n.M)(t,"config"),h=new a.PagesAPIRouteModule({definition:{kind:i.A.PAGES_API,page:"/api/registerUser",pathname:"/api/registerUser",bundlePath:"",filename:""},userland:t})},67580:(e,r,s)=>{s.d(r,{A:()=>u});var t=s(47795),a=s.n(t),i=s(48786),n=s(47546),l=s(98e3),d=s(68829),o=s(7971);async function u({userId:e,useLocal:r}){try{let s=process.env.DSQL_DB_HOST||"127.0.0.1",t=`dsql_user_${e}`,u=a().generate({length:16,numbers:!0,symbols:!0,uppercase:!0,exclude:"*#.'`\""}),c=(0,d.default)({data:u}),m=`CREATE USER IF NOT EXISTS '${t}'@'127.0.0.1' IDENTIFIED BY '${u}'`;r?await (0,o.A)(m):await (0,n.A)(m);let p="UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1', mariadb_pass = ? WHERE id = ?",_=[t,c,e];r?await (0,o.A)(p,_):await (0,i.A)(p,_),await (0,l.A)({tableName:"mariadb_users",data:{user_id:e,username:t,host:s,password:c,primary:"1",grants:'[{"database":"*","table":"*","privileges":["ALL"]}]'},dbContext:"Master",useLocal:r}),console.log(`User ${e} SQL credentials successfully added.`)}catch(e){console.log("Error in adding SQL user in 'addMariadbUser' function =>",e.message)}}},96052:(e,r,s)=>{s.r(r),s.d(r,{default:()=>l});var t=s(29021),a=s.n(t),i=s(21572);let n=s.n(i)().createTransport({host:process.env.DSQL_MAIL_HOST,port:465,secure:!0,auth:{user:process.env.DSQL_MAIL_EMAIL,pass:process.env.DSQL_MAIL_PASSWORD}});async function l({to:e,subject:r,text:s,html:t,alias:i,senderName:l}){let d;if(!process.env.DSQL_MAIL_HOST||!process.env.DSQL_MAIL_EMAIL||!process.env.DSQL_MAIL_PASSWORD)return null;let o=(i?.match(/support/i),process.env.DSQL_MAIL_EMAIL);if(!a().existsSync("./email/index.html"))return;let u=a().readFileSync("./email/index.html","utf8").replace(/{{email_body}}/,t||"").replace(/{{issue_date}}/,Date().substring(0,24));try{let t={};t.from=`"${l||"Datasquirel"}" <${o}>`,t.sender=o,i&&(t.replyTo=o),t.to=e,t.subject=r,t.text=s,t.html=u,d=await n.sendMail(t)}catch(e){console.log("ERROR in handleNodemailer Function =>",e.message)}return d}},67619:(e,r,s)=>{s.r(r),s.d(r,{default:()=>i});var t=s(29021),a=s.n(t);async function i({user:e,message:r,component:s,noMail:t,req:i}){let n=new Date,l=(()=>{if(!i)return null;try{let e=i.headers["x-forwarded-for"],r=i.headers["x-real-ip"],s=i.headers["cf-connecting-ip"],t=Array.isArray(e)?e[0]:e?.split(",")[0],a=s||t||r||i.socket.remoteAddress;if(!a)return null;return String(a)}catch(e){return null}})();try{let t=`🚀 SERVER ERROR =========================== Error Message: ${r} Component: ${s}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(t+=` User Id: ${e?.id} User Name: ${e?.first_name} ${e?.last_name} User Email: ${e?.email}`),i?.url&&(t+=` URL: ${i.url}`),i?.body&&(t+=` Request Body: ${JSON.stringify(i.body,null,4)}`),l&&(t+=` IP: ${l}`),t+=` Date: ${n.toDateString()} ========================================`,a().existsSync("./.tmp/error.log")||a().writeFileSync("./.tmp/error.log","","utf-8");let d=a().readFileSync("./.tmp/error.log","utf-8");a().writeFileSync("./.tmp/error.log",t),a().appendFileSync("./.tmp/error.log",` ${d}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},83919:(e,r,s)=>{s.d(r,{A:()=>a});var t=s(55511);function a({password:e,encryptionKey:r}){let s=r||process.env.DSQL_ENCRYPTION_PASSWORD;if(!s?.match(/.{8,}/))throw Error("Encryption key is invalid");let a=(0,t.createHmac)("sha512",s);return a.update(e),a.digest("base64")}},47546:(e,r,s)=>{s.d(r,{A:()=>t});function t(...e){let r=global.DSQL_DB_CONN;try{return new Promise((s,t)=>{r.query(...e).then(e=>{r.end(),s(JSON.parse(JSON.stringify(e)))}).catch(e=>{r.end(),s({error:e.message,sql:e.sql})})})}catch(e){return{success:!1,error:e.message}}}}};var r=require("../../webpack-api-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[1251],()=>s(68140));module.exports=t})();