@hestia-earth/api 0.25.54 → 0.25.56
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,5 @@
|
|
|
1
1
|
import { SchemaType, NodeType } from '@hestia-earth/schema';
|
|
2
|
+
import { User } from '../../users/model/model';
|
|
2
3
|
export declare const blankNodeTypes: SchemaType[];
|
|
3
4
|
export declare enum DataState {
|
|
4
5
|
original = "original",
|
|
@@ -20,3 +21,7 @@ export declare const formatForUpload: (nodes: any[], typeToId?: {
|
|
|
20
21
|
[type: string]: string[];
|
|
21
22
|
}) => any;
|
|
22
23
|
export declare const setPrivate: ({ source, defaultSource, ...node }: any) => any;
|
|
24
|
+
export declare const dataVersionRestrictedDays = 90;
|
|
25
|
+
export declare const isDataVersionRestricted: (dataVersion: string) => boolean;
|
|
26
|
+
export declare const isDataVersionAuthorised: (user: User, dataVersion?: string) => boolean;
|
|
27
|
+
export declare const isNodeAuthorised: (user: User, node: any, dataVersion?: string) => boolean;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setPrivate = exports.formatForUpload = exports.parseLogMissingLookups = exports.paramToNodeType = exports.nodeTypeToParam = exports.pathWithState = exports.allowedDataStates = exports.dataStatesTypeMapping = exports.DataState = exports.blankNodeTypes = void 0;
|
|
3
|
+
exports.isNodeAuthorised = exports.isDataVersionAuthorised = exports.isDataVersionRestricted = exports.dataVersionRestrictedDays = exports.setPrivate = exports.formatForUpload = exports.parseLogMissingLookups = exports.paramToNodeType = exports.nodeTypeToParam = exports.pathWithState = exports.allowedDataStates = exports.dataStatesTypeMapping = exports.DataState = exports.blankNodeTypes = void 0;
|
|
4
4
|
const schema_1 = require("@hestia-earth/schema");
|
|
5
5
|
const utils_1 = require("@hestia-earth/utils");
|
|
6
6
|
const model_1 = require("../../files/model/model");
|
|
7
|
+
const model_2 = require("../../users/model/model");
|
|
7
8
|
exports.blankNodeTypes = Object.values(schema_1.SchemaType).filter(t => !(0, schema_1.isTypeNode)(t));
|
|
8
9
|
var DataState;
|
|
9
10
|
(function (DataState) {
|
|
@@ -86,3 +87,20 @@ const setPrivate = ({ source, defaultSource, ...node }) => ({
|
|
|
86
87
|
dataPrivate: true
|
|
87
88
|
});
|
|
88
89
|
exports.setPrivate = setPrivate;
|
|
90
|
+
exports.dataVersionRestrictedDays = 90;
|
|
91
|
+
const isDataVersionRestricted = (dataVersion) => (new Date().getTime() - new Date(dataVersion).getTime()) / utils_1.dayMs < exports.dataVersionRestrictedDays;
|
|
92
|
+
exports.isDataVersionRestricted = isDataVersionRestricted;
|
|
93
|
+
const isDataVersionAuthorised = (user, dataVersion) => dataVersion
|
|
94
|
+
? (0, exports.isDataVersionRestricted)(dataVersion)
|
|
95
|
+
?
|
|
96
|
+
(0, model_2.hasPermission)(model_2.UserPermission.aggregationsLatest, user)
|
|
97
|
+
: true
|
|
98
|
+
:
|
|
99
|
+
(0, model_2.hasPermission)(model_2.UserPermission.aggregationsPreview, user);
|
|
100
|
+
exports.isDataVersionAuthorised = isDataVersionAuthorised;
|
|
101
|
+
const isNodeAuthorised = (user, node, dataVersion) => !node.aggregated ||
|
|
102
|
+
[
|
|
103
|
+
(0, model_2.hasPermission)(model_2.UserPermission.aggregationsRead, user),
|
|
104
|
+
node.aggregatedDataValidated && (0, exports.isDataVersionAuthorised)(user, dataVersion)
|
|
105
|
+
].some(Boolean);
|
|
106
|
+
exports.isNodeAuthorised = isNodeAuthorised;
|
|
@@ -17,11 +17,26 @@ export declare enum UserPermission {
|
|
|
17
17
|
aggregationsPreview = "aggregations-preview",
|
|
18
18
|
aggregationsDelete = "aggregations-delete",
|
|
19
19
|
aggregationsVerify = "aggregations-verify",
|
|
20
|
+
aggregationsLatest = "aggregations-latest",
|
|
20
21
|
reconciliationsCreate = "reconciliations-create",
|
|
21
22
|
reconciliationsRead = "reconciliations-view",
|
|
22
23
|
reconciliationsUpdate = "reconciliations-update",
|
|
23
24
|
reconciliationsDelete = "reconciliations-delete"
|
|
24
25
|
}
|
|
26
|
+
export declare enum UserPermissionRequestStatus {
|
|
27
|
+
Approved = "approved",
|
|
28
|
+
Rejected = "rejected",
|
|
29
|
+
Pending = "pending"
|
|
30
|
+
}
|
|
31
|
+
export interface UserPermissionRequest {
|
|
32
|
+
permission: UserPermission;
|
|
33
|
+
status: UserPermissionRequestStatus;
|
|
34
|
+
createdAt: Date;
|
|
35
|
+
updatedAt?: Date;
|
|
36
|
+
expiryDate?: Date;
|
|
37
|
+
rejectedReason?: string;
|
|
38
|
+
slackThreadTs?: string;
|
|
39
|
+
}
|
|
25
40
|
export declare class User extends BaseModel {
|
|
26
41
|
email: string;
|
|
27
42
|
firstName: string;
|
|
@@ -36,6 +51,7 @@ export declare class User extends BaseModel {
|
|
|
36
51
|
validFilesCount: number;
|
|
37
52
|
canCommitHestiaData: boolean;
|
|
38
53
|
permissions: UserPermission[];
|
|
54
|
+
permissionsRequests: UserPermissionRequest[];
|
|
39
55
|
emailNotificationsSuccess: boolean;
|
|
40
56
|
emailNotificationsFailure: boolean;
|
|
41
57
|
emailNotificationsFeedback: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.userToActor = exports.actorId = exports.contains = exports.hasPermission = exports.isDeveloper = exports.isReviewer = exports.isAdmin = exports.name = exports.User = exports.UserPermission = exports.UserRole = exports.MaxUploads = exports.defaultMaxApiCalls = void 0;
|
|
3
|
+
exports.userToActor = exports.actorId = exports.contains = exports.hasPermission = exports.isDeveloper = exports.isReviewer = exports.isAdmin = exports.name = exports.User = exports.UserPermissionRequestStatus = exports.UserPermission = exports.UserRole = exports.MaxUploads = exports.defaultMaxApiCalls = void 0;
|
|
4
4
|
const schema_1 = require("@hestia-earth/schema");
|
|
5
5
|
const model_base_1 = require("../../db/model.base");
|
|
6
6
|
exports.defaultMaxApiCalls = 100;
|
|
@@ -23,11 +23,18 @@ var UserPermission;
|
|
|
23
23
|
UserPermission["aggregationsPreview"] = "aggregations-preview";
|
|
24
24
|
UserPermission["aggregationsDelete"] = "aggregations-delete";
|
|
25
25
|
UserPermission["aggregationsVerify"] = "aggregations-verify";
|
|
26
|
+
UserPermission["aggregationsLatest"] = "aggregations-latest";
|
|
26
27
|
UserPermission["reconciliationsCreate"] = "reconciliations-create";
|
|
27
28
|
UserPermission["reconciliationsRead"] = "reconciliations-view";
|
|
28
29
|
UserPermission["reconciliationsUpdate"] = "reconciliations-update";
|
|
29
30
|
UserPermission["reconciliationsDelete"] = "reconciliations-delete";
|
|
30
31
|
})(UserPermission || (exports.UserPermission = UserPermission = {}));
|
|
32
|
+
var UserPermissionRequestStatus;
|
|
33
|
+
(function (UserPermissionRequestStatus) {
|
|
34
|
+
UserPermissionRequestStatus["Approved"] = "approved";
|
|
35
|
+
UserPermissionRequestStatus["Rejected"] = "rejected";
|
|
36
|
+
UserPermissionRequestStatus["Pending"] = "pending";
|
|
37
|
+
})(UserPermissionRequestStatus || (exports.UserPermissionRequestStatus = UserPermissionRequestStatus = {}));
|
|
31
38
|
class User extends model_base_1.BaseModel {
|
|
32
39
|
email;
|
|
33
40
|
firstName;
|
|
@@ -42,6 +49,7 @@ class User extends model_base_1.BaseModel {
|
|
|
42
49
|
validFilesCount = 0;
|
|
43
50
|
canCommitHestiaData = false;
|
|
44
51
|
permissions = [];
|
|
52
|
+
permissionsRequests = [];
|
|
45
53
|
emailNotificationsSuccess = false;
|
|
46
54
|
emailNotificationsFailure = false;
|
|
47
55
|
emailNotificationsFeedback = false;
|