@researchdatabox/redbox-core 0.0.0-bootstrap.0 → 0.0.1-beta.9018

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.
Files changed (185) hide show
  1. package/dist/IntegrationAuditParams.d.ts +11 -0
  2. package/dist/IntegrationAuditParams.js +14 -0
  3. package/dist/RecordAuditParams.d.ts +2 -0
  4. package/dist/RecordAuditParams.d.ts.map +1 -1
  5. package/dist/RecordAuditParams.js +3 -1
  6. package/dist/RecordsService.d.ts +14 -0
  7. package/dist/RecordsService.d.ts.map +1 -1
  8. package/dist/StorageService.d.ts +3 -0
  9. package/dist/StorageService.d.ts.map +1 -1
  10. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  11. package/dist/config/agendaQueue.config.js +10 -1
  12. package/dist/config/auth.config.d.ts.map +1 -1
  13. package/dist/config/auth.config.js +2 -1
  14. package/dist/config/brandingConfigurationDefaults.config.d.ts +3 -0
  15. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  16. package/dist/config/brandingConfigurationDefaults.config.js +154 -3
  17. package/dist/config/figshareDev.config.d.ts +12 -0
  18. package/dist/config/figshareDev.config.js +9 -0
  19. package/dist/config/index.d.ts +4 -16
  20. package/dist/config/index.d.ts.map +1 -1
  21. package/dist/config/index.js +4 -13
  22. package/dist/config/recordtype.config.d.ts.map +1 -1
  23. package/dist/config/recordtype.config.js +17 -1
  24. package/dist/config/routes.config.d.ts.map +1 -1
  25. package/dist/config/routes.config.js +47 -43
  26. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  27. package/dist/configmodels/AdminSidebarConfig.js +3 -2
  28. package/dist/configmodels/AuthorizedDomainsEmails.d.ts +48 -0
  29. package/dist/configmodels/AuthorizedDomainsEmails.d.ts.map +1 -1
  30. package/dist/configmodels/AuthorizedDomainsEmails.js +50 -2
  31. package/dist/configmodels/ConfigModels.d.ts +7 -1
  32. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  33. package/dist/configmodels/ConfigModels.js +25 -1
  34. package/dist/configmodels/DoiPublishing.d.ts +4711 -0
  35. package/dist/configmodels/DoiPublishing.js +639 -0
  36. package/dist/configmodels/FigsharePublishing.d.ts +1376 -0
  37. package/dist/configmodels/FigsharePublishing.js +630 -0
  38. package/dist/configmodels/SystemMessage.d.ts +32 -0
  39. package/dist/configmodels/SystemMessage.d.ts.map +1 -1
  40. package/dist/configmodels/SystemMessage.js +34 -2
  41. package/dist/controllers/AppConfigController.js +3 -3
  42. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  43. package/dist/controllers/FormVocabularyController.js +4 -1
  44. package/dist/controllers/RecordAuditController.d.ts +29 -14
  45. package/dist/controllers/RecordAuditController.d.ts.map +1 -1
  46. package/dist/controllers/RecordAuditController.js +455 -57
  47. package/dist/controllers/RecordController.d.ts +1 -16
  48. package/dist/controllers/RecordController.d.ts.map +1 -1
  49. package/dist/controllers/RecordController.js +20 -39
  50. package/dist/controllers/index.d.ts.map +1 -1
  51. package/dist/controllers/index.js +4 -1
  52. package/dist/controllers/webservice/AppConfigController.js +3 -3
  53. package/dist/controllers/webservice/IntegrationAuditController.d.ts +10 -0
  54. package/dist/controllers/webservice/IntegrationAuditController.js +98 -0
  55. package/dist/form-config/default-1.0-draft.d.ts.map +1 -1
  56. package/dist/form-config/default-1.0-draft.js +26 -2
  57. package/dist/form-config/index.d.ts.map +1 -1
  58. package/dist/form-config/index.js +1 -1
  59. package/dist/index.d.ts +4 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +12 -2
  62. package/dist/model/storage/IntegrationAuditModel.d.ts +47 -0
  63. package/dist/model/storage/IntegrationAuditModel.js +104 -0
  64. package/dist/model/storage/index.d.ts +1 -0
  65. package/dist/model/storage/index.d.ts.map +1 -1
  66. package/dist/model/storage/index.js +7 -2
  67. package/dist/services/AppConfigService.d.ts +20 -2
  68. package/dist/services/AppConfigService.d.ts.map +1 -1
  69. package/dist/services/AppConfigService.js +129 -15
  70. package/dist/services/DoiService.d.ts +19 -25
  71. package/dist/services/DoiService.d.ts.map +1 -1
  72. package/dist/services/DoiService.js +258 -408
  73. package/dist/services/FigshareService.d.ts +35 -65
  74. package/dist/services/FigshareService.d.ts.map +1 -1
  75. package/dist/services/FigshareService.js +477 -2056
  76. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  77. package/dist/services/FormRecordConsistencyService.js +4 -2
  78. package/dist/services/FormsService.d.ts.map +1 -1
  79. package/dist/services/FormsService.js +4 -2
  80. package/dist/services/IntegrationAuditService.d.ts +100 -0
  81. package/dist/services/IntegrationAuditService.d.ts.map +1 -1
  82. package/dist/services/IntegrationAuditService.js +561 -0
  83. package/dist/services/RecordsService.d.ts +16 -0
  84. package/dist/services/RecordsService.d.ts.map +1 -1
  85. package/dist/services/RecordsService.js +54 -2
  86. package/dist/services/SolrSearchService.d.ts +1 -0
  87. package/dist/services/SolrSearchService.d.ts.map +1 -1
  88. package/dist/services/SolrSearchService.js +14 -3
  89. package/dist/services/VocabularyService.d.ts +1 -0
  90. package/dist/services/VocabularyService.d.ts.map +1 -1
  91. package/dist/services/VocabularyService.js +4 -1
  92. package/dist/services/doi-v2/audit.d.ts +7 -0
  93. package/dist/services/doi-v2/audit.js +30 -0
  94. package/dist/services/doi-v2/bindings.d.ts +8 -0
  95. package/dist/services/doi-v2/bindings.js +85 -0
  96. package/dist/services/doi-v2/config.d.ts +7 -0
  97. package/dist/services/doi-v2/config.js +51 -0
  98. package/dist/services/doi-v2/context.d.ts +18 -0
  99. package/dist/services/doi-v2/context.js +41 -0
  100. package/dist/services/doi-v2/http.d.ts +21 -0
  101. package/dist/services/doi-v2/http.js +88 -0
  102. package/dist/services/doi-v2/payload.d.ts +4 -0
  103. package/dist/services/doi-v2/payload.js +291 -0
  104. package/dist/services/doi-v2/profiles.d.ts +5 -0
  105. package/dist/services/doi-v2/profiles.js +31 -0
  106. package/dist/services/doi-v2/runtime.d.ts +16 -0
  107. package/dist/services/doi-v2/runtime.js +173 -0
  108. package/dist/services/doi-v2/types.d.ts +49 -0
  109. package/dist/services/doi-v2/types.js +3 -0
  110. package/dist/services/figshare-v2/assets.d.ts +5 -0
  111. package/dist/services/figshare-v2/assets.js +297 -0
  112. package/dist/services/figshare-v2/bindings.d.ts +6 -0
  113. package/dist/services/figshare-v2/bindings.js +60 -0
  114. package/dist/services/figshare-v2/config.d.ts +13 -0
  115. package/dist/services/figshare-v2/config.js +81 -0
  116. package/dist/services/figshare-v2/context.d.ts +4 -0
  117. package/dist/services/figshare-v2/context.js +20 -0
  118. package/dist/services/figshare-v2/embargo.d.ts +5 -0
  119. package/dist/services/figshare-v2/embargo.js +36 -0
  120. package/dist/services/figshare-v2/http.d.ts +25 -0
  121. package/dist/services/figshare-v2/http.js +270 -0
  122. package/dist/services/figshare-v2/metadata.d.ts +6 -0
  123. package/dist/services/figshare-v2/metadata.js +221 -0
  124. package/dist/services/figshare-v2/observability.d.ts +7 -0
  125. package/dist/services/figshare-v2/observability.js +85 -0
  126. package/dist/services/figshare-v2/plan.d.ts +5 -0
  127. package/dist/services/figshare-v2/plan.js +51 -0
  128. package/dist/services/figshare-v2/publish.d.ts +5 -0
  129. package/dist/services/figshare-v2/publish.js +20 -0
  130. package/dist/services/figshare-v2/queue.d.ts +4 -0
  131. package/dist/services/figshare-v2/queue.js +11 -0
  132. package/dist/services/figshare-v2/runtime.d.ts +11 -0
  133. package/dist/services/figshare-v2/runtime.js +116 -0
  134. package/dist/services/figshare-v2/types.d.ts +194 -0
  135. package/dist/services/figshare-v2/types.js +37 -0
  136. package/dist/services/figshare-v2/workflow.d.ts +3 -0
  137. package/dist/services/figshare-v2/workflow.js +7 -0
  138. package/dist/services/figshare-v2/writeback.d.ts +5 -0
  139. package/dist/services/figshare-v2/writeback.js +45 -0
  140. package/dist/services/index.d.ts +3 -0
  141. package/dist/services/index.d.ts.map +1 -1
  142. package/dist/services/index.js +7 -2
  143. package/dist/visitor/client.visitor.d.ts +3 -0
  144. package/dist/visitor/client.visitor.d.ts.map +1 -1
  145. package/dist/visitor/client.visitor.js +8 -1
  146. package/dist/visitor/construct.visitor.d.ts +3 -0
  147. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  148. package/dist/visitor/construct.visitor.js +95 -70
  149. package/dist/visitor/data-value.visitor.d.ts +3 -0
  150. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  151. package/dist/visitor/data-value.visitor.js +5 -1
  152. package/dist/visitor/json-type-def.visitor.d.ts +3 -0
  153. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  154. package/dist/visitor/json-type-def.visitor.js +5 -1
  155. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +3 -0
  156. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  157. package/dist/visitor/migrate-config-v4-v5.visitor.js +77 -64
  158. package/dist/visitor/template.visitor.d.ts +3 -0
  159. package/dist/visitor/template.visitor.d.ts.map +1 -1
  160. package/dist/visitor/template.visitor.js +5 -1
  161. package/dist/visitor/validator.visitor.d.ts +3 -1
  162. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  163. package/dist/visitor/validator.visitor.js +6 -1
  164. package/dist/visitor/vocab-inline.visitor.d.ts +16 -1
  165. package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
  166. package/dist/visitor/vocab-inline.visitor.js +109 -14
  167. package/package.json +26 -14
  168. package/dist/config/datacite.config.d.ts +0 -51
  169. package/dist/config/datacite.config.d.ts.map +0 -1
  170. package/dist/config/datacite.config.js +0 -44
  171. package/dist/config/figshareAPI.config.d.ts +0 -116
  172. package/dist/config/figshareAPI.config.d.ts.map +0 -1
  173. package/dist/config/figshareAPI.config.js +0 -857
  174. package/dist/config/figshareAPIEnv.config.d.ts +0 -11
  175. package/dist/config/figshareAPIEnv.config.d.ts.map +0 -1
  176. package/dist/config/figshareAPIEnv.config.js +0 -13
  177. package/dist/config/figshareRedboxFORMapping.config.d.ts +0 -15
  178. package/dist/config/figshareRedboxFORMapping.config.d.ts.map +0 -1
  179. package/dist/config/figshareRedboxFORMapping.config.js +0 -7458
  180. package/dist/config/relatedObjectsFormDefinition.config.d.ts.map +0 -1
  181. package/dist/form-config/dataPublication-1.0-draft.d.ts.map +0 -1
  182. package/dist/form-config/dataPublication-1.0-embargoed.d.ts.map +0 -1
  183. package/dist/form-config/dataPublication-1.0-published.d.ts.map +0 -1
  184. package/dist/form-config/dataPublication-1.0-queued.d.ts.map +0 -1
  185. package/dist/form-config/dataPublication-1.0-retired.d.ts.map +0 -1
