abmp-npm 1.1.89 → 1.1.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const { prepareMemberForQALogin, getQAUsers } = require('../members-data-methods');
|
|
2
2
|
const { getSecret } = require('../utils');
|
|
3
3
|
|
|
4
4
|
const validateQAUser = async userEmail => {
|
|
@@ -20,27 +20,23 @@ const validateQAUser = async userEmail => {
|
|
|
20
20
|
*/
|
|
21
21
|
const loginQAMember = async ({ userEmail, secret }, generateSessionToken) => {
|
|
22
22
|
try {
|
|
23
|
-
const userValidation = await
|
|
23
|
+
const [userValidation, qaSecret] = await Promise.all([
|
|
24
|
+
validateQAUser(userEmail),
|
|
25
|
+
getSecret('ABMP_QA_SECRET'),
|
|
26
|
+
]);
|
|
24
27
|
if (userValidation.error) {
|
|
25
28
|
return { success: false, error: userValidation.error };
|
|
26
29
|
}
|
|
27
|
-
|
|
28
|
-
const qaSecret = await getSecret('ABMP_QA_SECRET');
|
|
29
30
|
if (secret !== qaSecret) {
|
|
30
31
|
return { success: false, error: 'Invalid secret' };
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
const result = await getMemberCMSId(userEmail);
|
|
36
|
-
if (!result.success) {
|
|
37
|
-
return { success: false, error: result.error };
|
|
38
|
-
}
|
|
39
|
-
|
|
34
|
+
const memberData = await prepareMemberForQALogin(userValidation.email);
|
|
35
|
+
const token = await generateSessionToken(memberData.email, qaSecret);
|
|
40
36
|
return {
|
|
41
37
|
success: true,
|
|
42
38
|
token,
|
|
43
|
-
memberCMSId:
|
|
39
|
+
memberCMSId: memberData._id,
|
|
44
40
|
};
|
|
45
41
|
} catch (error) {
|
|
46
42
|
console.error('QA login error:', error);
|
|
@@ -48,25 +44,6 @@ const loginQAMember = async ({ userEmail, secret }, generateSessionToken) => {
|
|
|
48
44
|
}
|
|
49
45
|
};
|
|
50
46
|
|
|
51
|
-
async function getMemberCMSId(userEmail) {
|
|
52
|
-
try {
|
|
53
|
-
const userValidation = await validateQAUser(userEmail);
|
|
54
|
-
if (userValidation.error) {
|
|
55
|
-
return { success: false, error: userValidation.error };
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const member = await getMemberByEmail(userEmail);
|
|
59
|
-
|
|
60
|
-
if (!member) {
|
|
61
|
-
return { success: false, error: `No Member found in DB matching email: ${userEmail}` };
|
|
62
|
-
}
|
|
63
|
-
return { success: true, memberCMSId: member._id };
|
|
64
|
-
} catch (error) {
|
|
65
|
-
console.error('Error getting member CMS ID:', error);
|
|
66
|
-
return { success: false, error: 'Failed to retrieve member data' };
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
47
|
module.exports = {
|
|
71
48
|
loginQAMember,
|
|
72
49
|
};
|
|
@@ -5,7 +5,7 @@ const { decode } = require('jwt-js-decode');
|
|
|
5
5
|
const { CONFIG_KEYS, SSO_TOKEN_AUTH_API_URL } = require('../consts');
|
|
6
6
|
const { MEMBER_ACTIONS } = require('../daily-pull/consts');
|
|
7
7
|
const { getCurrentMember } = require('../members-area-methods');
|
|
8
|
-
const { getMemberByContactId,
|
|
8
|
+
const { getMemberByContactId, prepareMemberForSSOLogin } = require('../members-data-methods');
|
|
9
9
|
const {
|
|
10
10
|
formatDateToMonthYear,
|
|
11
11
|
getAddressDisplayOptions,
|
|
@@ -133,12 +133,12 @@ const authenticateSSOToken = async ({ token }, generateSessionToken) => {
|
|
|
133
133
|
if (isValidToken) {
|
|
134
134
|
const jwt = decode(responseToken);
|
|
135
135
|
const payload = jwt.payload;
|
|
136
|
-
const
|
|
137
|
-
console.log('
|
|
138
|
-
const sessionToken = await generateSessionToken(
|
|
136
|
+
const memberData = await prepareMemberForSSOLogin(payload);
|
|
137
|
+
console.log('memberDataCollectionId', memberData._id);
|
|
138
|
+
const sessionToken = await generateSessionToken(memberData.email);
|
|
139
139
|
const authObj = {
|
|
140
140
|
type: 'success',
|
|
141
|
-
memberId:
|
|
141
|
+
memberId: memberData._id,
|
|
142
142
|
sessionToken,
|
|
143
143
|
};
|
|
144
144
|
return authObj;
|
|
@@ -93,10 +93,16 @@ async function findMemberById(memberId) {
|
|
|
93
93
|
const queryResult = await wixData
|
|
94
94
|
.query(COLLECTIONS.MEMBERS_DATA)
|
|
95
95
|
.eq('memberId', memberId)
|
|
96
|
+
.limit(2)
|
|
96
97
|
.find();
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
if (queryResult.items.length > 1) {
|
|
99
|
+
throw new Error(
|
|
100
|
+
`Multiple members found with memberId ${memberId} members _ids are : [${queryResult.items.map(member => member._id).join(', ')}]`
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
return queryResult.items.length === 1 ? queryResult.items[0] : null;
|
|
99
104
|
} catch (error) {
|
|
105
|
+
console.error('Error finding member by ID:', error);
|
|
100
106
|
throw new Error(`Failed to retrieve member data: ${error.message}`);
|
|
101
107
|
}
|
|
102
108
|
}
|
|
@@ -441,38 +447,53 @@ const getQAUsers = async () => {
|
|
|
441
447
|
throw new Error(`Failed to get QA users: ${error.message}`);
|
|
442
448
|
}
|
|
443
449
|
};
|
|
444
|
-
|
|
450
|
+
/**
|
|
451
|
+
* Ensures member has a contact - creates one if missing
|
|
452
|
+
* @param {Object} memberData - Member data from DB
|
|
453
|
+
* @returns {Promise<Object>} - Member data with contactId
|
|
454
|
+
*/
|
|
455
|
+
async function ensureMemberHasContact(memberData) {
|
|
456
|
+
if (!memberData) {
|
|
457
|
+
throw new Error('Member data is required');
|
|
458
|
+
}
|
|
459
|
+
if (!memberData.contactId) {
|
|
460
|
+
const memberDataWithContactId = await createContactAndMemberIfNew(memberData);
|
|
461
|
+
return memberDataWithContactId;
|
|
462
|
+
}
|
|
463
|
+
return memberData;
|
|
464
|
+
}
|
|
465
|
+
async function prepareMemberForSSOLogin(data) {
|
|
445
466
|
try {
|
|
446
467
|
console.log('data', data);
|
|
447
468
|
const memberId = data?.pac?.cst_recno;
|
|
448
469
|
if (!memberId) {
|
|
449
|
-
|
|
450
|
-
console.error(errorMessage);
|
|
451
|
-
throw new Error(errorMessage);
|
|
470
|
+
throw new Error(`Member ID is missing in passed data ${JSON.stringify(data)}`);
|
|
452
471
|
}
|
|
453
|
-
const
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
.find()
|
|
457
|
-
.then(res => res.items);
|
|
458
|
-
if (!queryMemberResult.length || queryMemberResult.length > 1) {
|
|
459
|
-
throw new Error(
|
|
460
|
-
`Invalid Members count found in DB for email ${data.email} members count is : [${
|
|
461
|
-
queryMemberResult.length
|
|
462
|
-
}] membersIds are : [${queryMemberResult.map(member => member.memberId).join(', ')}]`
|
|
463
|
-
);
|
|
472
|
+
const memberData = await findMemberById(Number(memberId));
|
|
473
|
+
if (!memberData) {
|
|
474
|
+
throw new Error(`Member data not found for memberId ${memberId}`);
|
|
464
475
|
}
|
|
465
|
-
let memberData = queryMemberResult[0];
|
|
466
476
|
console.log('memberData', memberData);
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
477
|
+
return await ensureMemberHasContact(memberData);
|
|
478
|
+
} catch (error) {
|
|
479
|
+
console.error('Error in prepareMemberForSSOLogin', error.message);
|
|
480
|
+
throw error;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
async function prepareMemberForQALogin(email) {
|
|
484
|
+
try {
|
|
485
|
+
console.log('qa email:', email);
|
|
486
|
+
if (!email) {
|
|
487
|
+
throw new Error(`Email is missing in passed data ${email}`);
|
|
488
|
+
}
|
|
489
|
+
const memberData = await getMemberByEmail(email);
|
|
490
|
+
if (!memberData) {
|
|
491
|
+
throw new Error(`Member data not found for email ${email}`);
|
|
472
492
|
}
|
|
473
|
-
|
|
493
|
+
console.log('memberData', memberData);
|
|
494
|
+
return await ensureMemberHasContact(memberData);
|
|
474
495
|
} catch (error) {
|
|
475
|
-
console.error('Error in
|
|
496
|
+
console.error('Error in prepareMemberForQALogin', error.message);
|
|
476
497
|
throw error;
|
|
477
498
|
}
|
|
478
499
|
}
|
|
@@ -494,6 +515,7 @@ module.exports = {
|
|
|
494
515
|
getMembersByIds,
|
|
495
516
|
getMemberByEmail,
|
|
496
517
|
getQAUsers,
|
|
497
|
-
|
|
518
|
+
prepareMemberForSSOLogin,
|
|
519
|
+
prepareMemberForQALogin,
|
|
498
520
|
checkUrlUniqueness,
|
|
499
521
|
};
|