abmp-npm 1.1.74 → 1.1.75

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 CHANGED
@@ -1,5 +1,6 @@
1
1
  const PAC_API_URL = 'https://members.abmp.com/eweb/api/Wix';
2
2
  const SSO_TOKEN_AUTH_API_URL = 'https://members.professionalassistcorp.com/';
3
+ const SSO_TOKEN_AUTH_API_KEY = 'testkey';
3
4
 
4
5
  /**
5
6
  * Valid configuration keys for getSiteConfigs function
@@ -40,4 +41,5 @@ module.exports = {
40
41
  COMPILED_FILTERS_FIELDS,
41
42
  MEMBERSHIPS_TYPES,
42
43
  SSO_TOKEN_AUTH_API_URL,
44
+ SSO_TOKEN_AUTH_API_KEY,
43
45
  };
@@ -1,7 +1,7 @@
1
1
  const { taskManager, TASK_TYPE } = require('psdev-task-manager');
2
2
 
3
3
  const { COMPILED_FILTERS_FIELDS } = require('./consts');
4
- const { TASKS_NAMES } = require('./tasks/consts');
4
+ const { TASKS_NAMES } = require('./tasks');
5
5
 
6
6
  const scheduleCompileFiltersTask = field =>
7
7
  taskManager().schedule({
@@ -1,6 +1,7 @@
1
1
  const { COLLECTIONS } = require('../../public/consts');
2
2
  const { clearCollection } = require('../cms-data-methods');
3
- const { getSecret } = require('../utils');
3
+ const { CONFIG_KEYS } = require('../consts');
4
+ const { getSecret, getSiteConfigs } = require('../utils');
4
5
 
5
6
  const { migrateInterests } = require('./interests');
6
7
 
@@ -62,10 +63,23 @@ const createHTTPFunctionsHelpers = wixHTTPFunctionsMethods => {
62
63
  return serverError(error);
63
64
  }
64
65
  };
66
+ const getSiteAssociationHandler = async _request => {
67
+ try {
68
+ const siteAssociation = await getSiteConfigs(CONFIG_KEYS.SITE_ASSOCIATION);
69
+ return ok({
70
+ ...responseOptions,
71
+ body: { siteAssociation },
72
+ });
73
+ } catch (error) {
74
+ console.error('Error getting site association:', error);
75
+ return serverError(error);
76
+ }
77
+ };
65
78
 
66
79
  return {
67
80
  post_migrateInterests: withAuth(migrateInterestsHandler),
68
81
  delete_clearCollection: withAuth(clearCollectionHandler),
82
+ get_getSiteAssociation: withAuth(getSiteAssociationHandler),
69
83
  };
70
84
  };
71
85
 
package/backend/index.js CHANGED
@@ -10,7 +10,7 @@ module.exports = {
10
10
  ...require('./members-data-methods'), //TODO: remove it once we finish NPM movement
11
11
  ...require('./cms-data-methods'), //TODO: remove it once we finish NPM movement
12
12
  ...require('./routers'),
13
- ...require('./login'),
13
+ ...require('./sso-methods'),
14
14
  ...require('./data-hooks'),
15
15
  ...require('./http-functions'),
16
16
  };
package/backend/jobs.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const { taskManager } = require('psdev-task-manager');
2
2
 
3
- const { TASKS, TASKS_NAMES } = require('./tasks/consts');
3
+ const { TASKS, TASKS_NAMES } = require('./tasks');
4
4
 
5
5
  async function runScheduledTasks() {
6
6
  try {
@@ -1,24 +1,18 @@
1
- const { getMemberByEmail, getQAUsers } = require('../members-data-methods');
2
- const { getSecret } = require('../utils');
1
+ const { authentication } = require('@wix/members');
2
+
3
+ const { getMemberByEmail, getQAUsers } = require('./members-data-methods');
4
+ const { getSecret } = require('./utils');
3
5
 
4
6
  const validateQAUser = async userEmail => {
5
7
  const qaUsers = await getQAUsers();
6
- const matchingUserEmail = qaUsers.find(user => user.email === userEmail)?.email;
7
- if (!matchingUserEmail) {
8
+ const matchingUser = qaUsers.find(user => user.email === userEmail);
9
+ if (!matchingUser) {
8
10
  return { error: `Invalid user email: ${userEmail}` };
9
11
  }
10
- return { valid: true, email: matchingUserEmail };
12
+ return { valid: true, user: matchingUser };
11
13
  };
12
14
 
13
- /**
14
- * Login a QA user
15
- * @param {Object} params - The parameters for the login
16
- * @param {string} params.userEmail - The email of the user to login
17
- * @param {string} params.secret - The secret of the user to login
18
- * @param {Function} generateSessionToken - a dependency of the method, injected by the createLoginMethods function
19
- * @returns {Promise<Object>} The result of the login
20
- */
21
- const loginQAMember = async ({ userEmail, secret }, generateSessionToken) => {
15
+ const loginQAMember = async (userEmail, secret) => {
22
16
  try {
23
17
  const userValidation = await validateQAUser(userEmail);
24
18
  if (userValidation.error) {
@@ -30,7 +24,8 @@ const loginQAMember = async ({ userEmail, secret }, generateSessionToken) => {
30
24
  return { success: false, error: 'Invalid secret' };
31
25
  }
32
26
 
33
- const token = await generateSessionToken(userValidation.email, qaSecret);
27
+ //TODO: this code still needs fixes, as there is no generateSessionToken method on
28
+ const token = await authentication.generateSessionToken(userValidation.user, qaSecret);
34
29
 
35
30
  const result = await getMemberCMSId(userEmail);
36
31
  if (!result.success) {
@@ -1,18 +1,20 @@
1
1
  const { createHmac } = require('crypto');
2
2
 
3
+ const { auth } = require('@wix/essentials');
4
+ const { authentication } = require('@wix/identity'); //importing from @wix/identity because @wix/members authentication do not have generateSessionToken method
5
+ const generateSessionToken = auth.elevate(authentication.signOn);
3
6
  const { decode } = require('jwt-js-decode');
4
7
 
5
- const { CONFIG_KEYS, SSO_TOKEN_AUTH_API_URL } = require('../consts');
6
- const { MEMBER_ACTIONS } = require('../daily-pull/consts');
7
- const { getCurrentMember } = require('../members-area-methods');
8
- const { getMemberByContactId, getSiteMemberId } = require('../members-data-methods');
8
+ const { CONFIG_KEYS, SSO_TOKEN_AUTH_API_URL, SSO_TOKEN_AUTH_API_KEY } = require('./consts');
9
+ const { MEMBER_ACTIONS } = require('./daily-pull');
10
+ const { getCurrentMember } = require('./members-area-methods');
11
+ const { getMemberByContactId, getSiteMemberId } = require('./members-data-methods');
9
12
  const {
10
13
  formatDateToMonthYear,
11
14
  getAddressDisplayOptions,
12
15
  isStudent,
13
16
  getSiteConfigs,
14
- getSecret,
15
- } = require('../utils');
17
+ } = require('./utils');
16
18
 
17
19
  /**
18
20
  * Validates member token and retrieves member data
@@ -88,7 +90,6 @@ async function validateMemberToken(memberIdInput) {
88
90
  }
89
91
  }
90
92
  async function checkAndFetchSSO(token) {
91
- const SSO_TOKEN_AUTH_API_KEY = await getSecret('SSO_TOKEN_AUTH_API_KEY');
92
93
  const signature = createHmac('sha256', SSO_TOKEN_AUTH_API_KEY).update(token).digest('hex');
93
94
  const professionalassistcorpUrl = `${SSO_TOKEN_AUTH_API_URL}/eweb/SSOToken.ashx?token=${token}&Partner=Wix&Signature=${signature}`;
94
95
  const options = {
@@ -108,14 +109,16 @@ async function checkAndFetchSSO(token) {
108
109
  }
109
110
  }
110
111
 
111
- /**
112
- * Authenticate an SSO token
113
- * @param {Object} params - The parameters for the authentication
114
- * @param {string} params.token - The token to authenticate
115
- * @param {Function} generateSessionToken - a dependency of the method, injected by the createLoginMethods function
116
- * @returns {Promise<Object>} The result of the authentication
117
- */
118
- const authenticateSSOToken = async ({ token }, generateSessionToken) => {
112
+ function generateSessionTokenFunction(email) {
113
+ return generateSessionToken({ email })
114
+ .then(response => response.sessionToken)
115
+ .catch(error => {
116
+ console.error('Error in generateSessionTokenFunction', error);
117
+ throw error;
118
+ });
119
+ }
120
+
121
+ const authenticateSSOToken = async token => {
119
122
  const responseToken = await checkAndFetchSSO(token);
120
123
  const isValidToken = Boolean(
121
124
  responseToken && typeof responseToken === 'string' && responseToken?.trim()
@@ -135,7 +138,7 @@ const authenticateSSOToken = async ({ token }, generateSessionToken) => {
135
138
  const payload = jwt.payload;
136
139
  const membersData = await getSiteMemberId(payload);
137
140
  console.log('membersDataCollectionId', membersData._id);
138
- const sessionToken = await generateSessionToken(membersData.email);
141
+ const sessionToken = await generateSessionTokenFunction(membersData.email);
139
142
  const authObj = {
140
143
  type: 'success',
141
144
  memberId: membersData._id,
@@ -1,8 +1,8 @@
1
- const { MEMBER_ACTIONS } = require('../daily-pull/consts.js');
2
1
  const {
2
+ MEMBER_ACTIONS,
3
3
  synchronizeSinglePage,
4
4
  syncMembersDataPerAction,
5
- } = require('../daily-pull/sync-to-cms-methods');
5
+ } = require('../daily-pull');
6
6
 
7
7
  const { TASKS_NAMES } = require('./consts');
8
8
  const {
package/backend/utils.js CHANGED
@@ -154,7 +154,7 @@ const normalizeUrlForComparison = url => {
154
154
  };
155
155
 
156
156
  async function getSecret(secretKey) {
157
- return (await elevatedGetSecretValue(secretKey)).value;
157
+ return await elevatedGetSecretValue(secretKey).value;
158
158
  }
159
159
 
160
160
  async function getSiteBaseUrl() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abmp-npm",
3
- "version": "1.1.74",
3
+ "version": "1.1.75",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "check-cycles": "madge --circular .",
@@ -7,7 +7,7 @@ async function loadingPageOnReady(authenticateSSOToken) {
7
7
  const renderingEnv = await rendering.env();
8
8
  //This calls needs to triggered on client side, otherwise PAC API will return 401 error
9
9
  if (renderingEnv === 'browser') {
10
- //Need to pass authenticateSSOToken to checkAndLogin so it will run as a web method not a public one.
10
+ //Need to pass processSubmission to checkAndLogin so it will run as a web method not a public one.
11
11
  await checkAndLogin(authenticateSSOToken).catch(error => {
12
12
  wixWindow.openLightbox(LIGHTBOX_NAMES.LOGIN_ERROR_ALERT);
13
13
  console.error(`Something went wrong while logging in: ${error}`);
package/pages/QAPage.js CHANGED
@@ -10,7 +10,7 @@ async function qaPageOnReady({ $w: _$w, loginQAMember }) {
10
10
  throw new Error('Missing required parameters: userEmail and/or secret');
11
11
  }
12
12
 
13
- const result = await loginQAMember({ userEmail, secret });
13
+ const result = await loginQAMember(userEmail, secret);
14
14
 
15
15
  if (!result.success || !result.token) {
16
16
  throw new Error(result.error || 'Login failed');
package/public/consts.js CHANGED
@@ -12,7 +12,7 @@ const COLLECTIONS = {
12
12
  INTERESTS: 'interests',
13
13
  STATE_CITY_MAP: 'City',
14
14
  UPDATED_LOGIN_EMAILS: 'updatedLoginEmails',
15
- QA_USERS: 'QA_Users', //Make QA users configurable per site
15
+ QA_Users: 'QA_Users', //Make QA users configurable per site
16
16
  };
17
17
 
18
18
  /**
@@ -9,7 +9,7 @@ const checkAndLogin = async authenticateSSOToken => {
9
9
  const token = query['token']?.trim();
10
10
  try {
11
11
  if (token) {
12
- const authObj = await authenticateSSOToken({ token });
12
+ const authObj = await authenticateSSOToken(token);
13
13
  console.log('authObj', authObj);
14
14
  if (authObj.type == 'success') {
15
15
  console.log('success');
@@ -1,7 +0,0 @@
1
- const { createLoginMethods } = require('./login-methods-factory');
2
- const { validateMemberToken } = require('./sso-methods');
3
-
4
- module.exports = {
5
- createLoginMethods,
6
- validateMemberToken,
7
- };
@@ -1,24 +0,0 @@
1
- const { loginQAMember } = require('./qa-login-methods');
2
- const { authenticateSSOToken } = require('./sso-methods');
3
-
4
- /**
5
- * Creates login methods with injected generateSessionToken dependency
6
- * @param {Function} generateSessionToken - The Velo generateSessionToken function to inject
7
- * @returns {Object} Object containing loginQAMember and authenticateSSOToken methods
8
- */
9
- const createLoginMethods = generateSessionToken => {
10
- //There is no generateSessionToken SDK version, and the signOn of @wix/identity returns 403 error regardless that the permissions are valid
11
- //Therefore, as a workaround we need to inject the Velo version of generateSessionToken to the login methods.
12
- const injectGenerateSessionTokenToMethod =
13
- method =>
14
- async (...args) =>
15
- await method(...args, generateSessionToken);
16
- return {
17
- loginQAMember: injectGenerateSessionTokenToMethod(loginQAMember),
18
- authenticateSSOToken: injectGenerateSessionTokenToMethod(authenticateSSOToken),
19
- };
20
- };
21
-
22
- module.exports = {
23
- createLoginMethods,
24
- };