@getjones/test-infra 2.8.11 → 2.8.13
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/package.json +2 -1
- package/src/common/consts/userTypes.js +3 -1
- package/src/index.js +3 -1
- package/src/resources/virusFile.pdf +0 -0
- package/src/saas/internal-api/accounts/api/core/accounts.core.api.js +1 -12
- package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +1 -48
- package/src/saas/internal-api/accounts/index.js +1 -3
- package/src/saas/internal-api/dbEmails/consts/consts.js +3 -1
- package/src/saas/internal-api/reports/consts/consts.js +2 -1
- package/src/saas/internal-api/reports/models/report.model.js +1 -1
- package/src/saas/internal-api/uploadFiles/api/upload.file.api.js +25 -0
- package/src/saas/internal-api/uploadFiles/api/upload.file.service.js +32 -0
- package/src/saas/internal-api/uploadFiles/consts.js +25 -0
- package/src/saas/internal-api/uploadFiles/index.js +3 -0
- package/src/saas/internal-api/users/api/users.api.js +15 -2
- package/src/saas/internal-api/users/api/users.service.js +56 -3
- package/src/saas/internal-api/users/index.js +3 -1
- package/src/saas/internal-api/{accounts/models/core/create.inner.system.account.model.js → users/models/create.inner.system.user.model.js} +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getjones/test-infra",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.13",
|
|
4
4
|
"description": "Providing internal and openapi interface",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"chai": "^4.3.4",
|
|
16
16
|
"dotenv": "^8.2.0",
|
|
17
17
|
"enum": "^3.0.4",
|
|
18
|
+
"form-data": "^4.0.0",
|
|
18
19
|
"mocha": "^8.3.2"
|
|
19
20
|
},
|
|
20
21
|
"devDependencies": {
|
package/src/index.js
CHANGED
|
@@ -39,6 +39,7 @@ const getInternalAPI = () => {
|
|
|
39
39
|
const threadScheduler = require('./saas/internal-api/thread-scheduler/runner');
|
|
40
40
|
const dbEmails = require('./saas/internal-api/dbEmails/index');
|
|
41
41
|
const agreement = require('./saas/internal-api/agreement/index');
|
|
42
|
+
const uploadFile = require('./saas/internal-api/uploadFiles/index');
|
|
42
43
|
|
|
43
44
|
const internalAPI = {
|
|
44
45
|
defaults,
|
|
@@ -63,7 +64,8 @@ const getInternalAPI = () => {
|
|
|
63
64
|
threadScheduler,
|
|
64
65
|
dbEmails,
|
|
65
66
|
factory,
|
|
66
|
-
agreement
|
|
67
|
+
agreement,
|
|
68
|
+
uploadFile
|
|
67
69
|
};
|
|
68
70
|
|
|
69
71
|
return internalAPI;
|
|
Binary file
|
|
@@ -4,8 +4,6 @@ const { backendUrl } = require('../../../../../env').getEnv();
|
|
|
4
4
|
const Endpoints = {
|
|
5
5
|
getAccount: `${backendUrl}/saas/accounts`,
|
|
6
6
|
create: `${backendUrl}/saas/createaccount`,
|
|
7
|
-
createInnerSystemAccount: `${backendUrl}/saas/superuser/user`,
|
|
8
|
-
getInnerSystemAccountsPerRole: `${backendUrl}/saas/users`,
|
|
9
7
|
delete: `${backendUrl}/saas/account`,
|
|
10
8
|
edit: accountId => `${backendUrl}/saas/account/${accountId}/settings`
|
|
11
9
|
};
|
|
@@ -14,15 +12,6 @@ const create = (account, context) => {
|
|
|
14
12
|
return requests.postRequestHandler(Endpoints.create, account, context);
|
|
15
13
|
};
|
|
16
14
|
|
|
17
|
-
const createInnerSystemAccount = (innerSystemUser, icsContext) => {
|
|
18
|
-
return requests.postRequestHandler(Endpoints.createInnerSystemAccount, innerSystemUser, icsContext);
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
const getInnerSystemAccountsPerRole = (roles, icsContext) => {
|
|
22
|
-
const params = { roles };
|
|
23
|
-
return requests.getRequestHandler(Endpoints.getInnerSystemAccountsPerRole, params, icsContext);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
15
|
const deleteAccount = (accountId, context) => {
|
|
27
16
|
return requests.deleteRequestHandler(Endpoints.delete, context, {}, { 'userId': accountId });
|
|
28
17
|
};
|
|
@@ -36,4 +25,4 @@ const getByName = (accountName, context) => {
|
|
|
36
25
|
return requests.getRequestHandler(Endpoints.getAccount, params, context);
|
|
37
26
|
};
|
|
38
27
|
|
|
39
|
-
module.exports = { create, getByName, deleteAccount, updateAccountSettings
|
|
28
|
+
module.exports = { create, getByName, deleteAccount, updateAccountSettings };
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
const env = require('../../../../../env');
|
|
2
2
|
const accountsAPI = require('./accounts.core.api');
|
|
3
3
|
const CreateAccountModel = require('../../models/core/create.account.model');
|
|
4
|
-
const CreateInnerSystemAccountModel = require('../../models/core/create.inner.system.account.model');
|
|
5
4
|
const { validateType } = require('../../../../../common/validations/typeValidations');
|
|
6
|
-
const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
|
|
7
|
-
const { ROLES } = require('../../../../../../../../src/saas/internal-api/common/users/consts');
|
|
8
|
-
const userTypes = require('../../../../../common/consts/userTypes');
|
|
9
5
|
|
|
10
6
|
const { accountCreationSecret } = env.getEnv();
|
|
11
7
|
|
|
@@ -20,48 +16,6 @@ const createAccount = async (createAccountModel, context) => {
|
|
|
20
16
|
return accountsAPI.create(createAccountModel, context);
|
|
21
17
|
};
|
|
22
18
|
|
|
23
|
-
const createInnerSystemAccount = async (innerSystemCreateAccountModel, icsContext) => {
|
|
24
|
-
validateType(innerSystemCreateAccountModel, CreateInnerSystemAccountModel);
|
|
25
|
-
const response = await accountsAPI.createInnerSystemAccount(innerSystemCreateAccountModel, icsContext);
|
|
26
|
-
|
|
27
|
-
if (response.status !== httpResponseStatusCodes.OK) {
|
|
28
|
-
throw Error(`Create inner system account failed\n${response}`);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return response.data;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const getInnerSystemAccountsPerRole = async icsContext => {
|
|
35
|
-
const roles = `${userTypes.ICS},${ROLES.auditor},${ROLES.operator}`;
|
|
36
|
-
const response = await accountsAPI.getInnerSystemAccountsPerRole(roles, icsContext);
|
|
37
|
-
|
|
38
|
-
if (response.status !== httpResponseStatusCodes.OK) {
|
|
39
|
-
throw Error(`Get inner system accounts failed\n${response}`);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return response.data;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const getOrCreateInnerSystemAccount = async (innerSystemCreateAccountModel, role, icsContext) => {
|
|
46
|
-
const accountEmail = innerSystemCreateAccountModel.email;
|
|
47
|
-
const account = await getInnerSystemAccountByEmail(accountEmail, role, icsContext);
|
|
48
|
-
|
|
49
|
-
if (account) {
|
|
50
|
-
return account;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
await createInnerSystemAccount(innerSystemCreateAccountModel, icsContext);
|
|
54
|
-
return getInnerSystemAccountByEmail(accountEmail, role, icsContext);
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
const getInnerSystemAccountByEmail = async (accountEmail, role, icsContext) => {
|
|
58
|
-
const accountsPerRole = await getInnerSystemAccountsPerRole(icsContext);
|
|
59
|
-
const accountsOfRole = accountsPerRole[role];
|
|
60
|
-
const account = accountsOfRole.find(({ email }) => email === accountEmail);
|
|
61
|
-
|
|
62
|
-
return account;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
19
|
const getAccount = async (accountName, context) => {
|
|
66
20
|
const response = await accountsAPI.getByName(accountName, context);
|
|
67
21
|
|
|
@@ -119,6 +73,5 @@ module.exports = {
|
|
|
119
73
|
getAccountId,
|
|
120
74
|
createAccount,
|
|
121
75
|
deleteAccountByName,
|
|
122
|
-
deleteAccountById
|
|
123
|
-
getOrCreateInnerSystemAccount
|
|
76
|
+
deleteAccountById
|
|
124
77
|
};
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
const CreateAccountModel = require('./models/core/create.account.model');
|
|
2
|
-
const
|
|
3
|
-
const coreModels = { CreateAccountModel, CreateInnerSystemAccountModel };
|
|
4
|
-
|
|
2
|
+
const coreModels = { CreateAccountModel };
|
|
5
3
|
const UpdateAccountSettingsModel = require('./models/settings/update.settings.model');
|
|
6
4
|
const settingsModels = { UpdateAccountSettingsModel };
|
|
7
5
|
|
|
@@ -25,7 +25,8 @@ const EMAIL_SUBJECT = {
|
|
|
25
25
|
sendGapsForTenant: ({ requesterName }) => `New Insurance Docs Required for leased space at ${requesterName} - `,
|
|
26
26
|
notCompliant: ({ recordCompanyName, requesterName }) => `Please Review COI Gaps - ${recordCompanyName} (${requesterName})`,
|
|
27
27
|
wrongCoi: ({ recordCompanyName, requesterName }) => `Incorrect File Submission - COI Still Required for ${recordCompanyName} - ${requesterName}`,
|
|
28
|
-
|
|
28
|
+
sendGapsVendorFullName: ({ requesterName, recordFirstName, recordLastName }) => `New Insurance Docs Required for ${requesterName} - ${recordFirstName} ${recordLastName}`,
|
|
29
|
+
sendGapsTenantFullName: ({ requesterName, recordFirstName, recordLastName }) => `New Insurance Docs Required for leased space at ${requesterName} - ${recordFirstName} ${recordLastName}`,
|
|
29
30
|
requestNewCoiExpired: ({ recordCompanyName }) => `${recordCompanyName}'s COI is`,
|
|
30
31
|
firstReminder: ({ requesterName }) => `We are still awaiting the Insurance Docs for ${requesterName}`,
|
|
31
32
|
secondReminder: ({ requesterName }) => `${requesterName} still needs`,
|
|
@@ -38,6 +39,7 @@ const EMAIL_SUBJECT = {
|
|
|
38
39
|
sameDayExpirationPMAutoRenewal: ({ recordCompanyName }) => `COI expired for ${recordCompanyName} at`,
|
|
39
40
|
requirementsUpdatedNotification: ({ requesterName }) => `Updated Requirements - Your Insurance Docs are needed for ${requesterName}`,
|
|
40
41
|
updatedRequirementsSubjectPrefix: () => 'Updated Requirements - ',
|
|
42
|
+
malwareFileFound: ({ recordCompanyName }) => `File upload failed to pass security scan for ${recordCompanyName}`,
|
|
41
43
|
fraudAuditorReview: ({ recordCompanyName, requesterName }) => `Authentication check for ${recordCompanyName} at ${requesterName}`,
|
|
42
44
|
requestNewCoi: ({ recordCompanyName, requesterName, isExpired }) => `${recordCompanyName}'s COI is ${isExpired ? 'expired' : 'about to expire'} - ${requesterName}`,
|
|
43
45
|
malwareCoiFound: 'COI upload failed to pass security scan',
|
|
@@ -36,7 +36,8 @@ const XlsxReportTypes = {
|
|
|
36
36
|
WAIVERS_REPORT: 'WaiversReport',
|
|
37
37
|
USER_MANAGEMENT_REPORT: 'UserManagementReport',
|
|
38
38
|
COVERAGE_GAPS_REPORT: 'CoverageGapsReport',
|
|
39
|
-
EXPIRING_RECORDS_REPORT: 'ExpiringRecordsReport'
|
|
39
|
+
EXPIRING_RECORDS_REPORT: 'ExpiringRecordsReport',
|
|
40
|
+
COMPLIANCE_STATUS_BY_POLICY_REPORT: 'ComplianceStatusByPolicy'
|
|
40
41
|
};
|
|
41
42
|
|
|
42
43
|
const ScheduledReportFrequency = {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const requests = require('../../../../common/requests/cookieAuth/requests');
|
|
2
|
+
const { backendUrl } = require('../../../../env').getEnv();
|
|
3
|
+
|
|
4
|
+
const Endpoints = {
|
|
5
|
+
getRelatedDocPreSignedUrl: `${backendUrl}/pre-signed-url/upload/document`,
|
|
6
|
+
uploadRelatedDoc: recordId => `${backendUrl}/saas/contractor/${recordId}/document`
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const getRelatedDocPreSignedUrl = (formData, context) => {
|
|
10
|
+
return requests.postRequestHandler(Endpoints.getRelatedDocPreSignedUrl, formData, context, formData.getHeaders());
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const uploadFileToS3 = (preSignedUrl, file) => {
|
|
14
|
+
return requests.putRequestHandler(preSignedUrl, file);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const uploadRelatedDoc = (recordId, uploadDocumentModel, context) => {
|
|
18
|
+
return requests.postRequestHandler(Endpoints.uploadRelatedDoc(recordId), uploadDocumentModel, context);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
module.exports = {
|
|
22
|
+
getRelatedDocPreSignedUrl,
|
|
23
|
+
uploadRelatedDoc,
|
|
24
|
+
uploadFileToS3
|
|
25
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const uploadFileApi = require('./upload.file.api');
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const FormData = require('form-data');
|
|
5
|
+
const consts = require('../consts');
|
|
6
|
+
|
|
7
|
+
const { RELATED_DOC_TYPES, S3_FILE_TYPE } = consts;
|
|
8
|
+
|
|
9
|
+
const getRelatedDocPreSignedUrl = (recordId, context, { filePath }) => {
|
|
10
|
+
const formData = new FormData();
|
|
11
|
+
const file = fs.createReadStream(filePath);
|
|
12
|
+
formData.append('recordId', recordId);
|
|
13
|
+
formData.append('fileType', S3_FILE_TYPE.DOCUMENT);
|
|
14
|
+
formData.append('file', file) ;
|
|
15
|
+
|
|
16
|
+
return uploadFileApi.getRelatedDocPreSignedUrl(formData, context);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const uploadFileToS3 = (preSignedUrl, filePath) => {
|
|
20
|
+
return uploadFileApi.uploadFileToS3(preSignedUrl, fs.readFileSync(filePath));
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const uploadRelatedDoc = async (recordId, context, { filePath, type = RELATED_DOC_TYPES.LEASE } = {}) => {
|
|
24
|
+
const { data: { preSignedUrl, fileName: fullFilePath } } = await getRelatedDocPreSignedUrl(recordId, context, { filePath });
|
|
25
|
+
await uploadFileToS3(preSignedUrl, filePath);
|
|
26
|
+
const originalFileName = path.basename(filePath);
|
|
27
|
+
const file = fs.statSync(filePath);
|
|
28
|
+
return uploadFileApi.uploadRelatedDoc(recordId, { name: originalFileName, type, fullFilePath, fileSize: file.size }, context);
|
|
29
|
+
};
|
|
30
|
+
module.exports = {
|
|
31
|
+
uploadRelatedDoc
|
|
32
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const RELATED_DOC_TYPES = {
|
|
2
|
+
LEASE: 'LEASE',
|
|
3
|
+
W9: 'W9',
|
|
4
|
+
SIGNED_AGREEMENT: 'SIGNED_AGREEMENT',
|
|
5
|
+
WAIVER_APPROVAL: 'WAIVER_APPROVAL',
|
|
6
|
+
POLICIES: 'POLICIES',
|
|
7
|
+
OTHER: 'OTHER'
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
S3_FILE_TYPE = {
|
|
11
|
+
DOCUMENT: 'DOCUMENT',
|
|
12
|
+
REPORTS: 'REPORTS',
|
|
13
|
+
SNIPPET: 'SNIPPET',
|
|
14
|
+
CONTRACT: 'CONTRACT',
|
|
15
|
+
TEMPCOI: 'TEMPCOI',
|
|
16
|
+
COI: 'COI',
|
|
17
|
+
ATTACHMENT: 'ATTACHMENT',
|
|
18
|
+
OCRDATA: 'OCRDATA',
|
|
19
|
+
VENDORREPORT: 'VENDORREPORT'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
module.exports = {
|
|
23
|
+
RELATED_DOC_TYPES,
|
|
24
|
+
S3_FILE_TYPE
|
|
25
|
+
};
|
|
@@ -15,7 +15,9 @@ const Endpoints = {
|
|
|
15
15
|
signupUser: `${backendUrl}/_saas/guests/signup`,
|
|
16
16
|
removeAllUserTraceFromDb: userId => `${backendUrl}/saas/user/automation/${userId}`,
|
|
17
17
|
userEmailNotificationsSettings: `${backendUrl}/saas/account/notification/set`,
|
|
18
|
-
sendForgetPasswordMail: `${backendUrl}/_saas/forgotPassword
|
|
18
|
+
sendForgetPasswordMail: `${backendUrl}/_saas/forgotPassword`,
|
|
19
|
+
createInnerSystemUser: `${backendUrl}/saas/superuser/user`,
|
|
20
|
+
getInnerSystemUsersPerRole: `${backendUrl}/saas/users`
|
|
19
21
|
};
|
|
20
22
|
|
|
21
23
|
const invite = (invitedUser, context, { disableSendMail = true } = {}) => {
|
|
@@ -69,6 +71,15 @@ const editUserEmailNotificationsSettings = (userId, notificationSettingsModel, c
|
|
|
69
71
|
return requests.postRequestHandler(Endpoints.userEmailNotificationsSettings, notificationSettingsModel, context, {}, params);
|
|
70
72
|
};
|
|
71
73
|
|
|
74
|
+
const createInnerSystemUser = (innerSystemUser, icsContext) => {
|
|
75
|
+
return requests.postRequestHandler(Endpoints.createInnerSystemUser, innerSystemUser, icsContext);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const getInnerSystemUsersPerRole = (roles, icsContext) => {
|
|
79
|
+
const params = { roles };
|
|
80
|
+
return requests.getRequestHandler(Endpoints.getInnerSystemUsersPerRole, params, icsContext);
|
|
81
|
+
};
|
|
82
|
+
|
|
72
83
|
const sendForgetPasswordMail = userEmail => {
|
|
73
84
|
const body = { email: userEmail };
|
|
74
85
|
return requests.postRequestHandler(Endpoints.sendForgetPasswordMail, body);
|
|
@@ -87,5 +98,7 @@ module.exports = {
|
|
|
87
98
|
editUserProjects,
|
|
88
99
|
reinviteUser,
|
|
89
100
|
editUserEmailNotificationsSettings,
|
|
90
|
-
sendForgetPasswordMail
|
|
101
|
+
sendForgetPasswordMail,
|
|
102
|
+
createInnerSystemUser,
|
|
103
|
+
getInnerSystemUsersPerRole
|
|
91
104
|
};
|
|
@@ -6,6 +6,9 @@ const userAPI = require('./users.api');
|
|
|
6
6
|
const util = require('../utils/util');
|
|
7
7
|
const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
|
|
8
8
|
const { NotificationSettingsModel } = require('../models/notification.settings.model');
|
|
9
|
+
const CreateInnerSystemAccountModel = require('../models/create.inner.system.user.model');
|
|
10
|
+
|
|
11
|
+
const userTypes = require('../../../../common/consts/userTypes');
|
|
9
12
|
|
|
10
13
|
const inviteUser = async (invitedUser, context, { disableSendMail } = {}) => {
|
|
11
14
|
return userAPI.invite(invitedUser, context, { disableSendMail });
|
|
@@ -36,8 +39,15 @@ const getUserByEmail = async (email, context) => {
|
|
|
36
39
|
const getOrCreateUser = async (email, role, projectsIds, context, { fullName = role, password = credentials.strongPassword } = {}) => {
|
|
37
40
|
let userResponse = await getUserByEmail(email, context);
|
|
38
41
|
|
|
39
|
-
if (userResponse.data
|
|
40
|
-
|
|
42
|
+
if (userResponse.data !== '') {
|
|
43
|
+
const { projectPermissions } = userResponse.data;
|
|
44
|
+
const projectPermissionsIds = projectPermissions.map(projectPermission => projectPermission.projectId);
|
|
45
|
+
|
|
46
|
+
projectsIds = projectsIds.filter(projectId => !projectPermissionsIds.includes(projectId));
|
|
47
|
+
|
|
48
|
+
if (userResponse.data && userResponse.data.subuserId && userResponse.data.isVerified && !projectsIds.length) {
|
|
49
|
+
return userResponse.data;
|
|
50
|
+
}
|
|
41
51
|
}
|
|
42
52
|
|
|
43
53
|
const inviteUserModel = new InviteUserModel(email, role, projectsIds, context);
|
|
@@ -91,6 +101,48 @@ const editUserEmailNotificationsSettings = (userId, notificationSettingsModel, c
|
|
|
91
101
|
return userAPI.editUserEmailNotificationsSettings(userId, notificationSettingsModel, context);
|
|
92
102
|
};
|
|
93
103
|
|
|
104
|
+
const createInnerSystemUser = async (createInnerSystemUserModel, icsContext) => {
|
|
105
|
+
validateType(createInnerSystemUserModel, CreateInnerSystemAccountModel);
|
|
106
|
+
const response = await userAPI.createInnerSystemUser(createInnerSystemUserModel, icsContext);
|
|
107
|
+
|
|
108
|
+
if (response.status !== httpResponseStatusCodes.OK) {
|
|
109
|
+
throw Error(`Create inner system account failed\n${response}`);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return response.data;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const getInnerSystemUsersPerRole = async icsContext => {
|
|
116
|
+
const roles = `${userTypes.ICS},${userTypes.auditor},${userTypes.operator}`;
|
|
117
|
+
const response = await userAPI.getInnerSystemUsersPerRole(roles, icsContext);
|
|
118
|
+
|
|
119
|
+
if (response.status !== httpResponseStatusCodes.OK) {
|
|
120
|
+
throw Error(`Get inner system accounts failed\n${response}`);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return response.data;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const getOrCreateInnerSystemUser = async (innerSystemCreateAccountModel, role, icsContext) => {
|
|
127
|
+
const accountEmail = innerSystemCreateAccountModel.email;
|
|
128
|
+
const account = await getInnerSystemUserByEmail(accountEmail, role, icsContext);
|
|
129
|
+
|
|
130
|
+
if (account) {
|
|
131
|
+
return account;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
await createInnerSystemUser(innerSystemCreateAccountModel, icsContext);
|
|
135
|
+
return getInnerSystemUserByEmail(accountEmail, role, icsContext);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
const getInnerSystemUserByEmail = async (accountEmail, role, icsContext) => {
|
|
139
|
+
const accountsPerRole = await getInnerSystemUsersPerRole(icsContext);
|
|
140
|
+
const accountsOfRole = accountsPerRole[role];
|
|
141
|
+
const account = accountsOfRole.find(({ email }) => email === accountEmail);
|
|
142
|
+
|
|
143
|
+
return account;
|
|
144
|
+
};
|
|
145
|
+
|
|
94
146
|
const sendForgetPasswordMail = userEmail => {
|
|
95
147
|
return userAPI.sendForgetPasswordMail(userEmail);
|
|
96
148
|
};
|
|
@@ -109,5 +161,6 @@ module.exports = {
|
|
|
109
161
|
editUserProjects,
|
|
110
162
|
reinviteUser,
|
|
111
163
|
editUserEmailNotificationsSettings,
|
|
112
|
-
sendForgetPasswordMail
|
|
164
|
+
sendForgetPasswordMail,
|
|
165
|
+
getOrCreateInnerSystemUser
|
|
113
166
|
};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const userModels = require('./models/users.model');
|
|
2
2
|
const { NotificationSettingsModel } = require('./models/notification.settings.model');
|
|
3
|
+
const CreateInnerSystemUserModel = require('./models/create.inner.system.user.model');
|
|
4
|
+
|
|
3
5
|
const services = require('./api/users.service');
|
|
4
6
|
const util = require('./utils/util');
|
|
5
7
|
|
|
@@ -9,6 +11,6 @@ const tenants = {
|
|
|
9
11
|
services: tenantUserService
|
|
10
12
|
};
|
|
11
13
|
|
|
12
|
-
const models = { ... userModels, NotificationSettingsModel };
|
|
14
|
+
const models = { ... userModels, NotificationSettingsModel, CreateInnerSystemUserModel };
|
|
13
15
|
|
|
14
16
|
module.exports = { services, models, util, tenants };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const env = require('
|
|
1
|
+
const env = require('../../../../env');
|
|
2
2
|
const { credentials } = env.getEnv();
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class CreateInnerSystemUserModel {
|
|
5
5
|
constructor({
|
|
6
6
|
fullName = '',
|
|
7
7
|
email = '',
|
|
@@ -15,4 +15,4 @@ class CreateInnerSystemAccountModel {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
module.exports =
|
|
18
|
+
module.exports = CreateInnerSystemUserModel;
|