This commit is contained in:
Benjamin Toby
2024-12-05 08:03:33 +01:00
parent 9686a22c96
commit 3ffd2d6777
821 changed files with 3251 additions and 91996 deletions
@@ -1,412 +1,16 @@
"use strict";
(() => {
var exports = {};
exports.id = 9503;
exports.ids = [9503];
exports.modules = {
/***/ 2029:
/***/ ((module) => {
module.exports = require("datasquirel/functions/hashPassword");
/***/ }),
/***/ 6517:
/***/ ((module) => {
module.exports = require("lodash");
/***/ }),
/***/ 6109:
/***/ ((module) => {
module.exports = require("sanitize-html");
/***/ }),
/***/ 2261:
/***/ ((module) => {
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 2081:
/***/ ((module) => {
module.exports = require("child_process");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 1017:
/***/ ((module) => {
module.exports = require("path");
/***/ }),
/***/ 1459:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/
const fs = __webpack_require__(7147);
const path = __webpack_require__(1017);
const { execSync } = __webpack_require__(2081);
const serverError = __webpack_require__(2163);
const DB_HANDLER = __webpack_require__(2224);
const { default: grabUserSchemaData } = __webpack_require__(8164);
const { default: setUserSchemaData } = __webpack_require__(7638);
const addDbEntry = __webpack_require__(5338);
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* ==============================================================================
* Main Function
* ==============================================================================
* @param {object} params
* @param {number} params.userId - user id
* @param {string} params.database
*
* @returns {Promise<any>} new user auth object payload
*/ module.exports = async function addUsersTableToDb({ userId , database }) {
/**
* Initialize
*
* @description Initialize
*/ const dbFullName = `datasquirel_user_${userId}_${database}`;
/** @type {import("@/package-shared/types").DSQL_TableSchemaType} */ // @ts-ignore
const userPreset = __webpack_require__(9258);
try {
/**
* Fetch user
*
* @description Fetch user from db
*/ const userSchemaData = grabUserSchemaData({
userId
});
if (!userSchemaData) throw new Error("User schema data not found!");
let targetDatabase = userSchemaData.filter((db)=>db.dbSlug === database)[0];
let existingTableIndex;
// @ts-ignore
let existingTable = targetDatabase.tables.filter((table, index)=>{
if (table.tableName === "users") {
existingTableIndex = index;
return true;
}
});
if (existingTable && existingTable[0] && existingTableIndex) {
targetDatabase.tables[existingTableIndex] = userPreset;
} else {
targetDatabase.tables.push(userPreset);
}
setUserSchemaData({
schemaData: userSchemaData,
userId
});
////////////////////////////////////////
const targetDb = await DB_HANDLER(`SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, [
userId,
database
]);
if (targetDb && targetDb[0]) {
const newTableEntry = await addDbEntry({
dbFullName: "datasquirel",
tableName: "user_database_tables",
data: {
user_id: userId,
db_id: targetDb[0].id,
db_slug: database,
table_name: "Users",
table_slug: "users"
}
});
}
////////////////////////////////////////
const targetPath = path.join(process.cwd(), "/shell");
const dbShellUpdate = execSync(`node createDbFromSchema.js --user ${userId} --database ${dbFullName}`, {
cwd: targetPath
});
return dbShellUpdate.toString();
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
} catch (/** @type {any} */ error) {
serverError({
component: "addUsersTableToDb",
message: error.message,
user: {
id: userId
}
});
return error.message;
}
}; ////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/***/ }),
/***/ 5425:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { scryptSync , createDecipheriv } = __webpack_require__(6113);
const { Buffer } = __webpack_require__(4300);
/**
* @param {string} encryptedString
* @returns {string | null}
*/ const decrypt = (encryptedString)=>{
const algorithm = "aes-192-cbc";
const password = process.env.DSQL_ENCRYPTION_PASSWORD || "";
const salt = process.env.DSQL_ENCRYPTION_SALT || "";
let key = scryptSync(password, salt, 24);
let iv = Buffer.alloc(16, 0);
// @ts-ignore
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
return null;
}
};
module.exports = decrypt;
/***/ }),
/***/ 2245:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var _functions_backend_addUsersTableToDb__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1459);
/* harmony import */ var _functions_backend_addUsersTableToDb__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_addUsersTableToDb__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _package_shared_functions_backend_db_addDbEntry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5338);
/* harmony import */ var _package_shared_functions_backend_db_addDbEntry__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_db_addDbEntry__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var datasquirel_functions_hashPassword__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2029);
/* harmony import */ var datasquirel_functions_hashPassword__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(datasquirel_functions_hashPassword__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1311);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_6__);
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
const path = __webpack_require__(1017);
const { execSync } = __webpack_require__(2081);
"use strict";(()=>{var e={};e.id=8864,e.ids=[8864],e.modules={43499:e=>{e.exports=require("@moduletrace/datasquirel/functions/hashPassword")},27825:e=>{e.exports=require("lodash")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},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")},81630:e=>{e.exports=require("http")},33873:e=>{e.exports=require("path")},48942:(e,a,t)=>{t.r(a),t.d(a,{config:()=>h,default:()=>S,routeModule:()=>N});var r={};t.r(r),t.d(r,{default:()=>A});var s=t(89947),l=t(2706),u=t(96762),i=t(56757),n=t.n(i),d=t(47670),o=t.n(d);t(72907);var c=t(43499),m=t.n(c),p=t(77538),f=t.n(p),g=t(57638),_=t.n(g),y=t(77619),R=t.n(y);t(29021),t(33873);let{execSync:b}=t(79646);async function A(e,a){if("POST"!==e.method)return a.json({success:!1,payload:null,msg:"Failed!"});try{let t=e.headers.authorization,{payload:r,database:s,encryptionKey:l}=e.body,u=R()({key:t,database:s,user_id:String(e.query.user_id)});if(!u?.user_id)throw Error("Api Credentials invalid!");if((!u.full_access||!u.sign)&&!r?.password){a.json({success:!1,msg:"Password is required to create an account"});return}let i=m()({encryptionKey:l,password:String(r.password)});r.password=i;let d=`datasquirel_user_${u.user_id}_${s}`,c=await _()({queryString:"SHOW COLUMNS FROM users",database:d});if(c||(await n()({userId:Number(u.user_id),database:s}),c=await _()({queryString:"SHOW COLUMNS FROM users",database:d})),!c)return a.json({success:!1,msg:"Could not create users table"});let p=c.map(e=>e.Field),f=null;for(let e=0;e<Object.keys(r).length;e++){let a=Object.keys(r)[e];if(!p.includes(a)){f=a;break}}if(f){a.json({success:!1,msg:`${f} is not a valid field!`});return}let g=await _()({queryString:`SELECT * FROM users WHERE email = ?${r.username?" OR username = ?":""}`,queryValuesArray:r.username?[r.email,r.username]:[r.email],database:d});if(console.log(g),g?.[0])return a.json({success:!1,msg:"User Already Exists",payload:null});let y=await o()({dbContext:"Dsql User",paradigm:"Full Access",dbFullName:d,tableName:"users",data:{...r,image:"/images/user-preset.png",image_thumbnail:"/images/user-preset-thumbnail.png"}});if(y?.insertId){let e=await _()({queryString:`SELECT id,first_name,last_name,email,username,phone,image,image_thumbnail,city,state,country,zip_code,address,verification_status,more_user_data FROM users WHERE id='${y.insertId}'`,database:d});a.json({success:!0,payload:e[0]})}else a.json({success:!1,msg:"Could not create user",sqlResult:y,payload:null})}catch(t){f()({component:"/api/user/add-user/main-catch-error",message:t.message,user:{},req:e}),a.json({success:!1,msg:"Wrong Credentials"})}}let S=(0,u.M)(r,"default"),h=(0,u.M)(r,"config"),N=new s.PagesAPIRouteModule({definition:{kind:l.A.PAGES_API,page:"/api/user/[user_id]/add-user",pathname:"/api/user/[user_id]/add-user",bundlePath:"",filename:""},userland:r})},56757:(e,a,t)=>{t(29021);let r=t(33873),{execSync:s}=t(79646),l=t(77538),u=t(51348),{default:i}=t(49827),{default:n}=t(19857),d=t(47670);e.exports=async function({userId:e,database:a}){let o=`datasquirel_user_${e}_${a}`,c=t(87924);try{let t;let l=i({userId:e});if(!l)throw Error("User schema data not found!");let m=l.filter(e=>e.dbSlug===a)[0],p=m.tables.filter((e,a)=>{if("users"===e.tableName)return t=a,!0});p&&p[0]&&t?m.tables[t]=c:m.tables.push(c),n({schemaData:l,userId:e});let f=await u("SELECT id FROM user_databases WHERE user_id=? AND db_slug=?",[e,a]);f&&f[0]&&await d({dbFullName:"datasquirel",tableName:"user_database_tables",data:{user_id:e,db_id:f[0].id,db_slug:a,table_name:"Users",table_slug:"users"}});let g=r.join(process.cwd(),"/shell");return s(`node createDbFromSchema.js --user ${e} --database ${o}`,{cwd:g}).toString()}catch(a){return l({component:"addUsersTableToDb",message:a.message,user:{id:e}}),a.message}}},49827:(e,a,t)=>{t.r(a),t.d(a,{default:()=>u});let r=t(77538),s=t(29021),l=t(33873);function u({userId:e}){try{let a=l.resolve(process.cwd(),`${process.env.DSQL_USER_DB_SCHEMA_PATH}/user-${e}/main.json`);return JSON.parse(s.readFileSync(a,"utf-8"))}catch(e){return r({component:"/functions/backend/grabUserSchemaData",message:e.message}),null}}},77538:(e,a,t)=>{let r=t(29021),{IncomingMessage:s}=t(81630);e.exports=async function({user:e,message:a,component:t,noMail:s,req:l}){let u=new Date,i=(()=>{if(!l)return null;try{let e=l.headers["x-forwarded-for"],a=l.headers["x-real-ip"],t=l.headers["cf-connecting-ip"],r=Array.isArray(e)?e[0]:e?.split(",")[0],s=t||r||a||l.socket.remoteAddress;if(!s)return null;return String(s)}catch(e){return null}})();try{let s=`🚀 SERVER ERROR ===========================
Error Message: ${a}
Component: ${t}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(s+=`
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}`),l?.url&&(s+=`
URL: ${l.url}`),l?.body&&(s+=`
Request Body: ${JSON.stringify(l.body,null,4)}`),i&&(s+=`
IP: ${i}`),s+=`
Date: ${u.toDateString()}
========================================`,r.existsSync("./.tmp/error.log")||r.writeFileSync("./.tmp/error.log","","utf-8");let n=r.readFileSync("./.tmp/error.log","utf-8");r.writeFileSync("./.tmp/error.log",s),r.appendFileSync("./.tmp/error.log",`
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* API handler
* ==============================================================================
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
success: false,
payload: null,
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
/**
* User auth
*
* @description Authenticate user
*/ /** @type {string} */ // @ts-ignore
const authorization = req.headers.authorization;
const sanitizedReqBody = req.body;
const { payload , database , encryptionKey } = sanitizedReqBody;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_6___default()({
key: authorization,
database,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) {
if (!payload?.password) {
res.json({
success: false,
msg: `Password is required to create an account`
});
return;
}
}
const hashedPassword = datasquirel_functions_hashPassword__WEBPACK_IMPORTED_MODULE_3___default()({
encryptionKey: encryptionKey,
password: String(payload.password)
});
payload.password = hashedPassword;
/**
* Input Validation
*
* @description Input Validation
* @required - payload.first_name
* @required - payload.last_name
* @required - payload.email
* @required - payload.password
*/ const dbFullName = `datasquirel_user_${apiCred.user_id}_${database}`;
let fields = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_5___default()({
queryString: `SHOW COLUMNS FROM users`,
database: dbFullName
});
if (!fields) {
const newTable = await _functions_backend_addUsersTableToDb__WEBPACK_IMPORTED_MODULE_0___default()({
userId: Number(apiCred.user_id),
database: database
});
fields = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_5___default()({
queryString: `SHOW COLUMNS FROM users`,
database: dbFullName
});
}
if (!fields) {
return res.json({
success: false,
msg: "Could not create users table"
});
}
const fieldsTitles = fields.map((/** @type {any} */ fieldObject)=>fieldObject.Field);
let invalidField = null;
for(let i = 0; i < Object.keys(payload).length; i++){
const key = Object.keys(payload)[i];
if (!fieldsTitles.includes(key)) {
invalidField = key;
break;
}
}
if (invalidField) {
res.json({
success: false,
msg: `${invalidField} is not a valid field!`
});
return;
}
const existingUser = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_5___default()({
queryString: `SELECT * FROM users WHERE email = ?${payload.username ? " OR username = ?" : ""}`,
queryValuesArray: payload.username ? [
payload.email,
payload.username
] : [
payload.email
],
database: dbFullName
});
console.log(existingUser);
if (existingUser?.[0]) {
return res.json({
success: false,
msg: "User Already Exists",
payload: null
});
}
const addUser = await _package_shared_functions_backend_db_addDbEntry__WEBPACK_IMPORTED_MODULE_1___default()({
dbContext: "Dsql User",
paradigm: "Full Access",
dbFullName: dbFullName,
tableName: "users",
data: {
...payload,
image: "/images/user-preset.png",
image_thumbnail: "/images/user-preset-thumbnail.png"
}
});
if (addUser?.insertId) {
const newlyAddedUser = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_5___default()({
queryString: `SELECT id,first_name,last_name,email,username,phone,image,image_thumbnail,city,state,country,zip_code,address,verification_status,more_user_data FROM users WHERE id='${addUser.insertId}'`,
database: dbFullName
});
res.json({
success: true,
payload: newlyAddedUser[0]
});
} else {
res.json({
success: false,
msg: "Could not create user",
sqlResult: addUser,
payload: null
});
}
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_4___default()({
component: "/api/user/add-user/main-catch-error",
message: error.message,
user: {}
});
res.json({
success: false,
msg: "Wrong Credentials"
});
////////////////////////////////////////
}
}
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2224,2163,3017,3403,7547,5886,5338,8326,1311,1007,8164,7638,9258], () => (__webpack_exec__(2245)));
module.exports = __webpack_exports__;
})();
${n}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},19857:(e,a,t)=>{t.r(a),t.d(a,{default:()=>u});let r=t(77538),s=t(29021),l=t(33873);function u({userId:e,schemaData:a}){try{let t=l.resolve(process.cwd(),`${process.env.DSQL_USER_DB_SCHEMA_PATH}/user-${e}/main.json`);return s.writeFileSync(t,JSON.stringify(a),"utf8"),!0}catch(e){return r({component:"/functions/backend/setUserSchemaData",message:e.message}),!1}}},77619:(e,a,t)=>{let r=t(29021),s=t(72907);e.exports=({key:e,database:a,table:t,user_id:l})=>{if(!e||!l)return null;try{let u=process.env.DSQL_API_KEYS_PATH;if(!u)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let i=s(e),n=JSON.parse(i||""),d=r.existsSync(`${u}/${n.sign}`);if(String(n.user_id)!==String(l)||!d)return null;if(!n.target_database)return n;if(!a&&n.target_database)return null;let o=n.target_database?.split(",").includes(String(a));if(o&&!n.target_table)return n;if(o&&!t&&n.target_table)return null;if(n.target_table?.split(",").includes(String(t)))return n;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}},72907:(e,a,t)=>{let{scryptSync:r,createDecipheriv:s}=t(55511),{Buffer:l}=t(79428);e.exports=e=>{let a=s("aes-192-cbc",r(process.env.DSQL_ENCRYPTION_PASSWORD||"",process.env.DSQL_ENCRYPTION_SALT||"",24),l.alloc(16,0));try{let t=a.update(e,"hex","utf8");return t+=a.final("utf8")}catch(e){return null}}},30003:e=>{e.exports=/^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/},6061:(e,a,t)=>{let r=t(72907),s=t(30003);e.exports=async function({unparsedResults:e,tableSchema:a}){let t=[];try{for(let l=0;l<e.length;l++){let u=e[l],i=Object.keys(u);for(let e=0;e<i.length;e++){let t=i[e],l=a?.fields[e];if(t?.match(s))continue;let n=u[t];("number"==typeof n||n)&&l?.encrypted&&n?.match(/./)&&(u[t]=r(n))}t.push(u)}return t}catch(a){return console.log("ERROR in parseDbResults Function =>",a.message),e}}},57638:(e,a,t)=>{t(29021);let r=t(6061),s=t(48225),l=t(51348),u=t(21339);e.exports=async function({queryString:e,queryValuesArray:a,database:t,tableSchema:i}){let n;let d=!!t?.match(/^datasquirel$/),o=d?l:u;try{n=e&&a&&Array.isArray(a)&&a[0]?d?await o(e,a):await o({paradigm:"Full Access",database:t,queryString:e,queryValues:a}):d?await o(e):await o({paradigm:"Full Access",database:t,queryString:e})}catch(e){s({component:"varDatabaseDbHandler/lines-29-32",message:e.message})}if(n&&i)try{let e=n;return await r({unparsedResults:e,tableSchema:i})}catch(e){return console.log("\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>",t,e),s({component:"varDatabaseDbHandler/lines-52-53",message:e.message}),null}else if(n)return n;else return null}},87924:e=>{e.exports=JSON.parse('{"tableName":"users","tableFullName":"Users","fields":[{"fieldName":"first_name","dataType":"VARCHAR(100)","notNullValue":true},{"fieldName":"last_name","dataType":"VARCHAR(100)","notNullValue":true},{"fieldName":"email","dataType":"VARCHAR(200)","notNullValue":true},{"fieldName":"phone","dataType":"VARCHAR(50)"},{"fieldName":"user_type","dataType":"VARCHAR(20)","defaultValue":"default"},{"fieldName":"username","dataType":"VARCHAR(100)","nullValue":true},{"fieldName":"password","dataType":"VARCHAR(250)","notNullValue":true},{"fieldName":"image","dataType":"VARCHAR(250)","defaultValue":"/images/user-preset.png"},{"fieldName":"image_thumbnail","dataType":"VARCHAR(250)","defaultValue":"/images/user-preset-thumbnail.png"},{"fieldName":"address","dataType":"VARCHAR(255)"},{"fieldName":"city","dataType":"VARCHAR(50)"},{"fieldName":"state","dataType":"VARCHAR(50)"},{"fieldName":"country","dataType":"VARCHAR(50)"},{"fieldName":"zip_code","dataType":"VARCHAR(50)"},{"fieldName":"social_login","dataType":"TINYINT","defaultValue":"0"},{"fieldName":"social_platform","dataType":"VARCHAR(50)","nullValue":true},{"fieldName":"social_id","dataType":"VARCHAR(250)","nullValue":true},{"fieldName":"more_user_data","dataType":"BIGINT","defaultValue":"0"},{"fieldName":"verification_status","dataType":"TINYINT","defaultValue":"0"},{"fieldName":"temp_login_code","dataType":"VARCHAR(50)","nullValue":true}]}')}};var a=require("../../../../webpack-api-runtime.js");a.C(e);var t=e=>a(a.s=e),r=a.X(0,[4050],()=>t(48942));module.exports=r})();
File diff suppressed because one or more lines are too long
@@ -1,188 +1,28 @@
"use strict";
(() => {
var exports = {};
exports.id = 7631;
exports.ids = [7631];
exports.modules = {
/***/ 2261:
/***/ ((module) => {
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 1017:
/***/ ((module) => {
module.exports = require("path");
/***/ }),
/***/ 5425:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { scryptSync , createDecipheriv } = __webpack_require__(6113);
const { Buffer } = __webpack_require__(4300);
/**
* @param {string} encryptedString
* @returns {string | null}
*/ const decrypt = (encryptedString)=>{
const algorithm = "aes-192-cbc";
const password = process.env.DSQL_ENCRYPTION_PASSWORD || "";
const salt = process.env.DSQL_ENCRYPTION_SALT || "";
let key = scryptSync(password, salt, 24);
let iv = Buffer.alloc(16, 0);
// @ts-ignore
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
return null;
}
};
module.exports = decrypt;
/***/ }),
/***/ 5823:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1311);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__);
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
"use strict";(()=>{var e={};e.id=8078,e.ids=[8078],e.modules={75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},9973:e=>{e.exports=require("serverless-mysql")},79428:e=>{e.exports=require("buffer")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},81630:e=>{e.exports=require("http")},33873:e=>{e.exports=require("path")},96762:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},21611:(e,r,t)=>{t.r(r),t.d(r,{config:()=>f,default:()=>S,routeModule:()=>m});var s={};t.r(s),t.d(s,{default:()=>_});var a=t(89947),n=t(2706),o=t(96762);t(72907);var l=t(77538),i=t.n(l),u=t(57638),c=t.n(u),d=t(77619),p=t.n(d);async function _(e,r){if("POST"!==e.method)return r.json({success:!1,payload:null,msg:"Failed!"});try{let t=e.headers.authorization,{payload:s,database:a}=e.body,n=p()({key:t,database:a?.db_slug,user_id:String(e.query.user_id)});if(!n?.user_id)throw Error("Api Credentials invalid!");if(!n.full_access||!n.sign)return r.json({success:!1,msg:"Unauthorized"});let o=`datasquirel_user_${n.user_id}_${a}`,l=await c()({queryString:`DELETE FROM users WHERE id='${s.id}'`,database:o});r.json({success:!0,payload:l})}catch(t){i()({component:"/api/user/delete-user/main-catch-error",message:t.message,user:{},req:e}),r.json({success:!1,msg:"Wrong Credentials"})}}t(29021);let S=(0,o.M)(s,"default"),f=(0,o.M)(s,"config"),m=new a.PagesAPIRouteModule({definition:{kind:n.A.PAGES_API,page:"/api/user/[user_id]/delete-user",pathname:"/api/user/[user_id]/delete-user",bundlePath:"",filename:""},userland:s})},77538:(e,r,t)=>{let s=t(29021),{IncomingMessage:a}=t(81630);e.exports=async function({user:e,message:r,component:t,noMail:a,req:n}){let o=new Date,l=(()=>{if(!n)return null;try{let e=n.headers["x-forwarded-for"],r=n.headers["x-real-ip"],t=n.headers["cf-connecting-ip"],s=Array.isArray(e)?e[0]:e?.split(",")[0],a=t||s||r||n.socket.remoteAddress;if(!a)return null;return String(a)}catch(e){return null}})();try{let a=`🚀 SERVER ERROR ===========================
Error Message: ${r}
Component: ${t}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(a+=`
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}`),n?.url&&(a+=`
URL: ${n.url}`),n?.body&&(a+=`
Request Body: ${JSON.stringify(n.body,null,4)}`),l&&(a+=`
IP: ${l}`),a+=`
Date: ${o.toDateString()}
========================================`,s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let i=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",a),s.appendFileSync("./.tmp/error.log",`
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* API handler
* ==============================================================================
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
success: false,
payload: null,
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
/**
* User auth
*
* @description Authenticate user
*/ /** @type {string} */ // @ts-ignore
const authorization = req.headers.authorization;
const { payload , database } = req.body;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default()({
key: authorization,
database: database?.db_slug,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) return res.json({
success: false,
msg: "Unauthorized"
});
/**
* User auth
*
* @description Authenticate user
*/ /**
* Input Validation
*
* @description Input Validation
* @required - payload.first_name
* @required - payload.last_name
* @required - payload.email
* @required - payload.username
* @required - payload.password
*/ const dbFullName = `datasquirel_user_${apiCred.user_id}_${database}`;
const deleteUser = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2___default()({
queryString: `DELETE FROM users WHERE id='${payload.id}'`,
database: dbFullName
});
res.json({
success: true,
payload: deleteUser
});
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default()({
component: "/api/user/delete-user/main-catch-error",
message: error.message,
user: {}
});
res.json({
success: false,
msg: "Wrong Credentials"
});
////////////////////////////////////////
}
}
${i}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},77619:(e,r,t)=>{let s=t(29021),a=t(72907);e.exports=({key:e,database:r,table:t,user_id:n})=>{if(!e||!n)return null;try{let o=process.env.DSQL_API_KEYS_PATH;if(!o)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let l=a(e),i=JSON.parse(l||""),u=s.existsSync(`${o}/${i.sign}`);if(String(i.user_id)!==String(n)||!u)return null;if(!i.target_database)return i;if(!r&&i.target_database)return null;let c=i.target_database?.split(",").includes(String(r));if(c&&!i.target_table)return i;if(c&&!t&&i.target_table)return null;if(i.target_table?.split(",").includes(String(t)))return i;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}},72907:(e,r,t)=>{let{scryptSync:s,createDecipheriv:a}=t(55511),{Buffer:n}=t(79428);e.exports=e=>{let r=a("aes-192-cbc",s(process.env.DSQL_ENCRYPTION_PASSWORD||"",process.env.DSQL_ENCRYPTION_SALT||"",24),n.alloc(16,0));try{let t=r.update(e,"hex","utf8");return t+=r.final("utf8")}catch(e){return null}}},30003:e=>{e.exports=/^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/},6061:(e,r,t)=>{let s=t(72907),a=t(30003);e.exports=async function({unparsedResults:e,tableSchema:r}){let t=[];try{for(let n=0;n<e.length;n++){let o=e[n],l=Object.keys(o);for(let e=0;e<l.length;e++){let t=l[e],n=r?.fields[e];if(t?.match(a))continue;let i=o[t];("number"==typeof i||i)&&n?.encrypted&&i?.match(/./)&&(o[t]=s(i))}t.push(o)}return t}catch(r){return console.log("ERROR in parseDbResults Function =>",r.message),e}}},48225:(e,r,t)=>{let s=t(29021);e.exports=async function({user:e,message:r,component:t,noMail:a}){let n=`🚀 SERVER ERROR ===========================
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}
Error Message: ${r}
Component: ${t}
Date: ${Date()}
========================================`;s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let o=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",n),s.appendFileSync("./.tmp/error.log",`
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2224,2163,3017,3403,8326,1311,1007], () => (__webpack_exec__(5823)));
module.exports = __webpack_exports__;
})();
${o}`)}},57638:(e,r,t)=>{t(29021);let s=t(6061),a=t(48225),n=t(51348),o=t(21339);e.exports=async function({queryString:e,queryValuesArray:r,database:t,tableSchema:l}){let i;let u=!!t?.match(/^datasquirel$/),c=u?n:o;try{i=e&&r&&Array.isArray(r)&&r[0]?u?await c(e,r):await c({paradigm:"Full Access",database:t,queryString:e,queryValues:r}):u?await c(e):await c({paradigm:"Full Access",database:t,queryString:e})}catch(e){a({component:"varDatabaseDbHandler/lines-29-32",message:e.message})}if(i&&l)try{let e=i;return await s({unparsedResults:e,tableSchema:l})}catch(e){return console.log("\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>",t,e),a({component:"varDatabaseDbHandler/lines-52-53",message:e.message}),null}else if(i)return i;else return null}},51348:(e,r,t)=>{let s=t(9973),a=t(21580),n=s({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_USERNAME,password:process.env.DSQL_DB_PASSWORD,database:process.env.DSQL_DB_NAME,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4",ssl:a()}});async function o(...e){try{let r=await n.query(...e);return await n.end(),JSON.parse(JSON.stringify(r))}catch(e){return console.log("DB Error =>",e),{success:!1,error:e.message}}}e.exports=o},21339:(e,r,t)=>{let s=t(29021);t(33873);let a=t(9973),n=t(21580),o=a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,charset:"utf8mb4",ssl:n()}});e.exports=function({paradigm:e,database:r,queryString:t,queryValues:l}){try{return new Promise((i,u)=>{let c=!!e?.match(/full.access|^fa$/i);try{function d(e){o.end(),i(JSON.parse(JSON.stringify(e)))}function p(e){o.end(),i({error:e.message,queryStringGenerated:t,queryValuesGenerated:l,sql:e.sql})}o=c?a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_FULL_ACCESS_USERNAME,password:process.env.DSQL_DB_FULL_ACCESS_PASSWORD,database:r,ssl:n()}}):a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,database:r,ssl:n()}}),l&&Array.isArray(l)&&l[0]?o.query(t,l).then(d).catch(p):o.query(t).then(d).catch(p)}catch(e){s.appendFileSync("./.tmp/dbErrorLogs.txt",e.message+"\n"+Date()+"\n\n\n","utf8"),i({error:e.message})}})}catch(e){return{success:!1,error:e.message}}}},21580:(e,r,t)=>{let s=t(29021);e.exports=function(){let e=process.env.DSQL_SSL_DIR;if(!e?.match(/./))return;let r=`${e}/ca-cert.pem`;if(!s.existsSync(r)){console.log(`${r} does not exist`);return}return{ca:s.readFileSync(`${e}/ca-cert.pem`)}}},2706:(e,r)=>{var t;Object.defineProperty(r,"A",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE"}(t||(t={}))},89947:(e,r,t)=>{e.exports=t(75600)}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=21611);module.exports=t})();
File diff suppressed because one or more lines are too long
@@ -1,194 +1,28 @@
"use strict";
(() => {
var exports = {};
exports.id = 492;
exports.ids = [492];
exports.modules = {
/***/ 2261:
/***/ ((module) => {
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 1017:
/***/ ((module) => {
module.exports = require("path");
/***/ }),
/***/ 5425:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { scryptSync , createDecipheriv } = __webpack_require__(6113);
const { Buffer } = __webpack_require__(4300);
/**
* @param {string} encryptedString
* @returns {string | null}
*/ const decrypt = (encryptedString)=>{
const algorithm = "aes-192-cbc";
const password = process.env.DSQL_ENCRYPTION_PASSWORD || "";
const salt = process.env.DSQL_ENCRYPTION_SALT || "";
let key = scryptSync(password, salt, 24);
let iv = Buffer.alloc(16, 0);
// @ts-ignore
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
return null;
}
};
module.exports = decrypt;
/***/ }),
/***/ 3154:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1311);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__);
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
"use strict";(()=>{var e={};e.id=795,e.ids=[795],e.modules={75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},9973:e=>{e.exports=require("serverless-mysql")},79428:e=>{e.exports=require("buffer")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},81630:e=>{e.exports=require("http")},33873:e=>{e.exports=require("path")},96762:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},40132:(e,r,t)=>{t.r(r),t.d(r,{config:()=>f,default:()=>S,routeModule:()=>m});var s={};t.r(s),t.d(s,{default:()=>_});var a=t(89947),n=t(2706),o=t(96762);t(72907);var i=t(77538),l=t.n(i),u=t(57638),c=t.n(u),d=t(77619),p=t.n(d);async function _(e,r){if("POST"!==e.method)return r.json({msg:"Failed!"});try{let t=e.headers.authorization,{userId:s,database:a}=e.body,n=p()({key:t,database:a,user_id:String(e.query.user_id)});if(!n?.user_id)throw Error("Api Credentials invalid!");if(!n.full_access||!n.sign)return r.json({success:!1,msg:"Unauthorized"});let o=e.body.fields.map(e=>e.replace(/[^a-z\_]/g,"")),i=`datasquirel_user_${n.user_id}_${a}`,l=`SELECT ${o.join(",")} FROM users WHERE id=?`,u=await c()({queryString:l,queryValuesArray:[s],database:i.replace(/[^a-z0-9_]/g,"")});if(!u||!u[0])return r.json({success:!1,payload:null,msg:"User not found!"});r.json({success:!0,payload:u[0]})}catch(t){l()({component:"/api/user/get-user/main-catch-error",message:t.message,user:{},req:e}),r.json({success:!1,msg:"User fetch Error"})}}t(29021);let S=(0,o.M)(s,"default"),f=(0,o.M)(s,"config"),m=new a.PagesAPIRouteModule({definition:{kind:n.A.PAGES_API,page:"/api/user/[user_id]/get-user",pathname:"/api/user/[user_id]/get-user",bundlePath:"",filename:""},userland:s})},77538:(e,r,t)=>{let s=t(29021),{IncomingMessage:a}=t(81630);e.exports=async function({user:e,message:r,component:t,noMail:a,req:n}){let o=new Date,i=(()=>{if(!n)return null;try{let e=n.headers["x-forwarded-for"],r=n.headers["x-real-ip"],t=n.headers["cf-connecting-ip"],s=Array.isArray(e)?e[0]:e?.split(",")[0],a=t||s||r||n.socket.remoteAddress;if(!a)return null;return String(a)}catch(e){return null}})();try{let a=`🚀 SERVER ERROR ===========================
Error Message: ${r}
Component: ${t}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(a+=`
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}`),n?.url&&(a+=`
URL: ${n.url}`),n?.body&&(a+=`
Request Body: ${JSON.stringify(n.body,null,4)}`),i&&(a+=`
IP: ${i}`),a+=`
Date: ${o.toDateString()}
========================================`,s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let l=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",a),s.appendFileSync("./.tmp/error.log",`
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* API handler
* ==============================================================================
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
/** @type {string} */ // @ts-ignore
const authorization = req.headers.authorization;
const { userId , database } = req.body;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default()({
key: authorization,
database,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) return res.json({
success: false,
msg: "Unauthorized"
});
/**
* User auth
*
* @description Authenticate user
*/ const sanitizedReqBody = req.body;
const sanitizedFields = sanitizedReqBody.fields.map((/** @type {String} */ fld)=>fld.replace(/[^a-z\_]/g, ""));
const dbFullName = `datasquirel_user_${apiCred.user_id}_${database}`;
/**
* GRAB user
*
* @description GRAB user
*/ const query = `SELECT ${sanitizedFields.join(",")} FROM users WHERE id=?`;
let foundUser = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2___default()({
queryString: query,
queryValuesArray: [
userId
],
database: dbFullName.replace(/[^a-z0-9_]/g, "")
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
if (!foundUser || !foundUser[0]) return res.json({
success: false,
payload: null,
msg: "User not found!"
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/** ********************* Send Response */ res.json({
success: true,
payload: foundUser[0]
});
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default()({
component: "/api/user/get-user/main-catch-error",
message: error.message,
user: {}
});
res.json({
success: false,
msg: "User fetch Error"
});
////////////////////////////////////////
}
}
${l}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},77619:(e,r,t)=>{let s=t(29021),a=t(72907);e.exports=({key:e,database:r,table:t,user_id:n})=>{if(!e||!n)return null;try{let o=process.env.DSQL_API_KEYS_PATH;if(!o)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let i=a(e),l=JSON.parse(i||""),u=s.existsSync(`${o}/${l.sign}`);if(String(l.user_id)!==String(n)||!u)return null;if(!l.target_database)return l;if(!r&&l.target_database)return null;let c=l.target_database?.split(",").includes(String(r));if(c&&!l.target_table)return l;if(c&&!t&&l.target_table)return null;if(l.target_table?.split(",").includes(String(t)))return l;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}},72907:(e,r,t)=>{let{scryptSync:s,createDecipheriv:a}=t(55511),{Buffer:n}=t(79428);e.exports=e=>{let r=a("aes-192-cbc",s(process.env.DSQL_ENCRYPTION_PASSWORD||"",process.env.DSQL_ENCRYPTION_SALT||"",24),n.alloc(16,0));try{let t=r.update(e,"hex","utf8");return t+=r.final("utf8")}catch(e){return null}}},30003:e=>{e.exports=/^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/},6061:(e,r,t)=>{let s=t(72907),a=t(30003);e.exports=async function({unparsedResults:e,tableSchema:r}){let t=[];try{for(let n=0;n<e.length;n++){let o=e[n],i=Object.keys(o);for(let e=0;e<i.length;e++){let t=i[e],n=r?.fields[e];if(t?.match(a))continue;let l=o[t];("number"==typeof l||l)&&n?.encrypted&&l?.match(/./)&&(o[t]=s(l))}t.push(o)}return t}catch(r){return console.log("ERROR in parseDbResults Function =>",r.message),e}}},48225:(e,r,t)=>{let s=t(29021);e.exports=async function({user:e,message:r,component:t,noMail:a}){let n=`🚀 SERVER ERROR ===========================
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}
Error Message: ${r}
Component: ${t}
Date: ${Date()}
========================================`;s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let o=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",n),s.appendFileSync("./.tmp/error.log",`
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2224,2163,3017,3403,8326,1311,1007], () => (__webpack_exec__(3154)));
module.exports = __webpack_exports__;
})();
${o}`)}},57638:(e,r,t)=>{t(29021);let s=t(6061),a=t(48225),n=t(51348),o=t(21339);e.exports=async function({queryString:e,queryValuesArray:r,database:t,tableSchema:i}){let l;let u=!!t?.match(/^datasquirel$/),c=u?n:o;try{l=e&&r&&Array.isArray(r)&&r[0]?u?await c(e,r):await c({paradigm:"Full Access",database:t,queryString:e,queryValues:r}):u?await c(e):await c({paradigm:"Full Access",database:t,queryString:e})}catch(e){a({component:"varDatabaseDbHandler/lines-29-32",message:e.message})}if(l&&i)try{let e=l;return await s({unparsedResults:e,tableSchema:i})}catch(e){return console.log("\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>",t,e),a({component:"varDatabaseDbHandler/lines-52-53",message:e.message}),null}else if(l)return l;else return null}},51348:(e,r,t)=>{let s=t(9973),a=t(21580),n=s({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_USERNAME,password:process.env.DSQL_DB_PASSWORD,database:process.env.DSQL_DB_NAME,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4",ssl:a()}});async function o(...e){try{let r=await n.query(...e);return await n.end(),JSON.parse(JSON.stringify(r))}catch(e){return console.log("DB Error =>",e),{success:!1,error:e.message}}}e.exports=o},21339:(e,r,t)=>{let s=t(29021);t(33873);let a=t(9973),n=t(21580),o=a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,charset:"utf8mb4",ssl:n()}});e.exports=function({paradigm:e,database:r,queryString:t,queryValues:i}){try{return new Promise((l,u)=>{let c=!!e?.match(/full.access|^fa$/i);try{function d(e){o.end(),l(JSON.parse(JSON.stringify(e)))}function p(e){o.end(),l({error:e.message,queryStringGenerated:t,queryValuesGenerated:i,sql:e.sql})}o=c?a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_FULL_ACCESS_USERNAME,password:process.env.DSQL_DB_FULL_ACCESS_PASSWORD,database:r,ssl:n()}}):a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,database:r,ssl:n()}}),i&&Array.isArray(i)&&i[0]?o.query(t,i).then(d).catch(p):o.query(t).then(d).catch(p)}catch(e){s.appendFileSync("./.tmp/dbErrorLogs.txt",e.message+"\n"+Date()+"\n\n\n","utf8"),l({error:e.message})}})}catch(e){return{success:!1,error:e.message}}}},21580:(e,r,t)=>{let s=t(29021);e.exports=function(){let e=process.env.DSQL_SSL_DIR;if(!e?.match(/./))return;let r=`${e}/ca-cert.pem`;if(!s.existsSync(r)){console.log(`${r} does not exist`);return}return{ca:s.readFileSync(`${e}/ca-cert.pem`)}}},2706:(e,r)=>{var t;Object.defineProperty(r,"A",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE"}(t||(t={}))},89947:(e,r,t)=>{e.exports=t(75600)}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=40132);module.exports=t})();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,253 +1 @@
"use strict";
(() => {
var exports = {};
exports.id = 286;
exports.ids = [286];
exports.modules = {
/***/ 9538:
/***/ ((module) => {
module.exports = require("datasquirel");
/***/ }),
/***/ 3785:
/***/ ((module) => {
module.exports = require("generate-password");
/***/ }),
/***/ 6781:
/***/ ((module) => {
module.exports = require("google-auth-library");
/***/ }),
/***/ 6517:
/***/ ((module) => {
module.exports = require("lodash");
/***/ }),
/***/ 5184:
/***/ ((module) => {
module.exports = require("nodemailer");
/***/ }),
/***/ 6109:
/***/ ((module) => {
module.exports = require("sanitize-html");
/***/ }),
/***/ 2261:
/***/ ((module) => {
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 3685:
/***/ ((module) => {
module.exports = require("http");
/***/ }),
/***/ 1017:
/***/ ((module) => {
module.exports = require("path");
/***/ }),
/***/ 6221:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _functions_backend_social_login_handleSocialDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7839);
/* harmony import */ var _functions_backend_social_login_handleSocialDb__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_social_login_handleSocialDb__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__);
// @ts-check
/** # MODULE TRACE
======================================================================
* No imports found for this Module
==== MODULE TRACE END ==== */ /**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
const { OAuth2Client } = __webpack_require__(6781);
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* API handler
* ==============================================================================
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
success: false,
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
const { token , clientId , database , additionalFields } = req.body;
const authorization = req.headers.authorization;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default()({
key: authorization,
database,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) return res.json({
success: false,
msg: "Unauthorized"
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* Grab User data
*
* @description Grab User data
*/ const client = new OAuth2Client(clientId);
const ticket = await client.verifyIdToken({
idToken: token,
audience: clientId
});
if (!ticket?.getPayload()?.email_verified) {
return res.json({
success: false,
user: null
});
}
const payload = ticket.getPayload();
if (!payload) throw new Error("No Payload");
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
if (!database || typeof database != "string" || database?.match(/ /)) {
return res.json({
success: false,
user: undefined,
msg: "Please provide a database slug(database name in lowercase with no spaces)"
});
}
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* Create new user folder and file
*
* @description Create new user folder and file
*/ const targetDbName = `datasquirel_user_${apiCred.user_id}_${database}`;
const { given_name , family_name , email , sub , picture , email_verified } = payload;
const payloadObject = {
email: email,
first_name: given_name,
last_name: family_name,
social_id: sub,
social_platform: "google",
image: picture,
image_thumbnail: picture,
username: `google-user-${sub}`
};
if (additionalFields && Object.keys(additionalFields).length > 0) {
Object.keys(additionalFields).forEach((key)=>{
// @ts-ignore
payloadObject[key] = additionalFields[key];
});
}
const loggedInGoogleUser = await _functions_backend_social_login_handleSocialDb__WEBPACK_IMPORTED_MODULE_2___default()({
database: targetDbName,
email: email || "",
payload: payloadObject,
social_platform: "google",
res: res,
social_id: sub,
additionalFields
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
res.json({
...loggedInGoogleUser,
dsqlUserId: apiCred.user_id
});
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default()({
component: "/api/user/google-login/main-catch-error",
message: error.message,
user: {}
});
res.json({
success: false,
msg: "User fetch Error"
});
////////////////////////////////////////
}
}
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2224,2163,3017,3403,7547,5886,5338,8326,1311,1007,6926,7487,613,4294,6968], () => (__webpack_exec__(6221)));
module.exports = __webpack_exports__;
})();
"use strict";(()=>{var e={};e.id=5770,e.ids=[5770],e.modules={28187:e=>{e.exports=require("@moduletrace/datasquirel")},47795:e=>{e.exports=require("generate-password")},76154:e=>{e.exports=require("google-auth-library")},27825:e=>{e.exports=require("lodash")},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")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},81630:e=>{e.exports=require("http")},33873:e=>{e.exports=require("path")},56891:(e,r,s)=>{s.r(r),s.d(r,{config:()=>_,default:()=>m,routeModule:()=>h});var t={};s.r(t),s.d(t,{default:()=>f});var a=s(89947),i=s(2706),o=s(96762);s(72907);var l=s(77538),n=s.n(l),u=s(36946),d=s.n(u),g=s(77619),c=s.n(g);s(29021);let{OAuth2Client:p}=s(76154);async function f(e,r){if("POST"!==e.method)return r.json({success:!1,msg:"Failed!"});try{let{token:s,clientId:t,database:a,additionalFields:i}=e.body,o=e.headers.authorization,l=c()({key:o,database:a,user_id:String(e.query.user_id)});if(!l?.user_id)throw Error("Api Credentials invalid!");if(!l.full_access||!l.sign)return r.json({success:!1,msg:"Unauthorized"});let n=new p(t),u=await n.verifyIdToken({idToken:s,audience:t});if(!u?.getPayload()?.email_verified)return r.json({success:!1,user:null});let g=u.getPayload();if(!g)throw Error("No Payload");if(!a||"string"!=typeof a||a?.match(/ /))return r.json({success:!1,user:void 0,msg:"Please provide a database slug(database name in lowercase with no spaces)"});let f=`datasquirel_user_${l.user_id}_${a}`,{given_name:m,family_name:_,email:h,sub:q,picture:b,email_verified:x}=g,y={email:h,first_name:m,last_name:_,social_id:q,social_platform:"google",image:b,image_thumbnail:b,username:`google-user-${q}`};i&&Object.keys(i).length>0&&Object.keys(i).forEach(e=>{y[e]=i[e]});let v=await d()({database:f,email:h||"",payload:y,social_platform:"google",res:r,social_id:q,additionalFields:i});r.json({...v,dsqlUserId:l.user_id})}catch(s){n()({component:"/api/user/google-login/main-catch-error",message:s.message,user:{},req:e}),r.json({success:!1,msg:"User fetch Error"})}}let m=(0,o.M)(t,"default"),_=(0,o.M)(t,"config"),h=new a.PagesAPIRouteModule({definition:{kind:i.A.PAGES_API,page:"/api/user/[user_id]/google-login",pathname:"/api/user/[user_id]/google-login",bundlePath:"",filename:""},userland:t})},77619:(e,r,s)=>{let t=s(29021),a=s(72907);e.exports=({key:e,database:r,table:s,user_id:i})=>{if(!e||!i)return null;try{let o=process.env.DSQL_API_KEYS_PATH;if(!o)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let l=a(e),n=JSON.parse(l||""),u=t.existsSync(`${o}/${n.sign}`);if(String(n.user_id)!==String(i)||!u)return null;if(!n.target_database)return n;if(!r&&n.target_database)return null;let d=n.target_database?.split(",").includes(String(r));if(d&&!n.target_table)return n;if(d&&!s&&n.target_table)return null;if(n.target_table?.split(",").includes(String(s)))return n;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[4050,6946],()=>s(56891));module.exports=t})();
File diff suppressed because one or more lines are too long
@@ -1,185 +1,16 @@
"use strict";
(() => {
var exports = {};
exports.id = 4468;
exports.ids = [4468];
exports.modules = {
/***/ 6781:
/***/ ((module) => {
module.exports = require("google-auth-library");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 5425:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { scryptSync , createDecipheriv } = __webpack_require__(6113);
const { Buffer } = __webpack_require__(4300);
/**
* @param {string} encryptedString
* @returns {string | null}
*/ const decrypt = (encryptedString)=>{
const algorithm = "aes-192-cbc";
const password = process.env.DSQL_ENCRYPTION_PASSWORD || "";
const salt = process.env.DSQL_ENCRYPTION_SALT || "";
let key = scryptSync(password, salt, 24);
let iv = Buffer.alloc(16, 0);
// @ts-ignore
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
return null;
}
};
module.exports = decrypt;
/***/ }),
/***/ 3973:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_2__);
// @ts-check
/** # MODULE TRACE
======================================================================
* No imports found for this Module
==== MODULE TRACE END ==== */ /**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
const { OAuth2Client } = __webpack_require__(6781);
"use strict";(()=>{var e={};e.id=2738,e.ids=[2738],e.modules={76154:e=>{e.exports=require("google-auth-library")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},79428:e=>{e.exports=require("buffer")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},81630:e=>{e.exports=require("http")},96762:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},41620:(e,r,t)=>{t.r(r),t.d(r,{config:()=>g,default:()=>p,routeModule:()=>m});var n={};t.r(n),t.d(n,{default:()=>f});var s=t(89947),a=t(2706),i=t(96762);t(72907);var o=t(77538),l=t.n(o),u=t(77619),d=t.n(u);t(29021);let{OAuth2Client:c}=t(76154);async function f(e,r){if("POST"!==e.method)return r.json({success:!1,payload:null,msg:"Failed!"});try{let t=e.headers.authorization,n=d()({key:t,user_id:String(e.query.user_id)});if(!n?.user_id)throw Error("Api Credentials invalid!");if(!n.full_access||!n.sign)return r.json({success:!1,payload:null,msg:"Unauthorized"});let{token:s,clientId:a}=e.body,i=new c(a),o=await i.verifyIdToken({idToken:s,audience:a});if(!o?.getPayload()?.email_verified)return r.json({success:!1,payload:null,msg:"User not verified!"});let l=o.getPayload();r.json({success:!0,payload:l})}catch(t){l()({component:"/api/user/grab-google-user-from-token/main-catch-error",message:t.message,req:e}),r.json({success:!1,payload:null,msg:"User fetch Error"})}}let p=(0,i.M)(n,"default"),g=(0,i.M)(n,"config"),m=new s.PagesAPIRouteModule({definition:{kind:a.A.PAGES_API,page:"/api/user/[user_id]/grab-google-user-from-token",pathname:"/api/user/[user_id]/grab-google-user-from-token",bundlePath:"",filename:""},userland:n})},77538:(e,r,t)=>{let n=t(29021),{IncomingMessage:s}=t(81630);e.exports=async function({user:e,message:r,component:t,noMail:s,req:a}){let i=new Date,o=(()=>{if(!a)return null;try{let e=a.headers["x-forwarded-for"],r=a.headers["x-real-ip"],t=a.headers["cf-connecting-ip"],n=Array.isArray(e)?e[0]:e?.split(",")[0],s=t||n||r||a.socket.remoteAddress;if(!s)return null;return String(s)}catch(e){return null}})();try{let s=`🚀 SERVER ERROR ===========================
Error Message: ${r}
Component: ${t}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(s+=`
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}`),a?.url&&(s+=`
URL: ${a.url}`),a?.body&&(s+=`
Request Body: ${JSON.stringify(a.body,null,4)}`),o&&(s+=`
IP: ${o}`),s+=`
Date: ${i.toDateString()}
========================================`,n.existsSync("./.tmp/error.log")||n.writeFileSync("./.tmp/error.log","","utf-8");let l=n.readFileSync("./.tmp/error.log","utf-8");n.writeFileSync("./.tmp/error.log",s),n.appendFileSync("./.tmp/error.log",`
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
success: false,
payload: null,
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
/**
* User auth
*
* @description Authenticate user
*/ /** @type {string} */ // @ts-ignore
const authorization = req.headers.authorization;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_2___default()({
key: authorization,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) return res.json({
success: false,
payload: null,
msg: "Unauthorized"
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* Grab User data
*
* @description Grab User data
*/ const { token , clientId } = req.body;
const client = new OAuth2Client(clientId);
const ticket = await client.verifyIdToken({
idToken: token,
audience: clientId
});
if (!ticket?.getPayload()?.email_verified) {
return res.json({
success: false,
payload: null,
msg: "User not verified!"
});
}
const payload = ticket.getPayload();
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
res.json({
success: true,
payload
});
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default()({
component: "/api/user/grab-google-user-from-token/main-catch-error",
message: error.message
});
res.json({
success: false,
payload: null,
msg: "User fetch Error"
});
////////////////////////////////////////
}
}
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2163,1007], () => (__webpack_exec__(3973)));
module.exports = __webpack_exports__;
})();
${l}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},77619:(e,r,t)=>{let n=t(29021),s=t(72907);e.exports=({key:e,database:r,table:t,user_id:a})=>{if(!e||!a)return null;try{let i=process.env.DSQL_API_KEYS_PATH;if(!i)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let o=s(e),l=JSON.parse(o||""),u=n.existsSync(`${i}/${l.sign}`);if(String(l.user_id)!==String(a)||!u)return null;if(!l.target_database)return l;if(!r&&l.target_database)return null;let d=l.target_database?.split(",").includes(String(r));if(d&&!l.target_table)return l;if(d&&!t&&l.target_table)return null;if(l.target_table?.split(",").includes(String(t)))return l;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}},72907:(e,r,t)=>{let{scryptSync:n,createDecipheriv:s}=t(55511),{Buffer:a}=t(79428);e.exports=e=>{let r=s("aes-192-cbc",n(process.env.DSQL_ENCRYPTION_PASSWORD||"",process.env.DSQL_ENCRYPTION_SALT||"",24),a.alloc(16,0));try{let t=r.update(e,"hex","utf8");return t+=r.final("utf8")}catch(e){return null}}},2706:(e,r)=>{var t;Object.defineProperty(r,"A",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE"}(t||(t={}))},89947:(e,r,t)=>{e.exports=t(75600)}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=41620);module.exports=t})();
File diff suppressed because one or more lines are too long
@@ -1,294 +1,28 @@
"use strict";
(() => {
var exports = {};
exports.id = 278;
exports.ids = [278];
exports.modules = {
/***/ 2029:
/***/ ((module) => {
module.exports = require("datasquirel/functions/hashPassword");
/***/ }),
/***/ 2261:
/***/ ((module) => {
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 1017:
/***/ ((module) => {
module.exports = require("path");
/***/ }),
/***/ 5425:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { scryptSync , createDecipheriv } = __webpack_require__(6113);
const { Buffer } = __webpack_require__(4300);
/**
* @param {string} encryptedString
* @returns {string | null}
*/ const decrypt = (encryptedString)=>{
const algorithm = "aes-192-cbc";
const password = process.env.DSQL_ENCRYPTION_PASSWORD || "";
const salt = process.env.DSQL_ENCRYPTION_SALT || "";
let key = scryptSync(password, salt, 24);
let iv = Buffer.alloc(16, 0);
// @ts-ignore
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
return null;
}
};
module.exports = decrypt;
/***/ }),
/***/ 5982:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var datasquirel_functions_hashPassword__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2029);
/* harmony import */ var datasquirel_functions_hashPassword__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(datasquirel_functions_hashPassword__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1311);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_4__);
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
"use strict";(()=>{var e={};e.id=2726,e.ids=[2726],e.modules={43499:e=>{e.exports=require("@moduletrace/datasquirel/functions/hashPassword")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},9973:e=>{e.exports=require("serverless-mysql")},79428:e=>{e.exports=require("buffer")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},81630:e=>{e.exports=require("http")},33873:e=>{e.exports=require("path")},96762:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},81725:(e,r,t)=>{t.r(r),t.d(r,{config:()=>S,default:()=>f,routeModule:()=>y});var s={};t.r(s),t.d(s,{default:()=>g});var a=t(89947),n=t(2706),o=t(96762),i=t(43499),l=t.n(i);t(72907);var u=t(77538),c=t.n(u),d=t(57638),p=t.n(d),m=t(77619),_=t.n(m);async function g(e,r){if("POST"!==e.method)return r.json({msg:"Failed!"});try{let t=e.body,{encryptionKey:s,payload:a,database:n,additionalFields:o,email_login:i,email_login_code:u,email_login_field:c,token:d}=t,m=e.headers.authorization,g=_()({key:m,database:n,user_id:String(e.query.user_id)});if(!g?.user_id)throw Error("Api Credentials invalid!");if(!g.full_access||!g.sign)return r.json({success:!1,msg:"Unauthorized"});let f=a.email,S=a.username,y=a.password,h=`datasquirel_user_${g.user_id}_${n}`;if(f?.match(/ /)||S&&S?.match(/ /)||y&&y?.match(/ /))return r.json({success:!1,msg:"Invalid Email/Password format"});let D=y?l()({encryptionKey:s,password:y}):null,E=await p()({queryString:"SELECT * FROM users WHERE email = ? OR username = ?",queryValuesArray:[f,S],database:h.replace(/[^a-z0-9_]/g,"")});if((!E||!E[0])&&!t.social)return r.json({success:!1,payload:null,msg:"No user found"});let A=!1;if(E&&E[0]&&!i)A=D===E[0].password;else if(E&&E[0]&&i&&u&&c){let e=E[0][c];if(!e)throw Error("No code Found!");let[r,t]=e.split("-");if(Date.now()-Number(t)>9e5)throw Error("Code Expired");A=r===u}if(!A)return r.json({success:!1,msg:"Wrong password, no social login validity",payload:null});A&&i&&await p()({queryString:`UPDATE users SET ${c} = ? WHERE email = ? OR username = ?`,queryValuesArray:["",f,S],database:h.replace(/[^a-z0-9_]/g,"")});let R=Math.random().toString(36).substring(2)+"-"+Math.random().toString(36).substring(2),b={id:E[0].id,first_name:E[0].first_name,last_name:E[0].last_name,username:E[0].username,email:E[0].email,phone:E[0].phone,social_id:E[0].social_id,image:E[0].image,image_thumbnail:E[0].image_thumbnail,verification_status:E[0].verification_status,social_login:E[0].social_login,social_platform:E[0].social_platform,csrf_k:R,more_data:E[0].more_user_data,logged_in_status:!0,date:Date.now()},P={success:!0,msg:"Login Successful",payload:b,userId:g.user_id};o&&Array.isArray(o)&&o.length>0&&o.forEach(e=>{b[e]=E[0][e]}),r.json(P)}catch(t){c()({component:"/api/user/login-user/main-catch-error",message:t.message,user:{},req:e}),r.json({success:!1,msg:"Login Failed"})}}t(29021);let f=(0,o.M)(s,"default"),S=(0,o.M)(s,"config"),y=new a.PagesAPIRouteModule({definition:{kind:n.A.PAGES_API,page:"/api/user/[user_id]/login-user",pathname:"/api/user/[user_id]/login-user",bundlePath:"",filename:""},userland:s})},77538:(e,r,t)=>{let s=t(29021),{IncomingMessage:a}=t(81630);e.exports=async function({user:e,message:r,component:t,noMail:a,req:n}){let o=new Date,i=(()=>{if(!n)return null;try{let e=n.headers["x-forwarded-for"],r=n.headers["x-real-ip"],t=n.headers["cf-connecting-ip"],s=Array.isArray(e)?e[0]:e?.split(",")[0],a=t||s||r||n.socket.remoteAddress;if(!a)return null;return String(a)}catch(e){return null}})();try{let a=`🚀 SERVER ERROR ===========================
Error Message: ${r}
Component: ${t}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(a+=`
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}`),n?.url&&(a+=`
URL: ${n.url}`),n?.body&&(a+=`
Request Body: ${JSON.stringify(n.body,null,4)}`),i&&(a+=`
IP: ${i}`),a+=`
Date: ${o.toDateString()}
========================================`,s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let l=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",a),s.appendFileSync("./.tmp/error.log",`
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* API handler
* ==============================================================================
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
/** @type {import("@/package-shared/types").PackageUserLoginRequestBody} */ const reqBody = req.body;
const { encryptionKey , payload , database , additionalFields , email_login , email_login_code , email_login_field , token , } = reqBody;
const authorization = req.headers.authorization;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_4___default()({
key: authorization,
database,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) return res.json({
success: false,
msg: "Unauthorized"
});
/**
* User auth
*
* @description Authenticate user
*/ const email = payload.email;
const username = payload.username;
const password = payload.password;
const dbFullName = `datasquirel_user_${apiCred.user_id}_${database}`;
/**
* Check input validity
*
* @description Check input validity
*/ if (email?.match(/ /) || username && username?.match(/ /) || password && password?.match(/ /)) {
return res.json({
success: false,
msg: "Invalid Email/Password format"
});
}
/**
* Password hash
*
* @description Password hash
*/ let hashedPassword = password ? datasquirel_functions_hashPassword__WEBPACK_IMPORTED_MODULE_0___default()({
encryptionKey: encryptionKey,
password: password
}) : null;
let isSocialValidated = false;
let loginFailureReason = null;
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
let foundUser = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3___default()({
queryString: `SELECT * FROM users WHERE email = ? OR username = ?`,
queryValuesArray: [
email,
username
],
database: dbFullName.replace(/[^a-z0-9_]/g, "")
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
if ((!foundUser || !foundUser[0]) && !reqBody.social) return res.json({
success: false,
payload: null,
msg: "No user found"
});
let isPasswordCorrect = false;
if (foundUser && foundUser[0] && !email_login) {
isPasswordCorrect = hashedPassword === foundUser[0].password;
} else if (foundUser && foundUser[0] && email_login && email_login_code && email_login_field) {
/** @type {string} */ const tempCode = foundUser[0][email_login_field];
if (!tempCode) throw new Error("No code Found!");
const tempCodeArray = tempCode.split("-");
const [code, codeDate] = tempCodeArray;
const millisecond15mins = 1000 * 60 * 15;
if (Date.now() - Number(codeDate) > millisecond15mins) {
throw new Error("Code Expired");
}
isPasswordCorrect = code === email_login_code;
}
let socialUserValid = false;
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
if (!isPasswordCorrect && !socialUserValid) {
return res.json({
success: false,
msg: "Wrong password, no social login validity",
payload: null
});
}
if (isPasswordCorrect && email_login) {
const resetTempCode = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3___default()({
queryString: `UPDATE users SET ${email_login_field} = ? WHERE email = ? OR username = ?`,
queryValuesArray: [
"",
email,
username
],
database: dbFullName.replace(/[^a-z0-9_]/g, "")
});
}
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
let csrfKey = Math.random().toString(36).substring(2) + "-" + Math.random().toString(36).substring(2);
let userPayload = {
id: foundUser[0].id,
first_name: foundUser[0].first_name,
last_name: foundUser[0].last_name,
username: foundUser[0].username,
email: foundUser[0].email,
phone: foundUser[0].phone,
social_id: foundUser[0].social_id,
image: foundUser[0].image,
image_thumbnail: foundUser[0].image_thumbnail,
verification_status: foundUser[0].verification_status,
social_login: foundUser[0].social_login,
social_platform: foundUser[0].social_platform,
csrf_k: csrfKey,
more_data: foundUser[0].more_user_data,
logged_in_status: true,
date: Date.now()
};
const resposeObject = {
success: true,
msg: "Login Successful",
payload: userPayload,
userId: apiCred.user_id
};
if (additionalFields && Array.isArray(additionalFields) && additionalFields.length > 0) {
additionalFields.forEach((key)=>{
// @ts-ignore
userPayload[key] = foundUser[0][key];
});
}
// if (token) {
// resposeObject.token =
// }
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/** ********************* Send Response */ res.json(resposeObject);
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2___default()({
component: "/api/user/login-user/main-catch-error",
message: error.message,
user: {}
});
res.json({
success: false,
msg: "Login Failed"
});
////////////////////////////////////////
}
}
${l}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},77619:(e,r,t)=>{let s=t(29021),a=t(72907);e.exports=({key:e,database:r,table:t,user_id:n})=>{if(!e||!n)return null;try{let o=process.env.DSQL_API_KEYS_PATH;if(!o)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let i=a(e),l=JSON.parse(i||""),u=s.existsSync(`${o}/${l.sign}`);if(String(l.user_id)!==String(n)||!u)return null;if(!l.target_database)return l;if(!r&&l.target_database)return null;let c=l.target_database?.split(",").includes(String(r));if(c&&!l.target_table)return l;if(c&&!t&&l.target_table)return null;if(l.target_table?.split(",").includes(String(t)))return l;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}},72907:(e,r,t)=>{let{scryptSync:s,createDecipheriv:a}=t(55511),{Buffer:n}=t(79428);e.exports=e=>{let r=a("aes-192-cbc",s(process.env.DSQL_ENCRYPTION_PASSWORD||"",process.env.DSQL_ENCRYPTION_SALT||"",24),n.alloc(16,0));try{let t=r.update(e,"hex","utf8");return t+=r.final("utf8")}catch(e){return null}}},30003:e=>{e.exports=/^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/},6061:(e,r,t)=>{let s=t(72907),a=t(30003);e.exports=async function({unparsedResults:e,tableSchema:r}){let t=[];try{for(let n=0;n<e.length;n++){let o=e[n],i=Object.keys(o);for(let e=0;e<i.length;e++){let t=i[e],n=r?.fields[e];if(t?.match(a))continue;let l=o[t];("number"==typeof l||l)&&n?.encrypted&&l?.match(/./)&&(o[t]=s(l))}t.push(o)}return t}catch(r){return console.log("ERROR in parseDbResults Function =>",r.message),e}}},48225:(e,r,t)=>{let s=t(29021);e.exports=async function({user:e,message:r,component:t,noMail:a}){let n=`🚀 SERVER ERROR ===========================
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}
Error Message: ${r}
Component: ${t}
Date: ${Date()}
========================================`;s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let o=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",n),s.appendFileSync("./.tmp/error.log",`
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2224,2163,3017,3403,8326,1311,1007], () => (__webpack_exec__(5982)));
module.exports = __webpack_exports__;
})();
${o}`)}},57638:(e,r,t)=>{t(29021);let s=t(6061),a=t(48225),n=t(51348),o=t(21339);e.exports=async function({queryString:e,queryValuesArray:r,database:t,tableSchema:i}){let l;let u=!!t?.match(/^datasquirel$/),c=u?n:o;try{l=e&&r&&Array.isArray(r)&&r[0]?u?await c(e,r):await c({paradigm:"Full Access",database:t,queryString:e,queryValues:r}):u?await c(e):await c({paradigm:"Full Access",database:t,queryString:e})}catch(e){a({component:"varDatabaseDbHandler/lines-29-32",message:e.message})}if(l&&i)try{let e=l;return await s({unparsedResults:e,tableSchema:i})}catch(e){return console.log("\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>",t,e),a({component:"varDatabaseDbHandler/lines-52-53",message:e.message}),null}else if(l)return l;else return null}},51348:(e,r,t)=>{let s=t(9973),a=t(21580),n=s({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_USERNAME,password:process.env.DSQL_DB_PASSWORD,database:process.env.DSQL_DB_NAME,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4",ssl:a()}});async function o(...e){try{let r=await n.query(...e);return await n.end(),JSON.parse(JSON.stringify(r))}catch(e){return console.log("DB Error =>",e),{success:!1,error:e.message}}}e.exports=o},21339:(e,r,t)=>{let s=t(29021);t(33873);let a=t(9973),n=t(21580),o=a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,charset:"utf8mb4",ssl:n()}});e.exports=function({paradigm:e,database:r,queryString:t,queryValues:i}){try{return new Promise((l,u)=>{let c=!!e?.match(/full.access|^fa$/i);try{function d(e){o.end(),l(JSON.parse(JSON.stringify(e)))}function p(e){o.end(),l({error:e.message,queryStringGenerated:t,queryValuesGenerated:i,sql:e.sql})}o=c?a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_FULL_ACCESS_USERNAME,password:process.env.DSQL_DB_FULL_ACCESS_PASSWORD,database:r,ssl:n()}}):a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,database:r,ssl:n()}}),i&&Array.isArray(i)&&i[0]?o.query(t,i).then(d).catch(p):o.query(t).then(d).catch(p)}catch(e){s.appendFileSync("./.tmp/dbErrorLogs.txt",e.message+"\n"+Date()+"\n\n\n","utf8"),l({error:e.message})}})}catch(e){return{success:!1,error:e.message}}}},21580:(e,r,t)=>{let s=t(29021);e.exports=function(){let e=process.env.DSQL_SSL_DIR;if(!e?.match(/./))return;let r=`${e}/ca-cert.pem`;if(!s.existsSync(r)){console.log(`${r} does not exist`);return}return{ca:s.readFileSync(`${e}/ca-cert.pem`)}}},2706:(e,r)=>{var t;Object.defineProperty(r,"A",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE"}(t||(t={}))},89947:(e,r,t)=>{e.exports=t(75600)}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=81725);module.exports=t})();
File diff suppressed because one or more lines are too long
@@ -1,222 +1,28 @@
"use strict";
(() => {
var exports = {};
exports.id = 1594;
exports.ids = [1594];
exports.modules = {
/***/ 2261:
/***/ ((module) => {
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 1017:
/***/ ((module) => {
module.exports = require("path");
/***/ }),
/***/ 5425:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { scryptSync , createDecipheriv } = __webpack_require__(6113);
const { Buffer } = __webpack_require__(4300);
/**
* @param {string} encryptedString
* @returns {string | null}
*/ const decrypt = (encryptedString)=>{
const algorithm = "aes-192-cbc";
const password = process.env.DSQL_ENCRYPTION_PASSWORD || "";
const salt = process.env.DSQL_ENCRYPTION_SALT || "";
let key = scryptSync(password, salt, 24);
let iv = Buffer.alloc(16, 0);
// @ts-ignore
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
return null;
}
};
module.exports = decrypt;
/***/ }),
/***/ 8699:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1311);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__);
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
"use strict";(()=>{var e={};e.id=4458,e.ids=[4458],e.modules={75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},9973:e=>{e.exports=require("serverless-mysql")},79428:e=>{e.exports=require("buffer")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},81630:e=>{e.exports=require("http")},33873:e=>{e.exports=require("path")},96762:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},62553:(e,r,t)=>{t.r(r),t.d(r,{config:()=>g,default:()=>m,routeModule:()=>S});var s={};t.r(s),t.d(s,{default:()=>_});var a=t(89947),n=t(2706),i=t(96762);t(72907);var o=t(77538),l=t.n(o),u=t(57638),c=t.n(u),d=t(77619),p=t.n(d);async function _(e,r){if("POST"!==e.method)return r.json({msg:"Failed!"});try{let{existingUser:t,database:s,additionalFields:a}=e.body,n=e.headers.authorization,i=p()({key:n,database:s,user_id:String(e.query.user_id)});if(!i?.user_id)throw Error("Api Credentials invalid!");if(!i.full_access||!i.sign)return r.json({success:!1,msg:"Unauthorized"});let o=`datasquirel_user_${i.user_id}_${s}`,l=t?.id&&t.id.toString().match(/./)?await c()({queryString:"SELECT * FROM users WHERE id=?",queryValuesArray:[t.id.toString()],database:o.replace(/[^a-z0-9_]/g,"")}):null;if(!l||!l[0])return r.json({success:!1,payload:null,msg:"No user found"});let u=Math.random().toString(36).substring(2)+"-"+Math.random().toString(36).substring(2),d={id:l[0].id,first_name:l[0].first_name,last_name:l[0].last_name,username:l[0].username,email:l[0].email,phone:l[0].phone,social_id:l[0].social_id,image:l[0].image,image_thumbnail:l[0].image_thumbnail,verification_status:l[0].verification_status,social_login:l[0].social_login,social_platform:l[0].social_platform,csrf_k:u,more_data:l[0].more_user_data,logged_in_status:!0,date:Date.now()};a&&Array.isArray(a)&&a.length>0&&a.forEach(e=>{d[e]=l[0][e]}),r.json({success:!0,msg:"Login Successful",payload:d,userId:i.user_id})}catch(t){l()({component:"/api/user/reauth-user/main-catch-error",message:t.message,user:{},req:e}),r.json({success:!1,msg:"Login Failed"})}}t(29021);let m=(0,i.M)(s,"default"),g=(0,i.M)(s,"config"),S=new a.PagesAPIRouteModule({definition:{kind:n.A.PAGES_API,page:"/api/user/[user_id]/reauth-user",pathname:"/api/user/[user_id]/reauth-user",bundlePath:"",filename:""},userland:s})},77538:(e,r,t)=>{let s=t(29021),{IncomingMessage:a}=t(81630);e.exports=async function({user:e,message:r,component:t,noMail:a,req:n}){let i=new Date,o=(()=>{if(!n)return null;try{let e=n.headers["x-forwarded-for"],r=n.headers["x-real-ip"],t=n.headers["cf-connecting-ip"],s=Array.isArray(e)?e[0]:e?.split(",")[0],a=t||s||r||n.socket.remoteAddress;if(!a)return null;return String(a)}catch(e){return null}})();try{let a=`🚀 SERVER ERROR ===========================
Error Message: ${r}
Component: ${t}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(a+=`
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}`),n?.url&&(a+=`
URL: ${n.url}`),n?.body&&(a+=`
Request Body: ${JSON.stringify(n.body,null,4)}`),o&&(a+=`
IP: ${o}`),a+=`
Date: ${i.toDateString()}
========================================`,s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let l=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",a),s.appendFileSync("./.tmp/error.log",`
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* API handler
* ==============================================================================
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
const reqBody = req.body;
/** @type {{ existingUser:import("@/package-shared/types").UserType, database:string, additionalFields?: any}} */ const { existingUser , database , additionalFields } = reqBody;
/** @type {string} */ // @ts-ignore
const authorization = req.headers.authorization;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default()({
key: authorization,
database,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) return res.json({
success: false,
msg: "Unauthorized"
});
/**
* User auth
*
* @description Authenticate user
*/ const dbFullName = `datasquirel_user_${apiCred.user_id}_${database}`;
/**
* GRAB user
*
* @description GRAB user
*/ let foundUser = existingUser?.id && existingUser.id.toString().match(/./) ? await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_2___default()({
queryString: `SELECT * FROM users WHERE id=?`,
queryValuesArray: [
existingUser.id.toString()
],
database: dbFullName.replace(/[^a-z0-9_]/g, "")
}) : null;
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
if (!foundUser || !foundUser[0]) return res.json({
success: false,
payload: null,
msg: "No user found"
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
let csrfKey = Math.random().toString(36).substring(2) + "-" + Math.random().toString(36).substring(2);
let userPayload = {
id: foundUser[0].id,
first_name: foundUser[0].first_name,
last_name: foundUser[0].last_name,
username: foundUser[0].username,
email: foundUser[0].email,
phone: foundUser[0].phone,
social_id: foundUser[0].social_id,
image: foundUser[0].image,
image_thumbnail: foundUser[0].image_thumbnail,
verification_status: foundUser[0].verification_status,
social_login: foundUser[0].social_login,
social_platform: foundUser[0].social_platform,
csrf_k: csrfKey,
more_data: foundUser[0].more_user_data,
logged_in_status: true,
date: Date.now()
};
if (additionalFields && Array.isArray(additionalFields) && additionalFields.length > 0) {
additionalFields.forEach((key)=>{
// @ts-ignore
userPayload[key] = foundUser[0][key];
});
}
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/** ********************* Send Response */ res.json({
success: true,
msg: "Login Successful",
payload: userPayload,
userId: apiCred.user_id
});
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_1___default()({
component: "/api/user/reauth-user/main-catch-error",
message: error.message,
user: {}
});
res.json({
success: false,
msg: "Login Failed"
});
////////////////////////////////////////
}
}
${l}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},77619:(e,r,t)=>{let s=t(29021),a=t(72907);e.exports=({key:e,database:r,table:t,user_id:n})=>{if(!e||!n)return null;try{let i=process.env.DSQL_API_KEYS_PATH;if(!i)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let o=a(e),l=JSON.parse(o||""),u=s.existsSync(`${i}/${l.sign}`);if(String(l.user_id)!==String(n)||!u)return null;if(!l.target_database)return l;if(!r&&l.target_database)return null;let c=l.target_database?.split(",").includes(String(r));if(c&&!l.target_table)return l;if(c&&!t&&l.target_table)return null;if(l.target_table?.split(",").includes(String(t)))return l;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}},72907:(e,r,t)=>{let{scryptSync:s,createDecipheriv:a}=t(55511),{Buffer:n}=t(79428);e.exports=e=>{let r=a("aes-192-cbc",s(process.env.DSQL_ENCRYPTION_PASSWORD||"",process.env.DSQL_ENCRYPTION_SALT||"",24),n.alloc(16,0));try{let t=r.update(e,"hex","utf8");return t+=r.final("utf8")}catch(e){return null}}},30003:e=>{e.exports=/^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/},6061:(e,r,t)=>{let s=t(72907),a=t(30003);e.exports=async function({unparsedResults:e,tableSchema:r}){let t=[];try{for(let n=0;n<e.length;n++){let i=e[n],o=Object.keys(i);for(let e=0;e<o.length;e++){let t=o[e],n=r?.fields[e];if(t?.match(a))continue;let l=i[t];("number"==typeof l||l)&&n?.encrypted&&l?.match(/./)&&(i[t]=s(l))}t.push(i)}return t}catch(r){return console.log("ERROR in parseDbResults Function =>",r.message),e}}},48225:(e,r,t)=>{let s=t(29021);e.exports=async function({user:e,message:r,component:t,noMail:a}){let n=`🚀 SERVER ERROR ===========================
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}
Error Message: ${r}
Component: ${t}
Date: ${Date()}
========================================`;s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let i=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",n),s.appendFileSync("./.tmp/error.log",`
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2224,2163,3017,3403,8326,1311,1007], () => (__webpack_exec__(8699)));
module.exports = __webpack_exports__;
})();
${i}`)}},57638:(e,r,t)=>{t(29021);let s=t(6061),a=t(48225),n=t(51348),i=t(21339);e.exports=async function({queryString:e,queryValuesArray:r,database:t,tableSchema:o}){let l;let u=!!t?.match(/^datasquirel$/),c=u?n:i;try{l=e&&r&&Array.isArray(r)&&r[0]?u?await c(e,r):await c({paradigm:"Full Access",database:t,queryString:e,queryValues:r}):u?await c(e):await c({paradigm:"Full Access",database:t,queryString:e})}catch(e){a({component:"varDatabaseDbHandler/lines-29-32",message:e.message})}if(l&&o)try{let e=l;return await s({unparsedResults:e,tableSchema:o})}catch(e){return console.log("\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>",t,e),a({component:"varDatabaseDbHandler/lines-52-53",message:e.message}),null}else if(l)return l;else return null}},51348:(e,r,t)=>{let s=t(9973),a=t(21580),n=s({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_USERNAME,password:process.env.DSQL_DB_PASSWORD,database:process.env.DSQL_DB_NAME,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4",ssl:a()}});async function i(...e){try{let r=await n.query(...e);return await n.end(),JSON.parse(JSON.stringify(r))}catch(e){return console.log("DB Error =>",e),{success:!1,error:e.message}}}e.exports=i},21339:(e,r,t)=>{let s=t(29021);t(33873);let a=t(9973),n=t(21580),i=a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,charset:"utf8mb4",ssl:n()}});e.exports=function({paradigm:e,database:r,queryString:t,queryValues:o}){try{return new Promise((l,u)=>{let c=!!e?.match(/full.access|^fa$/i);try{function d(e){i.end(),l(JSON.parse(JSON.stringify(e)))}function p(e){i.end(),l({error:e.message,queryStringGenerated:t,queryValuesGenerated:o,sql:e.sql})}i=c?a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_FULL_ACCESS_USERNAME,password:process.env.DSQL_DB_FULL_ACCESS_PASSWORD,database:r,ssl:n()}}):a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,database:r,ssl:n()}}),o&&Array.isArray(o)&&o[0]?i.query(t,o).then(d).catch(p):i.query(t).then(d).catch(p)}catch(e){s.appendFileSync("./.tmp/dbErrorLogs.txt",e.message+"\n"+Date()+"\n\n\n","utf8"),l({error:e.message})}})}catch(e){return{success:!1,error:e.message}}}},21580:(e,r,t)=>{let s=t(29021);e.exports=function(){let e=process.env.DSQL_SSL_DIR;if(!e?.match(/./))return;let r=`${e}/ca-cert.pem`;if(!s.existsSync(r)){console.log(`${r} does not exist`);return}return{ca:s.readFileSync(`${e}/ca-cert.pem`)}}},2706:(e,r)=>{var t;Object.defineProperty(r,"A",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE"}(t||(t={}))},89947:(e,r,t)=>{e.exports=t(75600)}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=62553);module.exports=t})();
File diff suppressed because one or more lines are too long
@@ -1,287 +1,28 @@
(() => {
var exports = {};
exports.id = 7135;
exports.ids = [7135];
exports.modules = {
/***/ 5184:
/***/ ((module) => {
"use strict";
module.exports = require("nodemailer");
/***/ }),
/***/ 2261:
/***/ ((module) => {
"use strict";
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
"use strict";
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
"use strict";
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
"use strict";
module.exports = require("fs");
/***/ }),
/***/ 1017:
/***/ ((module) => {
"use strict";
module.exports = require("path");
/***/ }),
/***/ 5425:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// @ts-check
const { scryptSync , createDecipheriv } = __webpack_require__(6113);
const { Buffer } = __webpack_require__(4300);
/**
* @param {string} encryptedString
* @returns {string | null}
*/ const decrypt = (encryptedString)=>{
const algorithm = "aes-192-cbc";
const password = process.env.DSQL_ENCRYPTION_PASSWORD || "";
const salt = process.env.DSQL_ENCRYPTION_SALT || "";
let key = scryptSync(password, salt, 24);
let iv = Buffer.alloc(16, 0);
// @ts-ignore
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
return null;
}
};
module.exports = decrypt;
/***/ }),
/***/ 5382:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// @ts-check
const { createHmac } = __webpack_require__(6113);
//
/**
* # Password Hash function
* @param {string} password
* @returns
*/ function hashPassword(password) {
const hmac = createHmac("sha512", process.env.DSQL_ENCRYPTION_PASSWORD || "");
hmac.update(password);
let hashed = hmac.digest("base64");
return hashed;
}
exports.hashPassword = hashPassword; // export const comparePasswords = async (password) => {
// const hmac = createHmac("sha512", process.env.DSQL_ENCRYPTION_PASSWORD);
// hmac.update(password);
// let hashed = hmac.digest("base64");
// let dbPass = await global.DB_HANDLER(`SELECT * FROM users WHERE password = '${hashed}'`);
// console.log(dbPass);
// return dbPass;
// };
/***/ }),
/***/ 8233:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _package_shared_functions_backend_passwordHash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5382);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1311);
/* harmony import */ var _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_4__);
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
const nodemailer = __webpack_require__(5184);
const path = __webpack_require__(1017);
"use strict";(()=>{var e={};e.id=2860,e.ids=[2860],e.modules={75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},21572:e=>{e.exports=require("nodemailer")},9973:e=>{e.exports=require("serverless-mysql")},79428:e=>{e.exports=require("buffer")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},81630:e=>{e.exports=require("http")},33873:e=>{e.exports=require("path")},96762:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},93919:(e,r,t)=>{t.r(r),t.d(r,{config:()=>f,default:()=>m,routeModule:()=>g});var s={};t.r(s),t.d(s,{default:()=>S});var a=t(89947),n=t(2706),o=t(96762);t(72907),t(18481);var l=t(77538),i=t.n(l),u=t(57638),c=t.n(u),d=t(77619),p=t.n(d);t(29021);let _=t(21572);async function S(e,r){if("POST"!==e.method)return r.json({msg:"Failed!"});try{let{email:t,database:s,email_login_field:a,mail_domain:n,mail_password:o,mail_username:l,mail_port:i,sender:u,html:d}=e.body,S=e.headers.authorization,m=p()({key:S,database:s,user_id:String(e.query.user_id)});if(!m?.user_id)throw Error("Api Credentials invalid!");if(!m.full_access||!m.sign)return r.json({success:!1,msg:"Unauthorized"});let f=`datasquirel_user_${m.user_id}_${s}`;if(t?.match(/ /))return r.json({success:!1,msg:"Invalid Email/Password format"});let g=await c()({queryString:"SELECT * FROM users WHERE email = ?",queryValuesArray:[t],database:f.replace(/[^a-z0-9_]/g,"")});if(!g||!g[0])return r.json({success:!1,payload:null,msg:"No user found"});if(g&&g[0]&&a){let e=function(){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",r="";for(let t=0;t<8;t++)r+=e[Math.floor(Math.random()*e.length)];return r}(),r=_.createTransport({host:n||process.env.DSQL_MAIL_HOST,port:i||465,secure:!0,auth:{user:l||process.env.DSQL_MAIL_EMAIL,pass:o||process.env.DSQL_MAIL_PASSWORD}}),s={};s.from=`"Datasquirel SSO" <${u||"support@datasquirel.com"}>`,s.sender=u||"support@datasquirel.com",s.to=t,s.subject="One Time Login Code",s.html=d.replace(/{{code}}/,e);let p=await r.sendMail(s);if(!p?.accepted)throw Error("Mail not Sent!");await c()({queryString:`UPDATE users SET ${a} = ? WHERE email = ?`,queryValuesArray:[e+`-${Date.now()}`,t],database:f.replace(/[^a-z0-9_]/g,"")})}r.json({success:!0,msg:"Success"})}catch(t){i()({component:"/api/user/login-user/main-catch-error",message:t.message,user:{},req:e}),r.json({success:!1,msg:"Failed: "+t.message})}}t(33873);let m=(0,o.M)(s,"default"),f=(0,o.M)(s,"config"),g=new a.PagesAPIRouteModule({definition:{kind:n.A.PAGES_API,page:"/api/user/[user_id]/send-email-code",pathname:"/api/user/[user_id]/send-email-code",bundlePath:"",filename:""},userland:s})},77538:(e,r,t)=>{let s=t(29021),{IncomingMessage:a}=t(81630);e.exports=async function({user:e,message:r,component:t,noMail:a,req:n}){let o=new Date,l=(()=>{if(!n)return null;try{let e=n.headers["x-forwarded-for"],r=n.headers["x-real-ip"],t=n.headers["cf-connecting-ip"],s=Array.isArray(e)?e[0]:e?.split(",")[0],a=t||s||r||n.socket.remoteAddress;if(!a)return null;return String(a)}catch(e){return null}})();try{let a=`🚀 SERVER ERROR ===========================
Error Message: ${r}
Component: ${t}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(a+=`
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}`),n?.url&&(a+=`
URL: ${n.url}`),n?.body&&(a+=`
Request Body: ${JSON.stringify(n.body,null,4)}`),l&&(a+=`
IP: ${l}`),a+=`
Date: ${o.toDateString()}
========================================`,s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let i=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",a),s.appendFileSync("./.tmp/error.log",`
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* API handler
* ==============================================================================
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
const reqBody = req.body;
const { email , database , email_login_field , mail_domain , mail_password , mail_username , mail_port , sender , html , } = reqBody;
const authorization = req.headers.authorization;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_4___default()({
key: authorization,
database,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) return res.json({
success: false,
msg: "Unauthorized"
});
/**
* User auth
*
* @description Authenticate user
*/ const dbFullName = `datasquirel_user_${apiCred.user_id}_${database}`;
/**
* Check input validity
*
* @description Check input validity
*/ if (email?.match(/ /)) {
return res.json({
success: false,
msg: "Invalid Email/Password format"
});
}
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
let foundUser = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3___default()({
queryString: `SELECT * FROM users WHERE email = ?`,
queryValuesArray: [
email
],
database: dbFullName.replace(/[^a-z0-9_]/g, "")
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
if (!foundUser || !foundUser[0]) {
return res.json({
success: false,
payload: null,
msg: "No user found"
});
}
function generateCode() {
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
let code = "";
for(let i = 0; i < 8; i++){
code += chars[Math.floor(Math.random() * chars.length)];
}
return code;
}
if (foundUser && foundUser[0] && email_login_field) {
const tempCode = generateCode();
let transporter = nodemailer.createTransport({
host: mail_domain || process.env.DSQL_MAIL_HOST,
port: mail_port || 465,
secure: true,
auth: {
user: mail_username || process.env.DSQL_MAIL_EMAIL,
pass: mail_password || process.env.DSQL_MAIL_PASSWORD
}
});
let mailObject = {};
mailObject["from"] = `"Datasquirel SSO" <${sender || "support@datasquirel.com"}>`;
mailObject["sender"] = sender || "support@datasquirel.com";
mailObject["to"] = email;
mailObject["subject"] = "One Time Login Code";
mailObject["html"] = html.replace(/{{code}}/, tempCode);
const info = await transporter.sendMail(mailObject);
if (!info?.accepted) throw new Error("Mail not Sent!");
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
let setTempCode = await _package_shared_functions_backend_varDatabaseDbHandler__WEBPACK_IMPORTED_MODULE_3___default()({
queryString: `UPDATE users SET ${email_login_field} = ? WHERE email = ?`,
queryValuesArray: [
tempCode + `-${Date.now()}`,
email
],
database: dbFullName.replace(/[^a-z0-9_]/g, "")
});
}
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
res.json({
success: true,
msg: "Success"
});
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2___default()({
component: "/api/user/login-user/main-catch-error",
message: error.message,
user: {}
});
res.json({
success: false,
msg: "Failed: " + error.message
});
////////////////////////////////////////
}
}
${i}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},77619:(e,r,t)=>{let s=t(29021),a=t(72907);e.exports=({key:e,database:r,table:t,user_id:n})=>{if(!e||!n)return null;try{let o=process.env.DSQL_API_KEYS_PATH;if(!o)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let l=a(e),i=JSON.parse(l||""),u=s.existsSync(`${o}/${i.sign}`);if(String(i.user_id)!==String(n)||!u)return null;if(!i.target_database)return i;if(!r&&i.target_database)return null;let c=i.target_database?.split(",").includes(String(r));if(c&&!i.target_table)return i;if(c&&!t&&i.target_table)return null;if(i.target_table?.split(",").includes(String(t)))return i;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}},72907:(e,r,t)=>{let{scryptSync:s,createDecipheriv:a}=t(55511),{Buffer:n}=t(79428);e.exports=e=>{let r=a("aes-192-cbc",s(process.env.DSQL_ENCRYPTION_PASSWORD||"",process.env.DSQL_ENCRYPTION_SALT||"",24),n.alloc(16,0));try{let t=r.update(e,"hex","utf8");return t+=r.final("utf8")}catch(e){return null}}},30003:e=>{e.exports=/^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/},6061:(e,r,t)=>{let s=t(72907),a=t(30003);e.exports=async function({unparsedResults:e,tableSchema:r}){let t=[];try{for(let n=0;n<e.length;n++){let o=e[n],l=Object.keys(o);for(let e=0;e<l.length;e++){let t=l[e],n=r?.fields[e];if(t?.match(a))continue;let i=o[t];("number"==typeof i||i)&&n?.encrypted&&i?.match(/./)&&(o[t]=s(i))}t.push(o)}return t}catch(r){return console.log("ERROR in parseDbResults Function =>",r.message),e}}},18481:(e,r,t)=>{let{createHmac:s}=t(55511);r.hashPassword=function(e){let r=s("sha512",process.env.DSQL_ENCRYPTION_PASSWORD||"");return r.update(e),r.digest("base64")}},48225:(e,r,t)=>{let s=t(29021);e.exports=async function({user:e,message:r,component:t,noMail:a}){let n=`🚀 SERVER ERROR ===========================
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}
Error Message: ${r}
Component: ${t}
Date: ${Date()}
========================================`;s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let o=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",n),s.appendFileSync("./.tmp/error.log",`
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2224,2163,3017,3403,8326,1311,1007], () => (__webpack_exec__(8233)));
module.exports = __webpack_exports__;
})();
${o}`)}},57638:(e,r,t)=>{t(29021);let s=t(6061),a=t(48225),n=t(51348),o=t(21339);e.exports=async function({queryString:e,queryValuesArray:r,database:t,tableSchema:l}){let i;let u=!!t?.match(/^datasquirel$/),c=u?n:o;try{i=e&&r&&Array.isArray(r)&&r[0]?u?await c(e,r):await c({paradigm:"Full Access",database:t,queryString:e,queryValues:r}):u?await c(e):await c({paradigm:"Full Access",database:t,queryString:e})}catch(e){a({component:"varDatabaseDbHandler/lines-29-32",message:e.message})}if(i&&l)try{let e=i;return await s({unparsedResults:e,tableSchema:l})}catch(e){return console.log("\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>",t,e),a({component:"varDatabaseDbHandler/lines-52-53",message:e.message}),null}else if(i)return i;else return null}},51348:(e,r,t)=>{let s=t(9973),a=t(21580),n=s({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_USERNAME,password:process.env.DSQL_DB_PASSWORD,database:process.env.DSQL_DB_NAME,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4",ssl:a()}});async function o(...e){try{let r=await n.query(...e);return await n.end(),JSON.parse(JSON.stringify(r))}catch(e){return console.log("DB Error =>",e),{success:!1,error:e.message}}}e.exports=o},21339:(e,r,t)=>{let s=t(29021);t(33873);let a=t(9973),n=t(21580),o=a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,charset:"utf8mb4",ssl:n()}});e.exports=function({paradigm:e,database:r,queryString:t,queryValues:l}){try{return new Promise((i,u)=>{let c=!!e?.match(/full.access|^fa$/i);try{function d(e){o.end(),i(JSON.parse(JSON.stringify(e)))}function p(e){o.end(),i({error:e.message,queryStringGenerated:t,queryValuesGenerated:l,sql:e.sql})}o=c?a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_FULL_ACCESS_USERNAME,password:process.env.DSQL_DB_FULL_ACCESS_PASSWORD,database:r,ssl:n()}}):a({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,database:r,ssl:n()}}),l&&Array.isArray(l)&&l[0]?o.query(t,l).then(d).catch(p):o.query(t).then(d).catch(p)}catch(e){s.appendFileSync("./.tmp/dbErrorLogs.txt",e.message+"\n"+Date()+"\n\n\n","utf8"),i({error:e.message})}})}catch(e){return{success:!1,error:e.message}}}},21580:(e,r,t)=>{let s=t(29021);e.exports=function(){let e=process.env.DSQL_SSL_DIR;if(!e?.match(/./))return;let r=`${e}/ca-cert.pem`;if(!s.existsSync(r)){console.log(`${r} does not exist`);return}return{ca:s.readFileSync(`${e}/ca-cert.pem`)}}},2706:(e,r)=>{var t;Object.defineProperty(r,"A",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE"}(t||(t={}))},89947:(e,r,t)=>{e.exports=t(75600)}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=93919);module.exports=t})();
File diff suppressed because one or more lines are too long
@@ -1,200 +1,28 @@
"use strict";
(() => {
var exports = {};
exports.id = 8316;
exports.ids = [8316];
exports.modules = {
/***/ 6109:
/***/ ((module) => {
module.exports = require("sanitize-html");
/***/ }),
/***/ 2261:
/***/ ((module) => {
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 1017:
/***/ ((module) => {
module.exports = require("path");
/***/ }),
/***/ 5425:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// @ts-check
const { scryptSync , createDecipheriv } = __webpack_require__(6113);
const { Buffer } = __webpack_require__(4300);
/**
* @param {string} encryptedString
* @returns {string | null}
*/ const decrypt = (encryptedString)=>{
const algorithm = "aes-192-cbc";
const password = process.env.DSQL_ENCRYPTION_PASSWORD || "";
const salt = process.env.DSQL_ENCRYPTION_SALT || "";
let key = scryptSync(password, salt, 24);
let iv = Buffer.alloc(16, 0);
// @ts-ignore
const decipher = createDecipheriv(algorithm, key, iv);
try {
let decrypted = decipher.update(encryptedString, "hex", "utf8");
decrypted += decipher.final("utf8");
return decrypted;
} catch (error) {
return null;
}
};
module.exports = decrypt;
/***/ }),
/***/ 2437:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ handler)
/* harmony export */ });
/* harmony import */ var _package_shared_functions_backend_db_updateDbEntry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5886);
/* harmony import */ var _package_shared_functions_backend_db_updateDbEntry__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_db_updateDbEntry__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5425);
/* harmony import */ var _package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_decrypt__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2163);
/* harmony import */ var _functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1007);
/* harmony import */ var _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3__);
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/ const fs = __webpack_require__(7147);
"use strict";(()=>{var e={};e.id=8288,e.ids=[8288],e.modules={75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},72583:e=>{e.exports=require("sanitize-html")},9973:e=>{e.exports=require("serverless-mysql")},79428:e=>{e.exports=require("buffer")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},81630:e=>{e.exports=require("http")},33873:e=>{e.exports=require("path")},96762:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},34453:(e,r,t)=>{t.r(r),t.d(r,{config:()=>_,default:()=>f,routeModule:()=>g});var s={};t.r(s),t.d(s,{default:()=>S});var n=t(89947),a=t(2706),o=t(96762),i=t(33364),l=t.n(i);t(72907);var u=t(77538),c=t.n(u),p=t(77619),d=t.n(p);async function S(e,r){if("POST"!==e.method)return r.json({success:!1,payload:null,msg:"Failed!"});try{let t=e.headers.authorization,{payload:s,database:n}=e.body,a=d()({key:t,database:n,user_id:String(e.query.user_id)});if(!a?.user_id)throw Error("Api Credentials invalid!");if(!a.full_access||!a.sign)return r.json({success:!1,msg:"Unauthorized"});let o=`datasquirel_user_${a.user_id}_${n}`,i=(()=>{let e=Object.keys(s),r={};return e.forEach(e=>{e?.match(/^date_|^id$/)||(r[e]=s[e])}),r})(),u=await l()({dbContext:"Dsql User",paradigm:"Full Access",dbFullName:o,tableName:"users",identifierColumnName:"id",identifierValue:s.id,data:i});r.json({success:!0,payload:u})}catch(t){c()({component:"/api/user/update-user/main-catch-error",message:t.message,user:{},req:e}),r.json({success:!1,msg:"Wrong Credentials"})}}t(29021);let f=(0,o.M)(s,"default"),_=(0,o.M)(s,"config"),g=new n.PagesAPIRouteModule({definition:{kind:a.A.PAGES_API,page:"/api/user/[user_id]/update-user",pathname:"/api/user/[user_id]/update-user",bundlePath:"",filename:""},userland:s})},77538:(e,r,t)=>{let s=t(29021),{IncomingMessage:n}=t(81630);e.exports=async function({user:e,message:r,component:t,noMail:n,req:a}){let o=new Date,i=(()=>{if(!a)return null;try{let e=a.headers["x-forwarded-for"],r=a.headers["x-real-ip"],t=a.headers["cf-connecting-ip"],s=Array.isArray(e)?e[0]:e?.split(",")[0],n=t||s||r||a.socket.remoteAddress;if(!n)return null;return String(n)}catch(e){return null}})();try{let n=`🚀 SERVER ERROR ===========================
Error Message: ${r}
Component: ${t}`;e?.id&&e?.first_name&&e?.last_name&&e?.email&&(n+=`
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}`),a?.url&&(n+=`
URL: ${a.url}`),a?.body&&(n+=`
Request Body: ${JSON.stringify(a.body,null,4)}`),i&&(n+=`
IP: ${i}`),n+=`
Date: ${o.toDateString()}
========================================`,s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let l=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",n),s.appendFileSync("./.tmp/error.log",`
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* API handler
* ==============================================================================
* @type {import("next").NextApiHandler}
*/ async function handler(req, res) {
/**
* Check method
*
* @description Check request method and return if invalid
*/ if (req.method !== "POST") return res.json({
success: false,
payload: null,
msg: "Failed!"
});
/**
* Send Response
*
* @description Send a boolean response
*/ try {
const authorization = req.headers.authorization;
const { payload , database } = req.body;
const apiCred = _package_shared_functions_backend_api_cred__WEBPACK_IMPORTED_MODULE_3___default()({
key: authorization,
database,
user_id: String(req.query.user_id)
});
if (!apiCred?.user_id) {
throw new Error("Api Credentials invalid!");
}
if (!apiCred.full_access || !apiCred.sign) return res.json({
success: false,
msg: "Unauthorized"
});
/**
* Input Validation
*
* @description Input Validation
* @required - payload.first_name
* @required - payload.last_name
* @required - payload.email
* @required - payload.username
* @required - payload.password
*/ const dbFullName = `datasquirel_user_${apiCred.user_id}_${database}`;
const data = (()=>{
const reqBodyKeys = Object.keys(payload);
/** @type {any} */ const finalData = {};
reqBodyKeys.forEach((key)=>{
if (key?.match(/^date_|^id$/)) return;
finalData[key] = payload[key];
});
return finalData;
})();
const updateUser = await _package_shared_functions_backend_db_updateDbEntry__WEBPACK_IMPORTED_MODULE_0___default()({
dbContext: "Dsql User",
paradigm: "Full Access",
dbFullName: dbFullName,
tableName: "users",
identifierColumnName: "id",
identifierValue: payload.id,
data: data
});
res.json({
success: true,
payload: updateUser
});
////////////////////////////////////////
} catch (/** @type {any} */ error) {
////////////////////////////////////////
_functions_backend_serverError__WEBPACK_IMPORTED_MODULE_2___default()({
component: "/api/user/update-user/main-catch-error",
message: error.message,
user: {}
});
res.json({
success: false,
msg: "Wrong Credentials"
});
////////////////////////////////////////
}
}
${l}`)}catch(e){console.log("Server Error Reporting Error:",e.message)}}},77619:(e,r,t)=>{let s=t(29021),n=t(72907);e.exports=({key:e,database:r,table:t,user_id:a})=>{if(!e||!a)return null;try{let o=process.env.DSQL_API_KEYS_PATH;if(!o)throw Error("process.env.DSQL_API_KEYS_PATH variable not found");let i=n(e),l=JSON.parse(i||""),u=s.existsSync(`${o}/${l.sign}`);if(String(l.user_id)!==String(a)||!u)return null;if(!l.target_database)return l;if(!r&&l.target_database)return null;let c=l.target_database?.split(",").includes(String(r));if(c&&!l.target_table)return l;if(c&&!t&&l.target_table)return null;if(l.target_table?.split(",").includes(String(t)))return l;return null}catch(e){return console.log(`api-cred ERROR: ${e.message}`),null}}},33364:(e,r,t)=>{let s=t(82703),n=t(72583),a=t(16570),o=t(51348),i=t(21339);async function l({dbContext:e,paradigm:r,dbFullName:t,tableName:l,data:u,tableSchema:c,identifierColumnName:p,identifierValue:d,encryptionKey:S,encryptionSalt:f}){if(!u||!Object.keys(u).length)return null;let _=!e?.match(/dsql.user/i)&&(!t||!!t.match(/^datasquirel$/)),g=_?o:i,m=Object.keys(u),y=[],h=[];for(let e=0;e<m.length;e++)try{let r=m[e],t=u[r],o=c?c?.fields?.filter(e=>e.fieldName===r):null,i=o&&o[0]?o[0]:null;if(null==t||void 0==t)continue;i?.richText&&(t=n(t,a)),i?.encrypted&&(t=s(t,S,f)),"object"==typeof t&&(t=JSON.stringify(t)),i?.pattern&&!new RegExp(i.pattern,i.patternFlags||"").test(t)&&(console.log("DSQL: Pattern not matched =>",t),t=""),"string"==typeof t&&t.match(/^null$/i)&&(t={toSqlString:function(){return"NULL"}}),"string"!=typeof t||t.match(/./i)||(t={toSqlString:function(){return"NULL"}}),y.push(`\`${r}\`=?`),"number"==typeof t?h.push(String(t)):h.push(t)}catch(e){console.log("DSQL: Error in parsing data keys in update function =>",e.message);continue}y.push(`date_updated='${Date()}'`),y.push(`date_updated_code='${Date.now()}'`);let D=`UPDATE ${l} SET ${y.join(",")} WHERE \`${p}\`=?`;return h.push(d),_?await g(D,h):await g({paradigm:r,database:t,queryString:D,queryValues:h})}e.exports=l},72907:(e,r,t)=>{let{scryptSync:s,createDecipheriv:n}=t(55511),{Buffer:a}=t(79428);e.exports=e=>{let r=n("aes-192-cbc",s(process.env.DSQL_ENCRYPTION_PASSWORD||"",process.env.DSQL_ENCRYPTION_SALT||"",24),a.alloc(16,0));try{let t=r.update(e,"hex","utf8");return t+=r.final("utf8")}catch(e){return null}}},82703:(e,r,t)=>{let{scryptSync:s,createCipheriv:n}=t(55511),{Buffer:a}=t(79428),o=t(48225);e.exports=(e,r,t)=>{let i=n("aes-192-cbc",s(r||process.env.DSQL_ENCRYPTION_PASSWORD||"",t||process.env.DSQL_ENCRYPTION_SALT||"",24),a.alloc(16,0));try{let r=i.update(e,"utf8","hex");return r+=i.final("hex")}catch(e){return o({component:"encrypt",message:e.message}),null}}},16570:e=>{e.exports={allowedTags:["b","i","em","strong","a","p","span","ul","ol","li","h1","h2","h3","h4","h5","h6","img","div","button","pre","code","br"],allowedAttributes:{a:["href"],img:["src","alt","width","height","class","style"],"*":["style","class"]}}},48225:(e,r,t)=>{let s=t(29021);e.exports=async function({user:e,message:r,component:t,noMail:n}){let a=`🚀 SERVER ERROR ===========================
User Id: ${e?.id}
User Name: ${e?.first_name} ${e?.last_name}
User Email: ${e?.email}
Error Message: ${r}
Component: ${t}
Date: ${Date()}
========================================`;s.existsSync("./.tmp/error.log")||s.writeFileSync("./.tmp/error.log","","utf-8");let o=s.readFileSync("./.tmp/error.log","utf-8");s.writeFileSync("./.tmp/error.log",a),s.appendFileSync("./.tmp/error.log",`
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [2224,2163,3017,3403,7547,5886,1007], () => (__webpack_exec__(2437)));
module.exports = __webpack_exports__;
})();
${o}`)}},51348:(e,r,t)=>{let s=t(9973),n=t(21580),a=s({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_USERNAME,password:process.env.DSQL_DB_PASSWORD,database:process.env.DSQL_DB_NAME,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4",ssl:n()}});async function o(...e){try{let r=await a.query(...e);return await a.end(),JSON.parse(JSON.stringify(r))}catch(e){return console.log("DB Error =>",e),{success:!1,error:e.message}}}e.exports=o},21339:(e,r,t)=>{let s=t(29021);t(33873);let n=t(9973),a=t(21580),o=n({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,charset:"utf8mb4",ssl:a()}});e.exports=function({paradigm:e,database:r,queryString:t,queryValues:i}){try{return new Promise((l,u)=>{let c=!!e?.match(/full.access|^fa$/i);try{function p(e){o.end(),l(JSON.parse(JSON.stringify(e)))}function d(e){o.end(),l({error:e.message,queryStringGenerated:t,queryValuesGenerated:i,sql:e.sql})}o=c?n({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_FULL_ACCESS_USERNAME,password:process.env.DSQL_DB_FULL_ACCESS_PASSWORD,database:r,ssl:a()}}):n({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,database:r,ssl:a()}}),i&&Array.isArray(i)&&i[0]?o.query(t,i).then(p).catch(d):o.query(t).then(p).catch(d)}catch(e){s.appendFileSync("./.tmp/dbErrorLogs.txt",e.message+"\n"+Date()+"\n\n\n","utf8"),l({error:e.message})}})}catch(e){return{success:!1,error:e.message}}}},21580:(e,r,t)=>{let s=t(29021);e.exports=function(){let e=process.env.DSQL_SSL_DIR;if(!e?.match(/./))return;let r=`${e}/ca-cert.pem`;if(!s.existsSync(r)){console.log(`${r} does not exist`);return}return{ca:s.readFileSync(`${e}/ca-cert.pem`)}}},2706:(e,r)=>{var t;Object.defineProperty(r,"A",{enumerable:!0,get:function(){return t}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE"}(t||(t={}))},89947:(e,r,t)=>{e.exports=t(75600)}};var r=require("../../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=34453);module.exports=t})();
File diff suppressed because one or more lines are too long