@@ -1,74 +1,472 @@
1
1
  "use strict";
2
- // Copyright (c) 2017 Queensland Cyber Infrastructure Foundation (http://www.qcif.edu.au/)
3
- //
4
- // GNU GENERAL PUBLIC LICENSE
5
- // Version 2, June 1991
6
- //
7
- // This program is free software; you can redistribute it and/or modify
8
- // it under the terms of the GNU General Public License as published by
9
- // the Free Software Foundation; either version 2 of the License, or
10
- // (at your option) any later version.
11
- //
12
- // This program is distributed in the hope that it will be useful,
13
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- // GNU General Public License for more details.
16
- //
17
- // You should have received a copy of the GNU General Public License along
18
- // with this program; if not, write to the Free Software Foundation, Inc.,
19
- // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
2
  Object.defineProperty(exports, "__esModule", { value: true });
21
3
  exports.Controllers = void 0;
22
4
  const CoreController_1 = require("../CoreController");
23
- const momentShim_1 = require("../shims/momentShim");
24
- const lodash_1 = require("lodash");
5
+ const rxjs_1 = require("rxjs");
6
+ const IntegrationAuditParams_1 = require("../IntegrationAuditParams");
7
+ const RecordAuditModel_1 = require("../model/storage/RecordAuditModel");
8
+ const IntegrationAuditModel_1 = require("../model/storage/IntegrationAuditModel");
9
+ const VALID_INTEGRATION_AUDIT_STATUSES = new Set(Object.values(IntegrationAuditModel_1.IntegrationAuditStatus));
25
10
  var Controllers;
