biz-email-builder-shared 1.4.0 → 1.5.0

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.
@@ -2,4 +2,5 @@ export * from "./user.entity";
2
2
  export * from "./template.entity";
3
3
  export * from "./user-group.entitty";
4
4
  export * from "./feature.entitiy";
5
+ export * from "./templateShare.entity";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
@@ -18,3 +18,4 @@ __exportStar(require("./user.entity"), exports);
18
18
  __exportStar(require("./template.entity"), exports);
19
19
  __exportStar(require("./user-group.entitty"), exports);
20
20
  __exportStar(require("./feature.entitiy"), exports);
21
+ __exportStar(require("./templateShare.entity"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"user.entity.d.ts","sourceRoot":"","sources":["../../src/entity/user.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAA;CACzB;AAmBD,eAAO,MAAM,SAAS;SACitH,MAAO,QAAQ;eAD7rH,CAAC"}
1
+ {"version":3,"file":"user.entity.d.ts","sourceRoot":"","sources":["../../src/entity/user.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAA;CACzB;AAmBD,eAAO,MAAM,SAAS;SACkrH,MAAO,QAAQ;eAD9pH,CAAC"}
@@ -6,7 +6,7 @@ const utilities_1 = require("../utilities");
6
6
  const UserSchema = new mongoose_1.Schema({
7
7
  email: { type: String, unique: true, sparse: true },
8
8
  password: { type: String, default: null },
9
- role: { type: String, default: utilities_1.ROLES.USER },
9
+ role: { type: String, default: utilities_1.ROLES.USER, enum: Object.values(utilities_1.ROLES) },
10
10
  isVerified: { type: Boolean, default: false },
11
11
  verificationToken: { type: String },
12
12
  deletedAt: { type: Date, default: null },
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../src/middleware/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAa,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIpC,QAAA,MAAM,SAAS,cACe,QAAQ,OAAO,QAAQ,QAAQ,YAAY,4DAoCxE,CAAA;AAED,QAAA,MAAM,eAAe,UAAW,KAAK,EAAE,WACT,QAAQ,OAAO,QAAQ,QAAQ,YAAY,4DAcxE,CAAA;AAED,QAAA,MAAM,kBAAkB,aAAc,YAAY,EAAE,WACtB,QAAQ,OAAO,QAAQ,QAAQ,YAAY,4DAmBxE,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../src/middleware/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,KAAK,EAA8B,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIpC,QAAA,MAAM,SAAS,cACe,QAAQ,OAAO,QAAQ,QAAQ,YAAY,4DAwCxE,CAAA;AAED,QAAA,MAAM,eAAe,UAAW,KAAK,EAAE,WACT,QAAQ,OAAO,QAAQ,QAAQ,YAAY,4DAcxE,CAAA;AAED,QAAA,MAAM,kBAAkB,aAAc,YAAY,EAAE,WACtB,QAAQ,OAAO,QAAQ,QAAQ,YAAY,4DAmBxE,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
@@ -16,31 +16,36 @@ const utilities_1 = require("../utilities");
16
16
  const entity_1 = require("../entity");
17
17
  const authorize = () => {
18
18
  return async function (req, res, next) {
19
- if (!req.headers.authorization) {
20
- return res.status(401).json({ message: 'Unauthorized' });
21
- }
22
- if (req.headers.authorization) {
23
- const token = await (0, utilities_1.verifyUid)(req.headers.authorization);
24
- if (!token) {
25
- return res.status(401).json({ message: 'Session Expired' });
26
- }
27
- let user = await entity_1.UserModel.findById(token.value.id).populate({
28
- path: "groups",
29
- populate: { path: "features", select: "name" },
30
- }).lean();
31
- if (!user) {
32
- return res.status(401).json({ message: 'No User Found' });
19
+ try {
20
+ if (!req.headers.authorization) {
21
+ return res.status(401).json({ message: utilities_1.SERVER_MESSAGES.SE_UNAUTHORIZED });
33
22
  }
34
- if (user.role === undefined || user.role === null || !Object.values(utilities_1.ROLES).includes(user.role)) {
35
- return res.status(401).json({ message: 'No role is assigne or role is invalid' });
23
+ if (req.headers.authorization) {
24
+ const token = await (0, utilities_1.verifyUid)(req.headers.authorization);
25
+ if (!token) {
26
+ return res.status(401).json({ message: utilities_1.SERVER_MESSAGES.SE_SESSION_EXPIRED });
27
+ }
28
+ let user = await entity_1.UserModel.findById(token.value.id).populate({
29
+ path: "groups",
30
+ populate: { path: "features", select: "name" },
31
+ }).lean();
32
+ if (!user) {
33
+ return res.status(401).json({ message: utilities_1.SERVER_MESSAGES.SE_USER_NOT_FOUND });
34
+ }
35
+ if (user.role === undefined || user.role === null || !Object.values(utilities_1.ROLES).includes(user.role)) {
36
+ return res.status(401).json({ message: utilities_1.SERVER_MESSAGES.SE_NO_ROLE_ASSIGNED_ROLE_INVALID });
37
+ }
38
+ const { createdAt, updatedAt, deletedAt, password } = user, rest = __rest(user, ["createdAt", "updatedAt", "deletedAt", "password"]);
39
+ req.user = rest;
40
+ if (req.user && user.role === utilities_1.ROLES.ADMIN) {
41
+ req.user.isAdmin = true;
42
+ req.user.groups.push({ name: "DEFAULT", features: Object.values(utilities_1.FEATURE_TYPE).map(value => ({ name: value })) });
43
+ }
44
+ next();
36
45
  }
37
- const { createdAt, updatedAt, deletedAt, password } = user, rest = __rest(user, ["createdAt", "updatedAt", "deletedAt", "password"]);
38
- req.user = rest;
39
- if (req.user && user.role === utilities_1.ROLES.ADMIN) {
40
- req.user.isAdmin = true;
41
- req.user.groups.push({ name: "DEFAULT", features: Object.values(utilities_1.FEATURE_TYPE).map(value => ({ name: value })) });
42
- }
43
- next();
46
+ }
47
+ catch (err) {
48
+ next(err);
44
49
  }
45
50
  };
46
51
  };
@@ -49,11 +54,11 @@ const checkRoleAccess = (roles) => {
49
54
  return async function (req, res, next) {
50
55
  const { user } = req;
51
56
  if (!user) {
52
- return res.status(401).json({ message: 'Unauthorized' });
57
+ return res.status(401).json({ message: utilities_1.SERVER_MESSAGES.SE_UNAUTHORIZED });
53
58
  }
54
59
  const hasAccess = roles.find(role => role === user.role);
55
60
  if (!hasAccess) {
56
- return res.status(403).json({ message: 'Forbbiden: Role access denied' });
61
+ return res.status(403).json({ message: utilities_1.SERVER_MESSAGES.SE_FORBIDDEN_ROLE_ACCESS_DENIED });
57
62
  }
58
63
  next();
59
64
  };
@@ -63,12 +68,12 @@ const checkFeatureAccess = (features) => {
63
68
  return async function (req, res, next) {
64
69
  const { user } = req;
65
70
  if (!user) {
66
- return res.status(401).json({ message: 'Unauthorized' });
71
+ return res.status(401).json({ message: utilities_1.SERVER_MESSAGES.SE_UNAUTHORIZED });
67
72
  }
68
73
  const userFeatureNames = user.groups.flatMap(group => group.features ? group.features.map((feature) => feature.name) : []);
69
74
  const hasAccess = features.some((feature) => userFeatureNames.includes(feature));
70
75
  if (!hasAccess) {
71
- return res.status(403).json({ message: "Forbidden: Feature access denied" });
76
+ return res.status(403).json({ message: utilities_1.SERVER_MESSAGES.SE_FORBIDDEN_FEATURE_ACCESS_DENIED });
72
77
  }
73
78
  next();
74
79
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schemaValidate.d.ts","sourceRoot":"","sources":["../../src/middleware/schemaValidate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,eAAO,MAAM,cAAc,WAAY,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAC9B,QAAQ,OAAO,QAAQ,QAAQ,YAAY,4DAWxE,CAAA"}
1
+ {"version":3,"file":"schemaValidate.d.ts","sourceRoot":"","sources":["../../src/middleware/schemaValidate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,eAAO,MAAM,cAAc,WAAY,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAC9B,QAAQ,OAAO,QAAQ,QAAQ,YAAY,4DAWxE,CAAA"}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateSchema = void 0;
4
+ const utilities_1 = require("../utilities");
4
5
  const validateSchema = (schema) => {
5
6
  return async function (req, res, next) {
6
7
  const { error } = schema.validate(req.body, { abortEarly: false });
7
8
  if (error) {
8
9
  const errorMessage = error.details.map((err) => err.message).join(', ');
9
- return res.status(400).json({ message: errorMessage });
10
+ return res.status(400).json({ message: utilities_1.SERVER_MESSAGES.SE_INVALID_INPUT, description: errorMessage });
10
11
  }
11
12
  else {
12
13
  next();
@@ -2,6 +2,7 @@ export * from "./callWithRetries";
2
2
  export * from "./createFolder";
3
3
  export * from "./encryptionUtils";
4
4
  export * from "./sendMailViaGmail";
5
+ export * from "./serverMessages";
5
6
  export declare enum ROLES {
6
7
  ADMIN = "ADMIN",
7
8
  USER = "USER"
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAEnC,oBAAY,KAAK;IACf,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,WAAW,gBAAgB;CAC5B;AAED,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,oBAAY,YAAY;IAEtB,QAAQ,aAAW;IACnB,WAAW,gBAAc;IACzB,WAAW,gBAAc;IACzB,SAAS,cAAY;IAGrB,cAAc,mBAAiB;IAC/B,iBAAiB,sBAAoB;IACrC,iBAAiB,sBAAoB;IACrC,eAAe,oBAAkB;IACjC,cAAc,mBAAiB;IAG/B,0BAA0B,+BAA6B;IACvD,cAAc,mBAAiB;IAC/B,eAAe,oBAAkB;IACjC,YAAY,iBAAe;IAC3B,eAAe,oBAAkB;IACjC,cAAc,mBAAiB;IAC/B,gBAAgB,qBAAmB;IACnC,aAAa,kBAAgB;CAC9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AAEjC,oBAAY,KAAK;IACf,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,WAAW,gBAAgB;CAC5B;AAED,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,oBAAY,YAAY;IAEtB,QAAQ,aAAW;IACnB,WAAW,gBAAc;IACzB,WAAW,gBAAc;IACzB,SAAS,cAAY;IAGrB,cAAc,mBAAiB;IAC/B,iBAAiB,sBAAoB;IACrC,iBAAiB,sBAAoB;IACrC,eAAe,oBAAkB;IACjC,cAAc,mBAAiB;IAG/B,0BAA0B,+BAA6B;IACvD,cAAc,mBAAiB;IAC/B,eAAe,oBAAkB;IACjC,YAAY,iBAAe;IAC3B,eAAe,oBAAkB;IACjC,cAAc,mBAAiB;IAC/B,gBAAgB,qBAAmB;IACnC,aAAa,kBAAgB;CAC9B"}
@@ -19,6 +19,7 @@ __exportStar(require("./callWithRetries"), exports);
19
19
  __exportStar(require("./createFolder"), exports);
20
20
  __exportStar(require("./encryptionUtils"), exports);
21
21
  __exportStar(require("./sendMailViaGmail"), exports);
22
+ __exportStar(require("./serverMessages"), exports);
22
23
  var ROLES;
23
24
  (function (ROLES) {
24
25
  ROLES["ADMIN"] = "ADMIN";
@@ -0,0 +1,10 @@
1
+ export declare enum SERVER_MESSAGES {
2
+ SE_INVALID_INPUT = "SE_INVALID_INPUT",
3
+ SE_UNAUTHORIZED = "SE_UNAUTHORIZED",
4
+ SE_SESSION_EXPIRED = "SE_SESSION_EXPIRED",
5
+ SE_USER_NOT_FOUND = "SE_USER_NOT_FOUND",
6
+ SE_FORBIDDEN_ROLE_ACCESS_DENIED = "SE_FORBIDDEN_ROLE_ACCESS_DENIED",
7
+ SE_FORBIDDEN_FEATURE_ACCESS_DENIED = "SE_FORBIDDEN_FEATURE_ACCESS_DENIED",
8
+ SE_NO_ROLE_ASSIGNED_ROLE_INVALID = "SE_NO_ROLE_ASSIGNED_ROLE_INVALID"
9
+ }
10
+ //# sourceMappingURL=serverMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverMessages.d.ts","sourceRoot":"","sources":["../../src/utilities/serverMessages.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,+BAA+B,oCAAoC;IACnE,kCAAkC,uCAAuC;IACzE,gCAAgC,qCAAqC;CACtE"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SERVER_MESSAGES = void 0;
4
+ var SERVER_MESSAGES;
5
+ (function (SERVER_MESSAGES) {
6
+ SERVER_MESSAGES["SE_INVALID_INPUT"] = "SE_INVALID_INPUT";
7
+ SERVER_MESSAGES["SE_UNAUTHORIZED"] = "SE_UNAUTHORIZED";
8
+ SERVER_MESSAGES["SE_SESSION_EXPIRED"] = "SE_SESSION_EXPIRED";
9
+ SERVER_MESSAGES["SE_USER_NOT_FOUND"] = "SE_USER_NOT_FOUND";
10
+ SERVER_MESSAGES["SE_FORBIDDEN_ROLE_ACCESS_DENIED"] = "SE_FORBIDDEN_ROLE_ACCESS_DENIED";
11
+ SERVER_MESSAGES["SE_FORBIDDEN_FEATURE_ACCESS_DENIED"] = "SE_FORBIDDEN_FEATURE_ACCESS_DENIED";
12
+ SERVER_MESSAGES["SE_NO_ROLE_ASSIGNED_ROLE_INVALID"] = "SE_NO_ROLE_ASSIGNED_ROLE_INVALID";
13
+ })(SERVER_MESSAGES || (exports.SERVER_MESSAGES = SERVER_MESSAGES = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "biz-email-builder-shared",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [
@@ -9,8 +9,7 @@
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
11
11
  "build": "tsc",
12
- "start": "npm run build && node dist/index.js",
13
- "publish": "npm run build && npm verison minor && npm publish --access public"
12
+ "start": "npm run build && node dist/index.js"
14
13
  },
15
14
  "dependencies": {
16
15
  "express": "^4.18.2",