@sendhome/common 1.0.151 → 1.0.153

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,6 +1,8 @@
1
1
  import { Subjects } from "../subjects/subjects";
2
2
  import { UserStatus } from "../types/user-status";
3
- import { UserRoles } from "../types/user-roles";
3
+ import { AccountType } from "../types/account-type";
4
+ import { AdminLevels } from "../types/admin-levels";
5
+ import { ProviderLevels } from "../types/provider-levels";
4
6
  import { SendCountry } from "../types/send-country";
5
7
  export interface UserCreatedEvent {
6
8
  subject: Subjects.UserCreated;
@@ -20,8 +22,9 @@ export interface UserCreatedEvent {
20
22
  otp_expiration: Date;
21
23
  reset_token: string;
22
24
  reset_token_expiration: Date;
23
- role: UserRoles;
24
- permissions: number[];
25
+ account_type: AccountType;
26
+ provider_level: ProviderLevels;
27
+ admin_level: AdminLevels;
25
28
  status: UserStatus;
26
29
  referred_by: number;
27
30
  referred_user_coupon_awarded: boolean;
@@ -1,6 +1,8 @@
1
1
  import { Subjects } from "../subjects/subjects";
2
2
  import { UserStatus } from "../types/user-status";
3
- import { UserRoles } from "../types/user-roles";
3
+ import { AccountType } from "../types/account-type";
4
+ import { AdminLevels } from "../types/admin-levels";
5
+ import { ProviderLevels } from "../types/provider-levels";
4
6
  import { SendCountry } from "../types/send-country";
5
7
  export interface UserUpdatedEvent {
6
8
  subject: Subjects.UserUpdated;
@@ -20,8 +22,9 @@ export interface UserUpdatedEvent {
20
22
  otp_expiration: Date;
21
23
  reset_token: string;
22
24
  reset_token_expiration: Date;
23
- role: UserRoles;
24
- permissions: number[];
25
+ account_type: AccountType;
26
+ provider_level: ProviderLevels;
27
+ admin_level: AdminLevels;
25
28
  status: UserStatus;
26
29
  referred_by: number;
27
30
  referred_user_coupon_awarded: boolean;
@@ -0,0 +1,5 @@
1
+ export declare enum AccountType {
2
+ Client = "client",
3
+ Admin = "admin",
4
+ Provider = "provider"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountType = void 0;
4
+ var AccountType;
5
+ (function (AccountType) {
6
+ AccountType["Client"] = "client";
7
+ AccountType["Admin"] = "admin";
8
+ AccountType["Provider"] = "provider";
9
+ })(AccountType = exports.AccountType || (exports.AccountType = {}));
@@ -0,0 +1,5 @@
1
+ export declare enum AdminLevels {
2
+ Admin = "admin",
3
+ Supervisor = "supervisor",
4
+ SupportAgent = "supportAgent"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdminLevels = void 0;
4
+ var AdminLevels;
5
+ (function (AdminLevels) {
6
+ AdminLevels["Admin"] = "admin";
7
+ AdminLevels["Supervisor"] = "supervisor";
8
+ AdminLevels["SupportAgent"] = "supportAgent";
9
+ })(AdminLevels = exports.AdminLevels || (exports.AdminLevels = {}));
@@ -0,0 +1,5 @@
1
+ export declare enum ProviderLevels {
2
+ Seller = "seller",
3
+ Teller = "teller",
4
+ Manager = "manager"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderLevels = void 0;
4
+ var ProviderLevels;
5
+ (function (ProviderLevels) {
6
+ ProviderLevels["Seller"] = "seller";
7
+ ProviderLevels["Teller"] = "teller";
8
+ ProviderLevels["Manager"] = "manager";
9
+ })(ProviderLevels = exports.ProviderLevels || (exports.ProviderLevels = {}));
package/build/index.d.ts CHANGED
@@ -1,92 +1,94 @@
1
- export * from './errors/bad-request-error';
2
- export * from './errors/custom-error';
3
- export * from './errors/database-connection-error';
4
- export * from './errors/not-authorized-error';
5
- export * from './errors/not-found-error';
6
- export * from './errors/request-validation-error';
7
- export * from './middlewares/current-user';
8
- export * from './middlewares/error-handler';
9
- export * from './middlewares/require-auth';
10
- export * from './middlewares/validate-request';
11
- export * from './events/base-listener';
12
- export * from './events/base-publisher';
13
- export * from './events/subjects/subjects';
14
- export * from './events/publishers/bonus-awarded-event';
15
- export * from './events/publishers/branch-created-event';
16
- export * from './events/publishers/branch-updated-event';
17
- export * from './events/publishers/brand-created-event';
18
- export * from './events/publishers/brand-updated-event';
19
- export * from './events/publishers/cart-created-event';
20
- export * from './events/publishers/cart-deleted-event';
21
- export * from './events/publishers/cart-expiration-event';
22
- export * from './events/publishers/cart-updated-event';
23
- export * from './events/publishers/cart-item-created-event';
24
- export * from './events/publishers/cart-item-deleted-event';
25
- export * from './events/publishers/cart-item-updated-event';
26
- export * from './events/publishers/category-created-event';
27
- export * from './events/publishers/category-updated-event';
28
- export * from './events/publishers/collection-created-event';
29
- export * from './events/publishers/collection-updated-event';
30
- export * from './events/publishers/company-created-event';
31
- export * from './events/publishers/company-updated-event';
32
- export * from './events/publishers/coupon-created-event';
33
- export * from './events/publishers/coupon-updated-event';
34
- export * from './events/publishers/coupon-expired-event';
35
- export * from './events/publishers/delivery-created-event';
36
- export * from './events/publishers/delivery-updated-event';
37
- export * from './events/publishers/faq-created-event';
38
- export * from './events/publishers/faq-updated-event';
39
- export * from './events/publishers/location-created-event';
40
- export * from './events/publishers/location-updated-event';
41
- export * from './events/publishers/module-created-event';
42
- export * from './events/publishers/module-updated-event';
43
- export * from './events/publishers/order-cancellation-created-event';
44
- export * from './events/publishers/order-cancellation-updated-event';
45
- export * from './events/publishers/order-collected-event';
46
- export * from './events/publishers/order-created-event';
47
- export * from './events/publishers/order-expiration-completed';
48
- export * from './events/publishers/order-expiration-event';
49
- export * from './events/publishers/order-expiration-warning';
50
- export * from './events/publishers/order-updated-event';
51
- export * from './events/publishers/payment-created-event';
52
- export * from './events/publishers/payment-updated-event';
53
- export * from './events/publishers/order-updated-event';
54
- export * from './events/publishers/product-created-event';
55
- export * from './events/publishers/product-updated-event';
56
- export * from './events/publishers/productItem-created-event';
57
- export * from './events/publishers/productItem-updated-event';
58
- export * from './events/publishers/recipient-created-event';
59
- export * from './events/publishers/recipient-updated-event';
60
- export * from './events/publishers/timeline-created-event';
61
- export * from './events/publishers/topic-created-event';
62
- export * from './events/publishers/topic-updated-event';
63
- export * from './events/publishers/user-created-event';
64
- export * from './events/publishers/user-updated-event';
65
- export * from './events/types/branch-status';
66
- export * from './events/types/brand-status';
67
- export * from './events/types/cart-status';
68
- export * from './events/types/cart-item-status';
69
- export * from './events/types/category-status';
70
- export * from './events/types/collection-status';
71
- export * from './events/types/collection-type';
72
- export * from './events/types/company-status';
73
- export * from './events/types/company-type';
74
- export * from './events/types/country';
75
- export * from './events/types/coupon-status';
76
- export * from './events/types/delivery-status';
77
- export * from './events/types/help-category';
78
- export * from './events/types/location-status';
79
- export * from './events/types/media-status';
80
- export * from './events/types/module-status';
81
- export * from './events/types/order-cancellation-status';
82
- export * from './events/types/order-status';
83
- export * from './events/types/payment-status';
84
- export * from './events/types/product_class';
85
- export * from './events/types/product-status';
86
- export * from './events/types/receive-country';
87
- export * from './events/types/recipient-status';
88
- export * from './events/types/send-country';
89
- export * from './events/types/timeline-stage';
90
- export * from './events/types/unit-type';
91
- export * from './events/types/user-roles';
92
- export * from './events/types/user-status';
1
+ export * from "./errors/bad-request-error";
2
+ export * from "./errors/custom-error";
3
+ export * from "./errors/database-connection-error";
4
+ export * from "./errors/not-authorized-error";
5
+ export * from "./errors/not-found-error";
6
+ export * from "./errors/request-validation-error";
7
+ export * from "./middlewares/current-user";
8
+ export * from "./middlewares/error-handler";
9
+ export * from "./middlewares/require-auth";
10
+ export * from "./middlewares/validate-request";
11
+ export * from "./events/base-listener";
12
+ export * from "./events/base-publisher";
13
+ export * from "./events/subjects/subjects";
14
+ export * from "./events/publishers/bonus-awarded-event";
15
+ export * from "./events/publishers/branch-created-event";
16
+ export * from "./events/publishers/branch-updated-event";
17
+ export * from "./events/publishers/brand-created-event";
18
+ export * from "./events/publishers/brand-updated-event";
19
+ export * from "./events/publishers/cart-created-event";
20
+ export * from "./events/publishers/cart-deleted-event";
21
+ export * from "./events/publishers/cart-expiration-event";
22
+ export * from "./events/publishers/cart-updated-event";
23
+ export * from "./events/publishers/cart-item-created-event";
24
+ export * from "./events/publishers/cart-item-deleted-event";
25
+ export * from "./events/publishers/cart-item-updated-event";
26
+ export * from "./events/publishers/category-created-event";
27
+ export * from "./events/publishers/category-updated-event";
28
+ export * from "./events/publishers/collection-created-event";
29
+ export * from "./events/publishers/collection-updated-event";
30
+ export * from "./events/publishers/company-created-event";
31
+ export * from "./events/publishers/company-updated-event";
32
+ export * from "./events/publishers/coupon-created-event";
33
+ export * from "./events/publishers/coupon-updated-event";
34
+ export * from "./events/publishers/coupon-expired-event";
35
+ export * from "./events/publishers/delivery-created-event";
36
+ export * from "./events/publishers/delivery-updated-event";
37
+ export * from "./events/publishers/faq-created-event";
38
+ export * from "./events/publishers/faq-updated-event";
39
+ export * from "./events/publishers/location-created-event";
40
+ export * from "./events/publishers/location-updated-event";
41
+ export * from "./events/publishers/module-created-event";
42
+ export * from "./events/publishers/module-updated-event";
43
+ export * from "./events/publishers/order-cancellation-created-event";
44
+ export * from "./events/publishers/order-cancellation-updated-event";
45
+ export * from "./events/publishers/order-collected-event";
46
+ export * from "./events/publishers/order-created-event";
47
+ export * from "./events/publishers/order-expiration-completed";
48
+ export * from "./events/publishers/order-expiration-event";
49
+ export * from "./events/publishers/order-expiration-warning";
50
+ export * from "./events/publishers/order-updated-event";
51
+ export * from "./events/publishers/payment-created-event";
52
+ export * from "./events/publishers/payment-updated-event";
53
+ export * from "./events/publishers/order-updated-event";
54
+ export * from "./events/publishers/product-created-event";
55
+ export * from "./events/publishers/product-updated-event";
56
+ export * from "./events/publishers/productItem-created-event";
57
+ export * from "./events/publishers/productItem-updated-event";
58
+ export * from "./events/publishers/recipient-created-event";
59
+ export * from "./events/publishers/recipient-updated-event";
60
+ export * from "./events/publishers/timeline-created-event";
61
+ export * from "./events/publishers/topic-created-event";
62
+ export * from "./events/publishers/topic-updated-event";
63
+ export * from "./events/publishers/user-created-event";
64
+ export * from "./events/publishers/user-updated-event";
65
+ export * from "./events/types/account-type";
66
+ export * from "./events/types/admin-levels";
67
+ export * from "./events/types/branch-status";
68
+ export * from "./events/types/brand-status";
69
+ export * from "./events/types/cart-status";
70
+ export * from "./events/types/cart-item-status";
71
+ export * from "./events/types/category-status";
72
+ export * from "./events/types/collection-status";
73
+ export * from "./events/types/collection-type";
74
+ export * from "./events/types/company-status";
75
+ export * from "./events/types/company-type";
76
+ export * from "./events/types/country";
77
+ export * from "./events/types/coupon-status";
78
+ export * from "./events/types/delivery-status";
79
+ export * from "./events/types/help-category";
80
+ export * from "./events/types/location-status";
81
+ export * from "./events/types/media-status";
82
+ export * from "./events/types/module-status";
83
+ export * from "./events/types/order-cancellation-status";
84
+ export * from "./events/types/order-status";
85
+ export * from "./events/types/payment-status";
86
+ export * from "./events/types/product_class";
87
+ export * from "./events/types/product-status";
88
+ export * from "./events/types/provider-levels";
89
+ export * from "./events/types/receive-country";
90
+ export * from "./events/types/recipient-status";
91
+ export * from "./events/types/send-country";
92
+ export * from "./events/types/timeline-stage";
93
+ export * from "./events/types/unit-type";
94
+ export * from "./events/types/user-status";
package/build/index.js CHANGED
@@ -75,6 +75,8 @@ __exportStar(require("./events/publishers/topic-created-event"), exports);
75
75
  __exportStar(require("./events/publishers/topic-updated-event"), exports);
76
76
  __exportStar(require("./events/publishers/user-created-event"), exports);
77
77
  __exportStar(require("./events/publishers/user-updated-event"), exports);
78
+ __exportStar(require("./events/types/account-type"), exports);
79
+ __exportStar(require("./events/types/admin-levels"), exports);
78
80
  __exportStar(require("./events/types/branch-status"), exports);
79
81
  __exportStar(require("./events/types/brand-status"), exports);
80
82
  __exportStar(require("./events/types/cart-status"), exports);
@@ -96,10 +98,10 @@ __exportStar(require("./events/types/order-status"), exports);
96
98
  __exportStar(require("./events/types/payment-status"), exports);
97
99
  __exportStar(require("./events/types/product_class"), exports);
98
100
  __exportStar(require("./events/types/product-status"), exports);
101
+ __exportStar(require("./events/types/provider-levels"), exports);
99
102
  __exportStar(require("./events/types/receive-country"), exports);
100
103
  __exportStar(require("./events/types/recipient-status"), exports);
101
104
  __exportStar(require("./events/types/send-country"), exports);
102
105
  __exportStar(require("./events/types/timeline-stage"), exports);
103
106
  __exportStar(require("./events/types/unit-type"), exports);
104
- __exportStar(require("./events/types/user-roles"), exports);
105
107
  __exportStar(require("./events/types/user-status"), exports);
@@ -0,0 +1,14 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ interface UserPayload {
3
+ id: string;
4
+ email: string;
5
+ }
6
+ declare global {
7
+ namespace Express {
8
+ interface Request {
9
+ currentUser?: UserPayload;
10
+ }
11
+ }
12
+ }
13
+ export declare const requireAuth: (req: Request, res: Response, next: NextFunction) => void;
14
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.requireAuth = void 0;
7
+ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8
+ const not_authorized_error_1 = require("../errors/not-authorized-error");
9
+ const requireAuth = (req, res, next) => {
10
+ let token;
11
+ if (req.headers.authorization &&
12
+ req.headers.authorization.startsWith("Bearer")) {
13
+ // Set token from Bearer token in header
14
+ token = req.headers.authorization.split(" ")[1];
15
+ }
16
+ // Make sure token exists
17
+ if (!token) {
18
+ throw new not_authorized_error_1.NotAuthorizedError();
19
+ }
20
+ try {
21
+ const payload = jsonwebtoken_1.default.verify(token, "EDWIN"
22
+ // process.env.JWT_KEY!
23
+ );
24
+ req.currentUser = payload;
25
+ }
26
+ catch (err) { }
27
+ next();
28
+ };
29
+ exports.requireAuth = requireAuth;
@@ -10,5 +10,5 @@ declare global {
10
10
  }
11
11
  }
12
12
  }
13
- export declare const requireAuth: (req: Request, res: Response, next: NextFunction) => void;
13
+ export declare const validateSession: (sessionServiceUrl: string, deviceInfo: string) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
14
14
  export {};
@@ -1,30 +1,48 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
13
  };
5
14
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.requireAuth = void 0;
15
+ exports.validateSession = void 0;
16
+ const axios_1 = __importDefault(require("axios"));
7
17
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8
- const not_authorized_error_1 = require("../errors/not-authorized-error");
9
- const requireAuth = (req, res, next) => {
10
- let token;
11
- if (req.headers.authorization &&
12
- req.headers.authorization.startsWith("Bearer")) {
13
- // Set token from Bearer token in header
14
- token = req.headers.authorization.split(" ")[1];
15
- }
16
- // Make sure token exists
17
- if (!token) {
18
- throw new not_authorized_error_1.NotAuthorizedError();
19
- }
20
- try {
21
- const payload = jsonwebtoken_1.default.verify(token, "EDWIN"
22
- // process.env.JWT_KEY!
23
- );
24
- req.currentUser = payload;
25
- console.log("req.currentUser", req.currentUser);
26
- }
27
- catch (err) { }
28
- next();
18
+ // Middleware to validate user session per device
19
+ const validateSession = (sessionServiceUrl, deviceInfo) => {
20
+ return (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
21
+ var _a;
22
+ try {
23
+ const token = req.cookies.token || ((_a = req.headers.authorization) === null || _a === void 0 ? void 0 : _a.split(' ')[1]);
24
+ if (!token) {
25
+ res.status(401).json({ message: 'No session token provided' });
26
+ return;
27
+ }
28
+ const payload = jsonwebtoken_1.default.verify(token, "EDWIN"
29
+ // process.env.JWT_KEY!
30
+ );
31
+ // Call the session service to validate the session
32
+ const response = yield axios_1.default.get(`${sessionServiceUrl}/api/validate-session/${payload.id}`, {
33
+ params: { device_info: deviceInfo }, // Send the device info for validation
34
+ });
35
+ if (response.status !== 200) {
36
+ res.status(401).json({ message: 'Invalid or expired session' });
37
+ return;
38
+ }
39
+ // Attach user ID to request object
40
+ req.currentUser = response.data;
41
+ next();
42
+ }
43
+ catch (error) {
44
+ res.status(500).json({ message: 'Server error during session validation', error });
45
+ }
46
+ });
29
47
  };
30
- exports.requireAuth = requireAuth;
48
+ exports.validateSession = validateSession;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendhome/common",
3
- "version": "1.0.151",
3
+ "version": "1.0.153",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -24,6 +24,7 @@
24
24
  "@types/express": "^4.17.13",
25
25
  "@types/jsonwebtoken": "^8.5.8",
26
26
  "@types/mongoose": "^5.11.97",
27
+ "axios": "^1.7.7",
27
28
  "cookie-session": "^2.0.0",
28
29
  "express": "^4.17.2",
29
30
  "express-validator": "^6.14.0",
@@ -1,6 +0,0 @@
1
- export declare enum UserRoles {
2
- User = "user",
3
- Administrator = "administrator",
4
- Provider = "provider",
5
- Recipient = "recipient"
6
- }
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserRoles = void 0;
4
- var UserRoles;
5
- (function (UserRoles) {
6
- UserRoles["User"] = "user";
7
- UserRoles["Administrator"] = "administrator";
8
- UserRoles["Provider"] = "provider";
9
- UserRoles["Recipient"] = "recipient";
10
- })(UserRoles = exports.UserRoles || (exports.UserRoles = {}));