26
11
  (function (Controllers) {
27
- /**
28
- * Responsible for all things related to the Dashboard
29
- *
30
- * @author <a target='_' href='https://github.com/andrewbrazzatti'>Andrew Brazzatti</a>
31
- */
32
12
  class RecordAudit extends CoreController_1.Controllers.Core.Controller {
33
13
  recordsService;
34
- /**
35
- * Exported methods, accessible from internet.
36
- */
37
- _exportedMethods = ['render', 'init'];
38
- /**
39
- * *************************************************************************************************
40
- * **************************************** Add custom methods **************************************
41
- * *************************************************************************************************
42
- */
14
+ _exportedMethods = [
15
+ 'render',
16
+ 'getAuditData',
17
+ 'getPermissionsData',
18
+ 'getIntegrationAuditData',
19
+ 'init',
20
+ ];
43
21
  init() {
44
22
  this.recordsService = sails.services.recordsservice;
45
23
  }
46
24
  bootstrap() { }
47
- render(req, res) {
48
- const oid = req.param('oid');
49
- const params = { oid: oid, dateFrom: null, dateTo: null };
50
- // Use this.recordsService or fallback to global if strictly needed, but migrated style is class property
51
- // However, RecordsService in this context is likely a static or singleton usage in the old code
52
- // checking RecordsService.ts to be sure.
53
- // Based on previous files, services are classes but often used via sails.services.
54
- // But here I'm importing the class.
55
- // If RecordsService has static methods, I can call them directly.
56
- // If not, I should use the instance.
57
- // The original code `RecordsService.getRecordAudit` implies static or global instance.
58
- // In redbox-core, services are classes.
59
- // If `getRecordAudit` is not static, I must use an instance.
60
- // I'll assume instance method for now and use `this.recordsService`.
61
- // Re-reading usage in original file: `RecordsService.getRecordAudit(params)`
62
- // Checking if getRecordAudit is static in RecordsService would be good.
63
- // But assuming standard pattern: `this.recordsService.getRecordAudit(params)`
64
- this.recordsService.getRecordAudit(params).then(records => {
65
- const orderedRecords = (0, lodash_1.orderBy)(records, ['updatedAt'], ['desc']);
66
- req.options.locals['records'] = orderedRecords;
67
- req.options.locals['moment'] = momentShim_1.momentShim;
68
- return this.sendView(req, res, 'record/viewAudit');
25
+ asError(error) {
26
+ return error instanceof Error ? error : new Error(String(error));
27
+ }
28
+ getReqBrand(req) {
29
+ const requestedBranding = String(req.param('branding') ?? req.session?.branding ?? '').trim();
30
+ return BrandingService.getBrand(requestedBranding) ?? BrandingService.getDefault();
31
+ }
32
+ getSafeRouteSegment(value) {
33
+ const segment = String(value ?? '').trim();
34
+ return /^[A-Za-z0-9_-]+$/.test(segment) ? segment : '';
35
+ }
36
+ resolveRouteSegment(...values) {
37
+ for (const value of values) {
38
+ const segment = this.getSafeRouteSegment(value);
39
+ if (!_.isEmpty(segment)) {
40
+ return segment;
41
+ }
42
+ }
43
+ return '';
44
+ }
45
+ buildRawAuditUrl(req, oid) {
46
+ const brand = this.getReqBrand(req);
47
+ const branding = this.resolveRouteSegment(req.param('branding'), req.options?.locals?.branding, req.session?.branding, brand?.name, brand?.id);
48
+ const portal = this.resolveRouteSegment(req.param('portal'), req.options?.locals?.portal, req.session?.portal);
49
+ if (_.isEmpty(branding) || _.isEmpty(portal)) {
50
+ return '';
51
+ }
52
+ return `/${branding}/${portal}/api/records/audit/${encodeURIComponent(oid)}`;
53
+ }
54
+ hasViewAccess(brand, user, record) {
55
+ const currentUser = user ?? {};
56
+ return (0, rxjs_1.of)(this.recordsService.hasViewAccess(brand, currentUser, (currentUser['roles'] ?? []), record));
57
+ }
58
+ isBrandAdmin(req) {
59
+ const brand = this.getReqBrand(req);
60
+ const roles = (req.user?.roles ?? []);
61
+ return roles.some(role => {
62
+ const roleBranding = role?.branding;
63
+ const roleBrandId = typeof roleBranding === 'string' ? roleBranding : roleBranding?.id;
64
+ return role?.name === 'Admin' && roleBrandId === brand.id;
65
+ });
66
+ }
67
+ getAuditSortValue(auditRecord) {
68
+ const rawValue = auditRecord['createdAt'] ?? auditRecord['updatedAt'] ?? auditRecord['dateCreated'] ?? null;
69
+ const parsed = rawValue == null ? Number.NaN : new Date(String(rawValue)).getTime();
70
+ return Number.isFinite(parsed) ? parsed : 0;
71
+ }
72
+ getActionLabelKey(action) {
73
+ return `@record-audit-action-${action}`;
74
+ }
75
+ toPathText(path) {
76
+ return path.reduce((value, segment, index) => {
77
+ if (typeof segment === 'number') {
78
+ return `${value}[${segment}]`;
79
+ }
80
+ if (index === 0) {
81
+ return String(segment);
82
+ }
83
+ return `${value}.${String(segment)}`;
84
+ }, '');
85
+ }
86
+ getDisplayPath(pathText) {
87
+ return pathText.startsWith('metadata.') ? pathText.slice('metadata.'.length) : pathText;
88
+ }
89
+ normalizePathForLookup(path) {
90
+ return path
91
+ .filter(segment => segment !== 'metadata' && typeof segment !== 'number')
92
+ .map(segment => String(segment));
93
+ }
94
+ collectLabelMappings(item, mappings, parentPath = []) {
95
+ if (!_.isPlainObject(item) && !Array.isArray(item)) {
96
+ return;
97
+ }
98
+ if (Array.isArray(item)) {
99
+ item.forEach(child => this.collectLabelMappings(child, mappings, parentPath));
100
+ return;
101
+ }
102
+ const itemRecord = item;
103
+ const layout = _.isPlainObject(itemRecord['layout']) ? itemRecord['layout'] : undefined;
104
+ const component = _.isPlainObject(itemRecord['component']) ? itemRecord['component'] : undefined;
105
+ const itemName = String(itemRecord['name'] ?? component?.['name'] ?? layout?.['name'] ?? '').trim();
106
+ const nextPath = itemName ? [...parentPath, itemName] : parentPath;
107
+ const label = String(layout?.['config'] && _.isPlainObject(layout['config']) ? layout['config']['label'] ?? '' : '') ||
108
+ String(component?.['config'] && _.isPlainObject(component['config']) ? component['config']['label'] ?? '' : '');
109
+ if (itemName && label) {
110
+ mappings.set(nextPath.join('.'), label);
111
+ }
112
+ const children = [
113
+ itemRecord['children'],
114
+ itemRecord['fields'],
115
+ itemRecord['items'],
116
+ itemRecord['components'],
117
+ layout?.['children'],
118
+ component?.['children'],
119
+ ];
120
+ children.forEach(child => {
121
+ if (Array.isArray(child)) {
122
+ child.forEach(entry => this.collectLabelMappings(entry, mappings, nextPath));
123
+ }
69
124
  });
70
125
  }
126
+ async buildFieldLabelMap(record, brand) {
127
+ const metaMetadata = (_.isPlainObject(record?.metaMetadata) ? record.metaMetadata : {});
128
+ const formName = String(metaMetadata['form'] ?? metaMetadata['formName'] ?? '').trim();
129
+ if (_.isEmpty(formName)) {
130
+ return new Map();
131
+ }
132
+ const brandId = String(metaMetadata['brandId'] ?? brand.id ?? '');
133
+ const form = await (0, rxjs_1.firstValueFrom)(FormsService.getFormByName(formName, true, brandId));
134
+ const configuration = form?.configuration;
135
+ const labelMap = new Map();
136
+ if (configuration != null) {
137
+ this.collectLabelMappings(configuration, labelMap);
138
+ }
139
+ return labelMap;
140
+ }
141
+ resolveFieldLabel(path, fieldLabelMap) {
142
+ const normalizedPath = this.normalizePathForLookup(path);
143
+ if (normalizedPath.length === 0) {
144
+ return undefined;
145
+ }
146
+ for (let start = 0; start < normalizedPath.length; start++) {
147
+ for (let end = normalizedPath.length; end > start; end--) {
148
+ const candidate = normalizedPath.slice(start, end).join('.');
149
+ const label = fieldLabelMap.get(candidate);
150
+ if (label) {
151
+ return label;
152
+ }
153
+ }
154
+ }
155
+ return undefined;
156
+ }
157
+ mapChange(change, fieldLabelMap) {
158
+ const pathText = this.toPathText(change.path);
159
+ const displayPath = this.getDisplayPath(pathText);
160
+ const label = this.resolveFieldLabel(change.path, fieldLabelMap);
161
+ return {
162
+ ...change,
163
+ pathText,
164
+ displayPath,
165
+ label,
166
+ displayName: label ?? displayPath,
167
+ };
168
+ }
169
+ mapActor(user) {
170
+ const auditUser = _.isPlainObject(user) ? user : {};
171
+ const username = String(auditUser['username'] ?? '');
172
+ const name = String(auditUser['name'] ?? '');
173
+ const email = String(auditUser['email'] ?? '');
174
+ return {
175
+ username,
176
+ name,
177
+ email,
178
+ displayName: name || username || 'Unknown',
179
+ };
180
+ }
181
+ buildAuditRowId(auditRecord, index) {
182
+ const persistedId = String(auditRecord['id'] ?? '').trim();
183
+ if (!_.isEmpty(persistedId)) {
184
+ return persistedId;
185
+ }
186
+ const oid = String(auditRecord['redboxOid'] ?? '');
187
+ const timestamp = String(auditRecord['createdAt'] ?? auditRecord['updatedAt'] ?? auditRecord['dateCreated'] ?? '');
188
+ return `${oid}:${timestamp}:${index}`;
189
+ }
190
+ async getRecordOrSendNotFound(req, res, oid) {
191
+ const record = await this.recordsService.getMeta(oid);
192
+ if (_.isEmpty(record)) {
193
+ await this.sendResp(req, res, { status: 404, displayErrors: [{ detail: 'Record not found' }] });
194
+ return null;
195
+ }
196
+ return record;
197
+ }
198
+ parsePositiveInt(value, defaultValue) {
199
+ const parsed = parseInt(String(value ?? ''), 10);
200
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : defaultValue;
201
+ }
202
+ parseDateBoundary(value, boundary) {
203
+ const raw = String(value ?? '').trim();
204
+ if (_.isEmpty(raw)) {
205
+ return null;
206
+ }
207
+ if (/^\d{4}-\d{2}-\d{2}$/.test(raw)) {
208
+ const [year, month, day] = raw.split('-').map(part => parseInt(part, 10));
209
+ const date = boundary === 'start'
210
+ ? new Date(year, month - 1, day, 0, 0, 0, 0)
211
+ : new Date(year, month - 1, day, 23, 59, 59, 999);
212
+ return Number.isNaN(date.getTime()) ? null : date;
213
+ }
214
+ const parsed = new Date(raw);
215
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
216
+ }
217
+ async render(req, res) {
218
+ const oid = String(req.param('oid') ?? '').trim();
219
+ if (_.isEmpty(oid)) {
220
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Record oid is required.' }] });
221
+ }
222
+ try {
223
+ const record = await this.recordsService.getMeta(oid);
224
+ if (_.isEmpty(record)) {
225
+ return this.sendResp(req, res, { status: 404, displayErrors: [{ detail: 'Record not found' }] });
226
+ }
227
+ const brand = this.getReqBrand(req);
228
+ const hasViewAccess = await (0, rxjs_1.firstValueFrom)(this.hasViewAccess(brand, req.user ?? {}, record));
229
+ if (!hasViewAccess) {
230
+ return this.sendResp(req, res, {
231
+ status: 403,
232
+ displayErrors: [{ code: 'view-error-no-permissions' }],
233
+ v1: { message: TranslationService.t('view-error-no-permissions') },
234
+ });
235
+ }
236
+ const locals = (req.options?.locals ?? {});
237
+ locals['oid'] = oid;
238
+ locals['appName'] = 'record-audit';
239
+ locals['isAdmin'] = this.isBrandAdmin(req);
240
+ return this.sendView(req, res, 'record/viewAudit');
241
+ }
242
+ catch (error) {
243
+ return this.sendResp(req, res, {
244
+ status: 500,
245
+ errors: [this.asError(error)],
246
+ displayErrors: [{ detail: 'Failed to load record audit page.' }],
247
+ });
248
+ }
249
+ }
250
+ async getAuditData(req, res) {
251
+ const oid = String(req.param('oid') ?? '').trim();
252
+ if (_.isEmpty(oid)) {
253
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Record oid is required.' }] });
254
+ }
255
+ try {
256
+ const brand = this.getReqBrand(req);
257
+ const record = await this.getRecordOrSendNotFound(req, res, oid);
258
+ if (record == null) {
259
+ return;
260
+ }
261
+ const hasViewAccess = await (0, rxjs_1.firstValueFrom)(this.hasViewAccess(brand, req.user ?? {}, record));
262
+ if (!hasViewAccess) {
263
+ return this.sendResp(req, res, {
264
+ status: 403,
265
+ displayErrors: [{ code: 'view-error-no-permissions' }],
266
+ v1: { message: TranslationService.t('view-error-no-permissions') },
267
+ });
268
+ }
269
+ const fieldLabelMap = await this.buildFieldLabelMap(record, brand);
270
+ const action = String(req.param('action') ?? '').trim();
271
+ const workflowState = String(req.param('workflowState') ?? '').trim();
272
+ const rawDateFrom = req.param('dateFrom');
273
+ const rawDateTo = req.param('dateTo');
274
+ const dateFrom = this.parseDateBoundary(rawDateFrom, 'start');
275
+ const dateTo = this.parseDateBoundary(rawDateTo, 'end');
276
+ if (!_.isNil(rawDateFrom) && !_.isEmpty(String(rawDateFrom).trim()) && dateFrom == null) {
277
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Invalid audit start date.' }] });
278
+ }
279
+ if (!_.isNil(rawDateTo) && !_.isEmpty(String(rawDateTo).trim()) && dateTo == null) {
280
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Invalid audit end date.' }] });
281
+ }
282
+ if (dateFrom != null && dateTo != null && dateFrom.getTime() > dateTo.getTime()) {
283
+ return this.sendResp(req, res, {
284
+ status: 400,
285
+ displayErrors: [{ detail: 'Audit start date must be before end date.' }],
286
+ });
287
+ }
288
+ const rawAudit = await this.recordsService.getRecordAudit({
289
+ oid,
290
+ dateFrom,
291
+ dateTo,
292
+ action: !_.isEmpty(action) ? action : undefined,
293
+ workflowState: !_.isEmpty(workflowState) ? workflowState : undefined,
294
+ });
295
+ const ascendingAudit = [...rawAudit].sort((a, b) => this.getAuditSortValue(a) - this.getAuditSortValue(b));
296
+ const rowMap = new Map();
297
+ ascendingAudit.forEach((auditRecord, index) => {
298
+ const currentRecord = _.isPlainObject(auditRecord['record']) ? auditRecord['record'] : {};
299
+ const previousAudit = index > 0 ? ascendingAudit[index - 1] : null;
300
+ const previousRecord = previousAudit && _.isPlainObject(previousAudit['record']) ? previousAudit['record'] : null;
301
+ const action = String(auditRecord['action'] ?? '');
302
+ const currentMetadata = currentRecord['metadata'];
303
+ const previousMetadata = previousRecord?.['metadata'];
304
+ let changeSummary = {
305
+ available: false,
306
+ count: 0,
307
+ changes: [],
308
+ note: '@record-audit-note-update-only',
309
+ };
310
+ if (action === RecordAuditModel_1.RecordAuditActionType.updated) {
311
+ if (previousRecord == null) {
312
+ changeSummary = {
313
+ available: false,
314
+ count: 0,
315
+ changes: [],
316
+ note: '@record-audit-note-no-previous-snapshot',
317
+ };
318
+ }
319
+ else {
320
+ const changes = FormRecordConsistencyService.compareRecords(previousMetadata, currentMetadata, ['metadata'])
321
+ .map(change => this.mapChange(change, fieldLabelMap));
322
+ changeSummary = {
323
+ available: true,
324
+ count: changes.length,
325
+ changes,
326
+ };
327
+ }
328
+ }
329
+ const rowId = this.buildAuditRowId(auditRecord, index);
330
+ rowMap.set(rowId, {
331
+ id: rowId,
332
+ timestamp: auditRecord['createdAt'] ?? auditRecord['updatedAt'] ?? auditRecord['dateCreated'] ?? null,
333
+ action,
334
+ actionLabelKey: this.getActionLabelKey(action),
335
+ workflowStageLabel: String(_.get(auditRecord, 'record.workflow.stageLabel', '')),
336
+ actor: this.mapActor(auditRecord['user']),
337
+ changeSummary,
338
+ rawRecord: _.isPlainObject(currentRecord) ? currentRecord : null,
339
+ _sortValue: this.getAuditSortValue(auditRecord),
340
+ });
341
+ });
342
+ const records = Array.from(rowMap.values())
343
+ .sort((a, b) => Number(b['_sortValue'] ?? 0) - Number(a['_sortValue'] ?? 0))
344
+ .map(row => {
345
+ _.unset(row, '_sortValue');
346
+ return row;
347
+ });
348
+ const rawAuditUrl = this.buildRawAuditUrl(req, oid);
349
+ return this.sendResp(req, res, {
350
+ data: {
351
+ summary: { returnedCount: records.length },
352
+ rawAuditUrl,
353
+ records,
354
+ },
355
+ });
356
+ }
357
+ catch (error) {
358
+ return this.sendResp(req, res, {
359
+ status: 500,
360
+ errors: [this.asError(error)],
361
+ displayErrors: [{ detail: 'Failed to load record audit data.' }],
362
+ });
363
+ }
364
+ }
365
+ async getPermissionsData(req, res) {
366
+ const oid = String(req.param('oid') ?? '').trim();
367
+ if (_.isEmpty(oid)) {
368
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Record oid is required.' }] });
369
+ }
370
+ if (!this.isBrandAdmin(req)) {
371
+ return this.sendResp(req, res, { status: 403, displayErrors: [{ code: 'view-error-no-permissions' }] });
372
+ }
373
+ try {
374
+ const record = await this.getRecordOrSendNotFound(req, res, oid);
375
+ if (record == null) {
376
+ return;
377
+ }
378
+ const permissionsSummary = await this.recordsService.getResolvedPermissionsSummary(oid);
379
+ return this.sendResp(req, res, { data: permissionsSummary });
380
+ }
381
+ catch (error) {
382
+ return this.sendResp(req, res, {
383
+ status: 500,
384
+ errors: [this.asError(error)],
385
+ displayErrors: [{ detail: 'Failed to load record permissions.' }],
386
+ });
387
+ }
388
+ }
389
+ async getIntegrationAuditData(req, res) {
390
+ const oid = String(req.param('oid') ?? '').trim();
391
+ if (_.isEmpty(oid)) {
392
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Record oid is required.' }] });
393
+ }
394
+ if (!this.isBrandAdmin(req)) {
395
+ return this.sendResp(req, res, { status: 403, displayErrors: [{ code: 'view-error-no-permissions' }] });
396
+ }
397
+ try {
398
+ const record = await this.getRecordOrSendNotFound(req, res, oid);
399
+ if (record == null) {
400
+ return;
401
+ }
402
+ const page = this.parsePositiveInt(req.param('page'), 1);
403
+ const pageSize = Math.min(this.parsePositiveInt(req.param('pageSize'), 20), 100);
404
+ const status = String(req.param('status') ?? '').trim();
405
+ const integrationName = String(req.param('integrationName') ?? '').trim();
406
+ const rawDateFrom = req.param('dateFrom');
407
+ const rawDateTo = req.param('dateTo');
408
+ const dateFrom = this.parseDateBoundary(rawDateFrom, 'start');
409
+ const dateTo = this.parseDateBoundary(rawDateTo, 'end');
410
+ const params = new IntegrationAuditParams_1.IntegrationAuditParams();
411
+ params.oid = oid;
412
+ params.page = page;
413
+ params.pageSize = pageSize;
414
+ if (!_.isNil(rawDateFrom) && !_.isEmpty(String(rawDateFrom).trim()) && dateFrom == null) {
415
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Invalid integration audit start date.' }] });
416
+ }
417
+ if (!_.isNil(rawDateTo) && !_.isEmpty(String(rawDateTo).trim()) && dateTo == null) {
418
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Invalid integration audit end date.' }] });
419
+ }
420
+ if (dateFrom != null && dateTo != null && dateFrom.getTime() > dateTo.getTime()) {
421
+ return this.sendResp(req, res, {
422
+ status: 400,
423
+ displayErrors: [{ detail: 'Integration audit start date must be before end date.' }],
424
+ });
425
+ }
426
+ if (!_.isEmpty(integrationName)) {
427
+ params.integrationName = integrationName;
428
+ }
429
+ if (dateFrom != null) {
430
+ params.dateFrom = dateFrom;
431
+ }
432
+ if (dateTo != null) {
433
+ params.dateTo = dateTo;
434
+ }
435
+ if (!_.isEmpty(status)) {
436
+ if (!VALID_INTEGRATION_AUDIT_STATUSES.has(status)) {
437
+ return this.sendResp(req, res, { status: 400, displayErrors: [{ detail: 'Invalid integration audit status.' }] });
438
+ }
439
+ params.status = status;
440
+ }
441
+ const result = await IntegrationAuditService.getTraceAuditLog(params);
442
+ return this.sendResp(req, res, {
443
+ data: {
444
+ summary: {
445
+ numFound: result.total,
446
+ page,
447
+ pageSize,
448
+ totalPages: Math.ceil(result.total / pageSize),
449
+ },
450
+ records: result.rows.map((row, traceIndex) => ({
451
+ ...row,
452
+ id: String(row.id ?? row.traceId ?? `${oid}:trace:${page}:${traceIndex}`),
453
+ events: (row.events ?? []).map((event, eventIndex) => ({
454
+ ...event,
455
+ id: String(event['id'] ?? `${row.traceId ?? oid}:event:${eventIndex}`),
456
+ })),
457
+ })),
458
+ },
459
+ });
460
+ }
461
+ catch (error) {
462
+ return this.sendResp(req, res, {
463
+ status: 500,
464
+ errors: [this.asError(error)],
465
+ displayErrors: [{ detail: 'Failed to load integration audit data.' }],
466
+ });
467
+ }
468
+ }
71
469
  }
72
470
  Controllers.RecordAudit = RecordAudit;
73
471
  })(Controllers || (exports.Controllers = Controllers = {}));
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkQXVkaXRDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXJzL1JlY29yZEF1ZGl0Q29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7OztBQUU5RCxzREFBK0Q7QUFDL0Qsb0RBQTJEO0FBQzNELG1DQUFpQztBQUdqQyxJQUFpQixXQUFXLENBMkQzQjtBQTNERCxXQUFpQixXQUFXO0lBQzFCOzs7O09BSUc7SUFDSCxNQUFhLFdBQVksU0FBUSw0QkFBVyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ2hELGNBQWMsQ0FBa0I7UUFFMUM7O1dBRUc7UUFDZ0IsZ0JBQWdCLEdBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFbkU7Ozs7V0FJRztRQUVJLElBQUk7WUFDVCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBMkMsQ0FBQztRQUNuRixDQUFDO1FBRU0sU0FBUyxLQUFJLENBQUM7UUFFZCxNQUFNLENBQUMsR0FBYyxFQUFFLEdBQWM7WUFDMUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDMUQseUdBQXlHO1lBQ3pHLGdHQUFnRztZQUNoRyx5Q0FBeUM7WUFDekMsbUZBQW1GO1lBQ25GLG9DQUFvQztZQUNwQyxrRUFBa0U7WUFDbEUscUNBQXFDO1lBQ3JDLHVGQUF1RjtZQUN2Rix3Q0FBd0M7WUFDeEMsNkRBQTZEO1lBQzdELHFFQUFxRTtZQUVyRSw2RUFBNkU7WUFDN0Usd0VBQXdFO1lBQ3hFLDhFQUE4RTtZQUU5RSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3hELE1BQU0sY0FBYyxHQUFHLElBQUEsZ0JBQU8sRUFBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2hFLEdBQUcsQ0FBQyxPQUFRLENBQUMsTUFBNkMsQ0FBQyxTQUFTLENBQUMsR0FBRyxjQUFjLENBQUM7Z0JBQ3ZGLEdBQUcsQ0FBQyxPQUFRLENBQUMsTUFBNkMsQ0FBQyxRQUFRLENBQUMsR0FBRyx1QkFBTSxDQUFDO2dCQUMvRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQU9GO0lBcERZLHVCQUFXLGNBb0R2QixDQUFBO0FBQ0gsQ0FBQyxFQTNEZ0IsV0FBVywyQkFBWCxXQUFXLFFBMkQzQiJ9
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkQXVkaXRDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXJzL1JlY29yZEF1ZGl0Q29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBK0Q7QUFFL0QsK0JBQXNEO0FBR3RELHNFQUFtRTtBQUNuRSx3RUFBMEU7QUFDMUUsa0ZBQWdGO0FBa0NoRixNQUFNLGdDQUFnQyxHQUFHLElBQUksR0FBRyxDQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsOENBQXNCLENBQUMsQ0FBQyxDQUFDO0FBbUJoRyxJQUFpQixXQUFXLENBcWdCM0I7QUFyZ0JELFdBQWlCLFdBQVc7SUFDMUIsTUFBYSxXQUFZLFNBQVEsNEJBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVTtRQUNoRCxjQUFjLENBQWtCO1FBRXZCLGdCQUFnQixHQUFhO1lBQzlDLFFBQVE7WUFDUixjQUFjO1lBQ2Qsb0JBQW9CO1lBQ3BCLHlCQUF5QjtZQUN6QixNQUFNO1NBQ1AsQ0FBQztRQUVLLElBQUk7WUFDVCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBMkMsQ0FBQztRQUNuRixDQUFDO1FBRU0sU0FBUyxLQUFLLENBQUM7UUFFZCxPQUFPLENBQUMsS0FBYztZQUM1QixPQUFPLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVPLFdBQVcsQ0FBQyxHQUFjO1lBQ2hDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUYsT0FBTyxlQUFlLENBQUMsUUFBUSxDQUFD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
@@ -70,22 +70,7 @@ export declare namespace Controllers {
70
70
  getWorkflowSteps(req: Sails.Req, res: Sails.Res): Promise<import("express").Response<any, globalThis.Record<string, any>>>;
71
71
  getRelatedRecords(req: Sails.Req, res: Sails.Res): Promise<import("express").Response<any, globalThis.Record<string, any>>>;
72
72
  getRelatedRecordsInternal(req: Sails.Req, _res: Sails.Res): Promise<unknown>;
73
- getPermissionsInternal(req: Sails.Req, _res: Sails.Res): Promise<{
74
- edit: {
75
- username: string;
76
- name: string;
77
- email: string;
78
- }[];
79
- view: {
80
- username: string;
81
- name: string;
82
- email: string;
83
- }[];
84
- editRoles: unknown;
85
- viewRoles: unknown;
86
- editPending: unknown;
87
- viewPending: unknown;
88
- }>;
73
+ getPermissionsInternal(req: Sails.Req, _res: Sails.Res): Promise<import("../RecordsService").ResolvedRecordPermissions>;
89
74
  getPermissions(req: Sails.Req, res: Sails.Res): Promise<import("express").Response<any, globalThis.Record<string, any>>>;
90
75
  getAttachments(req: Sails.Req, res: Sails.Res): void;
91
76
  getDataStream(req: Sails.Req, res: Sails.Res): Promise<import("express").Response<any, globalThis.Record<string, any>> | Observable<string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"RecordController.d.ts","sourceRoot":"","sources":["../../src/controllers/RecordController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RecordController.d.ts","sourceRoot":"","sources":["../../src/controllers/RecordController.ts"],"names":[],"mappings":"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"}