From 515db80a79125ac8aa04940c3cd1cd8f4f691605 Mon Sep 17 00:00:00 2001 From: Benjamin Toby Date: Wed, 31 Dec 2025 10:37:42 +0100 Subject: [PATCH] Updates --- .../api/social-login/loginSocialUser.d.ts | 4 ++-- .../functions/api/users/api-login.js | 20 ++++++++++++----- dist/package-shared/types/index.d.ts | 17 ++++++++------ .../api/social-login/loginSocialUser.ts | 4 ++-- .../functions/api/users/api-login.ts | 22 ++++++++++++------- package-shared/types/index.ts | 16 ++++++++------ package.json | 2 +- 7 files changed, 52 insertions(+), 33 deletions(-) diff --git a/dist/package-shared/functions/api/social-login/loginSocialUser.d.ts b/dist/package-shared/functions/api/social-login/loginSocialUser.d.ts index 748a334..2e1b213 100644 --- a/dist/package-shared/functions/api/social-login/loginSocialUser.d.ts +++ b/dist/package-shared/functions/api/social-login/loginSocialUser.d.ts @@ -1,4 +1,4 @@ -import { APIResponseObject } from "../../../types"; +import { APIResponseObject, DsqlAdditionalLoginField } from "../../../types"; type Param = { user: { email: string; @@ -6,7 +6,7 @@ type Param = { social_platform: string; invitation?: any; database?: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; debug?: boolean; }; /** diff --git a/dist/package-shared/functions/api/users/api-login.js b/dist/package-shared/functions/api/users/api-login.js index 562e59a..7abdc46 100644 --- a/dist/package-shared/functions/api/users/api-login.js +++ b/dist/package-shared/functions/api/users/api-login.js @@ -157,12 +157,20 @@ function apiLoginUser(_a) { userId: foundUser[0].id, csrf: csrfKey, }; - if (additionalFields && - Array.isArray(additionalFields) && - additionalFields.length > 0) { - additionalFields.forEach((key) => { - userPayload[key] = foundUser[0][key]; - }); + if (Array.isArray(additionalFields)) { + for (let i = 0; i < additionalFields.length; i++) { + const additionalField = additionalFields[i]; + if (typeof additionalField == "string") { + userPayload[additionalField] = foundUser[0][additionalField]; + } + else { + const keys = Object.keys(additionalField); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + userPayload[key] = additionalField[key]; + } + } + } } return resposeObject; }); diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index 26bf2d2..51ea87e 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -197,7 +197,7 @@ export interface DSQL_MYSQL_user_databases_Type { export interface PackageUserLoginRequestBody { encryptionKey: string; payload: any; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; email_login?: boolean; email_login_code?: string; email_login_field?: string; @@ -209,7 +209,7 @@ export interface PackageUserLoginRequestBody { } export interface PackageUserLoginLocalBody { payload: any; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; email_login?: boolean; email_login_code?: string; email_login_field?: string; @@ -969,7 +969,7 @@ export type APILoginFunctionParams = { username?: string; password?: string; database: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; email_login?: boolean; email_login_code?: string; email_login_field?: string; @@ -1013,7 +1013,7 @@ export type APIGetUserFunctionParams = { export type APIGoogleLoginFunctionParams = { token: string; database?: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; additionalData?: { [key: string]: string | number; }; @@ -1031,7 +1031,7 @@ export type HandleSocialDbFunctionParams = { payload: any; invitation?: any; supEmail?: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; debug?: boolean; loginOnly?: boolean; social_id?: string | number; @@ -1638,6 +1638,9 @@ export type DefaultEntryType = { [k: string]: string | number | null; }; export declare const IndexTypes: readonly ["regular", "full_text", "vector"]; +export type DsqlAdditionalLoginField = string | { + [s: string]: any; +}; export type LoginUserParam = { apiKey?: string; database: string; @@ -1646,7 +1649,7 @@ export type LoginUserParam = { username?: string; password?: string; }; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; request?: IncomingMessage & { [s: string]: any; }; @@ -2006,7 +2009,7 @@ export type GoogleAuthParams = { response?: ServerResponse; encryptionKey?: string; encryptionSalt?: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; additionalData?: { [s: string]: string | number; }; diff --git a/package-shared/functions/api/social-login/loginSocialUser.ts b/package-shared/functions/api/social-login/loginSocialUser.ts index f85f1fe..a1b610d 100644 --- a/package-shared/functions/api/social-login/loginSocialUser.ts +++ b/package-shared/functions/api/social-login/loginSocialUser.ts @@ -1,4 +1,4 @@ -import { APIResponseObject } from "../../../types"; +import { APIResponseObject, DsqlAdditionalLoginField } from "../../../types"; import loginUser from "../../../actions/users/login-user"; type Param = { @@ -8,7 +8,7 @@ type Param = { social_platform: string; invitation?: any; database?: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; debug?: boolean; }; diff --git a/package-shared/functions/api/users/api-login.ts b/package-shared/functions/api/users/api-login.ts index 06f9c21..3ace96d 100644 --- a/package-shared/functions/api/users/api-login.ts +++ b/package-shared/functions/api/users/api-login.ts @@ -189,14 +189,20 @@ export default async function apiLoginUser({ csrf: csrfKey, }; - if ( - additionalFields && - Array.isArray(additionalFields) && - additionalFields.length > 0 - ) { - additionalFields.forEach((key) => { - userPayload[key] = foundUser[0][key]; - }); + if (Array.isArray(additionalFields)) { + for (let i = 0; i < additionalFields.length; i++) { + const additionalField = additionalFields[i]; + if (typeof additionalField == "string") { + userPayload[additionalField] = foundUser[0][additionalField]; + } else { + const keys = Object.keys(additionalField); + + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + userPayload[key] = additionalField[key]; + } + } + } } return resposeObject; diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index e1814e9..d8bf676 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -236,7 +236,7 @@ export interface DSQL_MYSQL_user_databases_Type { export interface PackageUserLoginRequestBody { encryptionKey: string; payload: any; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; email_login?: boolean; email_login_code?: string; email_login_field?: string; @@ -249,7 +249,7 @@ export interface PackageUserLoginRequestBody { export interface PackageUserLoginLocalBody { payload: any; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; email_login?: boolean; email_login_code?: string; email_login_field?: string; @@ -1181,7 +1181,7 @@ export type APILoginFunctionParams = { username?: string; password?: string; database: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; email_login?: boolean; email_login_code?: string; email_login_field?: string; @@ -1231,7 +1231,7 @@ export type APIGetUserFunctionParams = { export type APIGoogleLoginFunctionParams = { token: string; database?: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; additionalData?: { [key: string]: string | number }; debug?: boolean; loginOnly?: boolean; @@ -1251,7 +1251,7 @@ export type HandleSocialDbFunctionParams = { payload: any; invitation?: any; supEmail?: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; debug?: boolean; loginOnly?: boolean; social_id?: string | number; @@ -2011,6 +2011,8 @@ export type DefaultEntryType = { export const IndexTypes = ["regular", "full_text", "vector"] as const; +export type DsqlAdditionalLoginField = string | { [s: string]: any }; + export type LoginUserParam = { apiKey?: string; database: string; @@ -2019,7 +2021,7 @@ export type LoginUserParam = { username?: string; password?: string; }; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; request?: IncomingMessage & { [s: string]: any }; response?: ServerResponse & { [s: string]: any }; encryptionKey?: string; @@ -2583,7 +2585,7 @@ export type GoogleAuthParams = { response?: ServerResponse; encryptionKey?: string; encryptionSalt?: string; - additionalFields?: string[]; + additionalFields?: DsqlAdditionalLoginField[]; additionalData?: { [s: string]: string | number }; debug?: boolean; secureCookie?: boolean; diff --git a/package.json b/package.json index bc4bed7..8955018 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "5.7.5", + "version": "5.7.6", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {