abmp-npm 1.8.16 → 1.8.18
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.
- package/backend/consts.js +13 -0
- package/backend/index.js +1 -0
- package/backend/members-data-methods.js +83 -0
- package/backend/utils.js +43 -0
- package/package.json +1 -1
- package/pages/personalDetails.js +4 -9
package/backend/consts.js
CHANGED
|
@@ -12,9 +12,22 @@ const PRECISION = 3;
|
|
|
12
12
|
const MAX__MEMBERS_SEARCH_RESULTS = 120;
|
|
13
13
|
const WIX_QUERY_MAX_LIMIT = 1000;
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Member action types
|
|
17
|
+
* @readonly
|
|
18
|
+
* @enum {string}
|
|
19
|
+
*/
|
|
20
|
+
const MEMBER_ACTIONS = {
|
|
21
|
+
UPDATE: 'update',
|
|
22
|
+
NEW: 'new',
|
|
23
|
+
DROP: 'drop',
|
|
24
|
+
NONE: 'none',
|
|
25
|
+
};
|
|
26
|
+
|
|
15
27
|
module.exports = {
|
|
16
28
|
CONFIG_KEYS,
|
|
17
29
|
PRECISION,
|
|
18
30
|
MAX__MEMBERS_SEARCH_RESULTS,
|
|
19
31
|
WIX_QUERY_MAX_LIMIT,
|
|
32
|
+
MEMBER_ACTIONS,
|
|
20
33
|
};
|
package/backend/index.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
const { auth } = require('@wix/essentials');
|
|
2
|
+
const { currentMember } = require('@wix/members');
|
|
3
|
+
|
|
1
4
|
const { COLLECTIONS } = require('../public/consts');
|
|
2
5
|
|
|
6
|
+
const { MEMBER_ACTIONS } = require('./consts');
|
|
3
7
|
const { wixData } = require('./elevated-modules');
|
|
4
8
|
const { createSiteMember } = require('./members-area-methods');
|
|
9
|
+
const { formatDateToMonthYear, getAddressDisplayOptions, isStudent } = require('./utils');
|
|
10
|
+
|
|
11
|
+
// Elevate currentMember.getMember to bypass permissions
|
|
12
|
+
const elevatedGetMember = auth.elevate(currentMember.getMember);
|
|
5
13
|
|
|
6
14
|
/**
|
|
7
15
|
* Retrieves member data by member ID
|
|
@@ -49,7 +57,82 @@ async function createContactAndMemberIfNew(memberData) {
|
|
|
49
57
|
}
|
|
50
58
|
}
|
|
51
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Validates member token and retrieves member data
|
|
62
|
+
* @param {string} memberIdInput - The member ID to validate
|
|
63
|
+
* @returns {Promise<{memberData: Object|null, isValid: boolean}>} Validation result with member data
|
|
64
|
+
*/
|
|
65
|
+
async function validateMemberToken(memberIdInput) {
|
|
66
|
+
const invalidTokenResponse = { memberData: null, isValid: false };
|
|
67
|
+
|
|
68
|
+
if (!memberIdInput) {
|
|
69
|
+
return invalidTokenResponse;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
// Get current logged-in member using elevated permissions
|
|
74
|
+
const member = await elevatedGetMember();
|
|
75
|
+
if (!member || !member._id) {
|
|
76
|
+
console.log(
|
|
77
|
+
'member not found from currentMember.getMember() for memberIdInput',
|
|
78
|
+
memberIdInput
|
|
79
|
+
);
|
|
80
|
+
return invalidTokenResponse;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Query member data using elevated permissions (suppressAuth equivalent)
|
|
84
|
+
const { items } = await wixData
|
|
85
|
+
.query(COLLECTIONS.MEMBERS_DATA)
|
|
86
|
+
.eq('contactId', member._id)
|
|
87
|
+
.find();
|
|
88
|
+
|
|
89
|
+
console.log('items', items[0]);
|
|
90
|
+
console.log('member._id', member._id);
|
|
91
|
+
|
|
92
|
+
if (!items[0]?._id) {
|
|
93
|
+
const errorMessage = `No record found in DB for logged in Member [Corrupted Data - Duplicate Members? ] - There is no match in DB for currentMember: ${JSON.stringify(
|
|
94
|
+
{ memberIdInput, currentMemberId: member._id }
|
|
95
|
+
)}`;
|
|
96
|
+
console.error(errorMessage);
|
|
97
|
+
throw new Error('CORRUPTED_MEMBER_DATA');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
console.log(`Id found in DB for memberIdInput :${memberIdInput} is ${items[0]?._id}`);
|
|
101
|
+
|
|
102
|
+
const memberData = items[0];
|
|
103
|
+
|
|
104
|
+
// Format membership dates
|
|
105
|
+
memberData.memberships = memberData.memberships.map(membership => ({
|
|
106
|
+
...membership,
|
|
107
|
+
membersince: formatDateToMonthYear(membership.membersince),
|
|
108
|
+
}));
|
|
109
|
+
|
|
110
|
+
const savedMemberId = memberData?._id;
|
|
111
|
+
const isValid = savedMemberId === memberIdInput;
|
|
112
|
+
|
|
113
|
+
if (!savedMemberId || !isValid) {
|
|
114
|
+
return invalidTokenResponse;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Check if member is dropped
|
|
118
|
+
if (memberData.action === MEMBER_ACTIONS.DROP) {
|
|
119
|
+
return invalidTokenResponse;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Add computed properties
|
|
123
|
+
memberData.addressDisplayOption = getAddressDisplayOptions(memberData);
|
|
124
|
+
console.log('memberData', memberData);
|
|
125
|
+
memberData.isStudent = isStudent(memberData);
|
|
126
|
+
|
|
127
|
+
return { memberData, isValid };
|
|
128
|
+
} catch (error) {
|
|
129
|
+
console.error('Error in validateMemberToken:', error);
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
52
134
|
module.exports = {
|
|
53
135
|
findMemberByWixDataId,
|
|
54
136
|
createContactAndMemberIfNew,
|
|
137
|
+
validateMemberToken,
|
|
55
138
|
};
|
package/backend/utils.js
CHANGED
|
@@ -39,7 +39,50 @@ const retrieveAllItems = async collectionName => {
|
|
|
39
39
|
return allItems;
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Format date to Month Year string
|
|
44
|
+
* @param {string} dateString - The date string to format
|
|
45
|
+
* @returns {string} Formatted date (e.g., "January 2024")
|
|
46
|
+
*/
|
|
47
|
+
function formatDateToMonthYear(dateString) {
|
|
48
|
+
if (!dateString) return '';
|
|
49
|
+
|
|
50
|
+
const date = new Date(dateString);
|
|
51
|
+
if (isNaN(date.getTime())) return '';
|
|
52
|
+
const options = { year: 'numeric', month: 'long' };
|
|
53
|
+
return date.toLocaleDateString('en-US', options);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Check if member is a student
|
|
58
|
+
* @param {Object} member - The member object
|
|
59
|
+
* @returns {boolean} True if member has student membership
|
|
60
|
+
*/
|
|
61
|
+
function isStudent(member) {
|
|
62
|
+
const memberships = member?.memberships;
|
|
63
|
+
if (!Array.isArray(memberships)) return false;
|
|
64
|
+
|
|
65
|
+
return memberships.some(membership => membership.membertype === 'student');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Get address display options for member
|
|
70
|
+
* @param {Object} member - The member object
|
|
71
|
+
* @returns {Array} Address display options
|
|
72
|
+
*/
|
|
73
|
+
function getAddressDisplayOptions(member) {
|
|
74
|
+
const addresses = member.addresses || [];
|
|
75
|
+
const displayOptions = member.addressDisplayOption || [];
|
|
76
|
+
if (addresses.length === 1 && addresses[0].key) {
|
|
77
|
+
return [{ key: addresses[0].key, isMain: true }];
|
|
78
|
+
}
|
|
79
|
+
return displayOptions;
|
|
80
|
+
}
|
|
81
|
+
|
|
42
82
|
module.exports = {
|
|
43
83
|
getSiteConfigs,
|
|
44
84
|
retrieveAllItems,
|
|
85
|
+
formatDateToMonthYear,
|
|
86
|
+
isStudent,
|
|
87
|
+
getAddressDisplayOptions,
|
|
45
88
|
};
|
package/package.json
CHANGED
package/pages/personalDetails.js
CHANGED
|
@@ -48,8 +48,6 @@ const FORM_SECTION_HANDLER_MAP = {
|
|
|
48
48
|
|
|
49
49
|
async function personalDetailsOnReady({
|
|
50
50
|
$w: _$w,
|
|
51
|
-
memberTokenId,
|
|
52
|
-
baseUrl,
|
|
53
51
|
getInterestAll,
|
|
54
52
|
saveRegistrationData,
|
|
55
53
|
validateMemberToken,
|
|
@@ -102,14 +100,11 @@ async function personalDetailsOnReady({
|
|
|
102
100
|
let memberData, isValid, isStudent;
|
|
103
101
|
|
|
104
102
|
// Main initialization
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const memberTokenIdAPI = await wixLocation.query();
|
|
109
|
-
console.log('memberTokenIdAPI with await', memberTokenIdAPI);
|
|
103
|
+
const queryParams = await wixLocation.query();
|
|
104
|
+
const memberTokenId = queryParams.token;
|
|
105
|
+
const baseUrl = await wixLocation.baseUrl();
|
|
110
106
|
|
|
111
|
-
|
|
112
|
-
console.log('baseUrlAPI with await', baseUrlAPI);
|
|
107
|
+
console.log('memberTokenId', memberTokenId);
|
|
113
108
|
|
|
114
109
|
if (!memberTokenId) {
|
|
115
110
|
showUnauthorizedState();
|