@hestia-earth/api 0.24.27 → 0.24.29

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.
@@ -174,7 +174,7 @@ export declare const isAuthorized: ({ authorizedUsers }: Partial<File>, user: Us
174
174
  export declare const isAssigned: ({ assignedUsers }: Partial<File>, user: User) => boolean;
175
175
  export declare const canRemove: (file: Partial<File>, user: User) => boolean;
176
176
  export declare const validatedStatuses: FileStatus[];
177
- export declare const canValidate: ({ status, isPrivate, archived }: Partial<File>, user: Partial<User>) => boolean;
177
+ export declare const canValidate: ({ status, isPrivate, archived }: Partial<File>, user: Pick<User, 'role'>) => boolean;
178
178
  export declare const isValidated: ({ validatedAt, status }: Partial<File>) => boolean;
179
179
  export declare const canSubmit: (file: Partial<File>, user: User) => boolean;
180
180
  export declare const canFeedback: ({ status }: File) => boolean;
@@ -11,6 +11,15 @@ export declare enum UserRole {
11
11
  Reviewer = "reviewer",
12
12
  Admin = "admin"
13
13
  }
14
+ export declare enum UserPermission {
15
+ aggregationsCreate = "aggregations-create",
16
+ aggregationsRead = "aggregations-read",
17
+ aggregationsDelete = "aggregations-delete",
18
+ reconciliationsCreate = "reconciliations-create",
19
+ reconciliationsRead = "reconciliations-view",
20
+ reconciliationsUpdate = "reconciliations-update",
21
+ reconciliationsDelete = "reconciliations-delete"
22
+ }
14
23
  export declare class User extends BaseModel {
15
24
  email: string;
16
25
  firstName: string;
@@ -24,6 +33,7 @@ export declare class User extends BaseModel {
24
33
  dataPrivate: boolean;
25
34
  validFilesCount: number;
26
35
  canCommitHestiaData: boolean;
36
+ permissions: UserPermission[];
27
37
  emailNotificationsSuccess: boolean;
28
38
  emailNotificationsFailure: boolean;
29
39
  emailNotificationsFeedback: boolean;
@@ -44,9 +54,10 @@ export declare class User extends BaseModel {
44
54
  readonly actorId?: string;
45
55
  }
46
56
  export declare const name: ({ firstName, lastName }: Partial<User>) => string;
47
- export declare const isAdmin: (user?: Partial<User>) => boolean;
48
- export declare const isReviewer: (user?: Partial<User>) => boolean;
49
- export declare const isDeveloper: (user?: Partial<User>) => boolean;
57
+ export declare const isAdmin: (user?: Pick<User, 'role'>) => boolean;
58
+ export declare const isReviewer: (user?: Pick<User, 'role'>) => boolean;
59
+ export declare const isDeveloper: (user?: Pick<User, 'role'>) => boolean;
60
+ export declare const hasPermission: (permission: UserPermission, user?: Pick<User, 'role' | 'permissions'>) => boolean;
50
61
  export declare const contains: (users: Partial<User>[], user: Partial<User>) => boolean;
51
62
  export declare const actorId: (user: Partial<User>) => string;
52
63
  export declare const userToActor: (user: Partial<User>, domain?: string) => Partial<IActorJSONLD>;
@@ -26,7 +26,7 @@ var __assign = (this && this.__assign) || function () {
26
26
  return __assign.apply(this, arguments);
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.userToActor = exports.actorId = exports.contains = exports.isDeveloper = exports.isReviewer = exports.isAdmin = exports.name = exports.User = exports.UserRole = exports.MaxUploads = exports.defaultMaxApiCalls = void 0;
29
+ 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;
30
30
  var schema_1 = require("@hestia-earth/schema");
31
31
  var model_base_1 = require("../../db/model.base");
32
32
  exports.defaultMaxApiCalls = 100;
@@ -42,6 +42,16 @@ var UserRole;
42
42
  UserRole["Reviewer"] = "reviewer";
43
43
  UserRole["Admin"] = "admin";
44
44
  })(UserRole = exports.UserRole || (exports.UserRole = {}));
45
+ var UserPermission;
46
+ (function (UserPermission) {
47
+ UserPermission["aggregationsCreate"] = "aggregations-create";
48
+ UserPermission["aggregationsRead"] = "aggregations-read";
49
+ UserPermission["aggregationsDelete"] = "aggregations-delete";
50
+ UserPermission["reconciliationsCreate"] = "reconciliations-create";
51
+ UserPermission["reconciliationsRead"] = "reconciliations-view";
52
+ UserPermission["reconciliationsUpdate"] = "reconciliations-update";
53
+ UserPermission["reconciliationsDelete"] = "reconciliations-delete";
54
+ })(UserPermission = exports.UserPermission || (exports.UserPermission = {}));
45
55
  var User = (function (_super) {
46
56
  __extends(User, _super);
47
57
  function User() {
@@ -52,6 +62,7 @@ var User = (function (_super) {
52
62
  _this.dataPrivate = false;
53
63
  _this.validFilesCount = 0;
54
64
  _this.canCommitHestiaData = false;
65
+ _this.permissions = [];
55
66
  _this.emailNotificationsSuccess = false;
56
67
  _this.emailNotificationsFailure = false;
57
68
  _this.emailNotificationsFeedback = false;
@@ -74,6 +85,8 @@ var isDeveloper = function (user) {
74
85
  return [UserRole.Developer, UserRole.Reviewer, UserRole.Admin].includes(user === null || user === void 0 ? void 0 : user.role);
75
86
  };
76
87
  exports.isDeveloper = isDeveloper;
88
+ var hasPermission = function (permission, user) { var _a; return (0, exports.isAdmin)(user) || ((_a = user === null || user === void 0 ? void 0 : user.permissions) !== null && _a !== void 0 ? _a : []).includes(permission); };
89
+ exports.hasPermission = hasPermission;
77
90
  var contains = function (users, user) { return users.some(function (u) { return u.email === user.email; }); };
78
91
  exports.contains = contains;
79
92
  var actorId = function (user) { return "".concat((user._id || user.id).toString()); };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hestia-earth/api",
3
- "version": "0.24.27",
3
+ "version": "0.24.29",
4
4
  "description": "Hestia API definitions",
5
5
  "main": "dist/models.js",
6
6
  "typings": "dist/models.d.ts",
@@ -52,6 +52,7 @@
52
52
  "@types/cors": "^2.8.12",
53
53
  "@types/express": "4.17.6",
54
54
  "@types/express-serve-static-core": "4.17.5",
55
+ "@types/jsonwebtoken": "^9.0.6",
55
56
  "@types/lodash.get": "^4.4.6",
56
57
  "@types/lodash.orderby": "^4.6.6",
57
58
  "@types/lodash.pick": "^4.4.6",
@@ -86,6 +87,7 @@
86
87
  "http2-express-bridge": "^1.0.7",
87
88
  "husky": "^4.3.8",
88
89
  "js-levenshtein": "^1.1.6",
90
+ "jsonwebtoken": "^9.0.2",
89
91
  "lodash.get": "^4.4.2",
90
92
  "lodash.orderby": "^4.6.0",
91
93
  "lodash.pick": "^4.4.0",