@sgftech/medusa-plugin-marketplace-v2 0.1.26

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 (222) hide show
  1. package/.babelrc.js +12 -0
  2. package/.eslintrc.js +68 -0
  3. package/.vscode/settings.json +2 -0
  4. package/.yarnrc.yml +1 -0
  5. package/README.md +70 -0
  6. package/SECURITY.md +21 -0
  7. package/data/seed-onboarding.json +141 -0
  8. package/data/seed.json +1006 -0
  9. package/dist/api/middlewares/authenticate-user.d.ts +15 -0
  10. package/dist/api/middlewares/authenticate-user.js +212 -0
  11. package/dist/api/middlewares/authenticate-user.js.map +1 -0
  12. package/dist/api/middlewares/logged-in-user-v2.d.ts +3 -0
  13. package/dist/api/middlewares/logged-in-user-v2.js +69 -0
  14. package/dist/api/middlewares/logged-in-user-v2.js.map +1 -0
  15. package/dist/api/middlewares/logged-in-user.d.ts +1 -0
  16. package/dist/api/middlewares/logged-in-user.js +18 -0
  17. package/dist/api/middlewares/logged-in-user.js.map +1 -0
  18. package/dist/api/routes/admin/create-product.d.ts +1 -0
  19. package/dist/api/routes/admin/create-product.js +19 -0
  20. package/dist/api/routes/admin/create-product.js.map +1 -0
  21. package/dist/api/routes/admin/create-store.d.ts +1 -0
  22. package/dist/api/routes/admin/create-store.js +19 -0
  23. package/dist/api/routes/admin/create-store.js.map +1 -0
  24. package/dist/api/routes/admin/create-user.d.ts +1 -0
  25. package/dist/api/routes/admin/create-user.js +19 -0
  26. package/dist/api/routes/admin/create-user.js.map +1 -0
  27. package/dist/index.d.ts +0 -0
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/migrations/1629000000000-create-workflow-table.d.ts +5 -0
  31. package/dist/migrations/1629000000000-create-workflow-table.js +29 -0
  32. package/dist/migrations/1629000000000-create-workflow-table.js.map +1 -0
  33. package/dist/migrations/1629000000001-workflow-table-stage.d.ts +5 -0
  34. package/dist/migrations/1629000000001-workflow-table-stage.js +48 -0
  35. package/dist/migrations/1629000000001-workflow-table-stage.js.map +1 -0
  36. package/dist/migrations/1632467997443-workflow-requests.d.ts +5 -0
  37. package/dist/migrations/1632467997443-workflow-requests.js +48 -0
  38. package/dist/migrations/1632467997443-workflow-requests.js.map +1 -0
  39. package/dist/migrations/1632468000000-update-workflow-keys-table.d.ts +5 -0
  40. package/dist/migrations/1632468000000-update-workflow-keys-table.js +31 -0
  41. package/dist/migrations/1632468000000-update-workflow-keys-table.js.map +1 -0
  42. package/dist/migrations/1632470000000-add-approvers-to-workflow-stage.d.ts +5 -0
  43. package/dist/migrations/1632470000000-add-approvers-to-workflow-stage.js +52 -0
  44. package/dist/migrations/1632470000000-add-approvers-to-workflow-stage.js.map +1 -0
  45. package/dist/migrations/1632471000000-update-user-table-for-approvers.d.ts +5 -0
  46. package/dist/migrations/1632471000000-update-user-table-for-approvers.js +43 -0
  47. package/dist/migrations/1632471000000-update-user-table-for-approvers.js.map +1 -0
  48. package/dist/migrations/1632472000000-update-workflow-request-table-for-approvals.d.ts +5 -0
  49. package/dist/migrations/1632472000000-update-workflow-request-table-for-approvals.js +43 -0
  50. package/dist/migrations/1632472000000-update-workflow-request-table-for-approvals.js.map +1 -0
  51. package/dist/migrations/1632473000000-create-approval-table.d.ts +5 -0
  52. package/dist/migrations/1632473000000-create-approval-table.js +54 -0
  53. package/dist/migrations/1632473000000-create-approval-table.js.map +1 -0
  54. package/dist/migrations/1652101349791-order.migration.d.ts +6 -0
  55. package/dist/migrations/1652101349791-order.migration.js +26 -0
  56. package/dist/migrations/1652101349791-order.migration.js.map +1 -0
  57. package/dist/migrations/1655123458263-invite.migration.d.ts +6 -0
  58. package/dist/migrations/1655123458263-invite.migration.js +23 -0
  59. package/dist/migrations/1655123458263-invite.migration.js.map +1 -0
  60. package/dist/migrations/1655131148363-role.migration.d.ts +6 -0
  61. package/dist/migrations/1655131148363-role.migration.js +32 -0
  62. package/dist/migrations/1655131148363-role.migration.js.map +1 -0
  63. package/dist/migrations/1655131601491-permission.migration.d.ts +6 -0
  64. package/dist/migrations/1655131601491-permission.migration.js +47 -0
  65. package/dist/migrations/1655131601491-permission.migration.js.map +1 -0
  66. package/dist/migrations/1655132360987-user.migration.d.ts +6 -0
  67. package/dist/migrations/1655132360987-user.migration.js +29 -0
  68. package/dist/migrations/1655132360987-user.migration.js.map +1 -0
  69. package/dist/migrations/1666588571522-user.migration.d.ts +6 -0
  70. package/dist/migrations/1666588571522-user.migration.js +27 -0
  71. package/dist/migrations/1666588571522-user.migration.js.map +1 -0
  72. package/dist/migrations/1666588577183-store.migration.d.ts +6 -0
  73. package/dist/migrations/1666588577183-store.migration.js +26 -0
  74. package/dist/migrations/1666588577183-store.migration.js.map +1 -0
  75. package/dist/migrations/1667045765051-customer.migration.d.ts +6 -0
  76. package/dist/migrations/1667045765051-customer.migration.js +33 -0
  77. package/dist/migrations/1667045765051-customer.migration.js.map +1 -0
  78. package/dist/migrations/1683175918497-add-user-stores.migration.d.ts +6 -0
  79. package/dist/migrations/1683175918497-add-user-stores.migration.js +60 -0
  80. package/dist/migrations/1683175918497-add-user-stores.migration.js.map +1 -0
  81. package/dist/migrations/1683177500538-add-product-store-id.migration.d.ts +6 -0
  82. package/dist/migrations/1683177500538-add-product-store-id.migration.js +53 -0
  83. package/dist/migrations/1683177500538-add-product-store-id.migration.js.map +1 -0
  84. package/dist/migrations/address.migration.d.ts +6 -0
  85. package/dist/migrations/address.migration.js +25 -0
  86. package/dist/migrations/address.migration.js.map +1 -0
  87. package/dist/migrations/product.migration.d.ts +6 -0
  88. package/dist/migrations/product.migration.js +21 -0
  89. package/dist/migrations/product.migration.js.map +1 -0
  90. package/dist/migrations/stage-status.d.ts +5 -0
  91. package/dist/migrations/stage-status.js +22 -0
  92. package/dist/migrations/stage-status.js.map +1 -0
  93. package/dist/migrations/user.migration.d.ts +6 -0
  94. package/dist/migrations/user.migration.js +21 -0
  95. package/dist/migrations/user.migration.js.map +1 -0
  96. package/dist/models/address.d.ts +3 -0
  97. package/dist/models/address.js +18 -0
  98. package/dist/models/address.js.map +1 -0
  99. package/dist/models/customer.d.ts +9 -0
  100. package/dist/models/customer.js +49 -0
  101. package/dist/models/customer.js.map +1 -0
  102. package/dist/models/invite.d.ts +6 -0
  103. package/dist/models/invite.js +32 -0
  104. package/dist/models/invite.js.map +1 -0
  105. package/dist/models/order.d.ts +9 -0
  106. package/dist/models/order.js +48 -0
  107. package/dist/models/order.js.map +1 -0
  108. package/dist/models/permission.d.ts +8 -0
  109. package/dist/models/permission.js +56 -0
  110. package/dist/models/permission.js.map +1 -0
  111. package/dist/models/product.d.ts +5 -0
  112. package/dist/models/product.js +43 -0
  113. package/dist/models/product.js.map +1 -0
  114. package/dist/models/role.d.ts +12 -0
  115. package/dist/models/role.js +68 -0
  116. package/dist/models/role.js.map +1 -0
  117. package/dist/models/setting.d.ts +69 -0
  118. package/dist/models/setting.js +46 -0
  119. package/dist/models/setting.js.map +1 -0
  120. package/dist/models/store.d.ts +15 -0
  121. package/dist/models/store.js +85 -0
  122. package/dist/models/store.js.map +1 -0
  123. package/dist/models/user.d.ts +15 -0
  124. package/dist/models/user.js +76 -0
  125. package/dist/models/user.js.map +1 -0
  126. package/dist/models/workflow-approval.d.ts +8 -0
  127. package/dist/models/workflow-approval.js +37 -0
  128. package/dist/models/workflow-approval.js.map +1 -0
  129. package/dist/models/workflow-requests.d.ts +9 -0
  130. package/dist/models/workflow-requests.js +42 -0
  131. package/dist/models/workflow-requests.js.map +1 -0
  132. package/dist/models/workflow-stage.d.ts +8 -0
  133. package/dist/models/workflow-stage.js +38 -0
  134. package/dist/models/workflow-stage.js.map +1 -0
  135. package/dist/models/workflow.d.ts +8 -0
  136. package/dist/models/workflow.js +37 -0
  137. package/dist/models/workflow.js.map +1 -0
  138. package/dist/repositories/address.d.ts +7 -0
  139. package/dist/repositories/address.js +11 -0
  140. package/dist/repositories/address.js.map +1 -0
  141. package/dist/repositories/currency.d.ts +7 -0
  142. package/dist/repositories/currency.js +11 -0
  143. package/dist/repositories/currency.js.map +1 -0
  144. package/dist/repositories/customer.d.ts +12 -0
  145. package/dist/repositories/customer.js +11 -0
  146. package/dist/repositories/customer.js.map +1 -0
  147. package/dist/repositories/invite.d.ts +7 -0
  148. package/dist/repositories/invite.js +11 -0
  149. package/dist/repositories/invite.js.map +1 -0
  150. package/dist/repositories/order.d.ts +9 -0
  151. package/dist/repositories/order.js +11 -0
  152. package/dist/repositories/order.js.map +1 -0
  153. package/dist/repositories/permission.d.ts +3 -0
  154. package/dist/repositories/permission.js +8 -0
  155. package/dist/repositories/permission.js.map +1 -0
  156. package/dist/repositories/product.d.ts +43 -0
  157. package/dist/repositories/product.js +11 -0
  158. package/dist/repositories/product.js.map +1 -0
  159. package/dist/repositories/role.d.ts +3 -0
  160. package/dist/repositories/role.js +8 -0
  161. package/dist/repositories/role.js.map +1 -0
  162. package/dist/repositories/store.d.ts +7 -0
  163. package/dist/repositories/store.js +11 -0
  164. package/dist/repositories/store.js.map +1 -0
  165. package/dist/repositories/user.d.ts +7 -0
  166. package/dist/repositories/user.js +11 -0
  167. package/dist/repositories/user.js.map +1 -0
  168. package/dist/services/currency.d.ts +24 -0
  169. package/dist/services/currency.js +49 -0
  170. package/dist/services/currency.js.map +1 -0
  171. package/dist/services/customer.d.ts +34 -0
  172. package/dist/services/customer.js +137 -0
  173. package/dist/services/customer.js.map +1 -0
  174. package/dist/services/process-constant.d.ts +17 -0
  175. package/dist/services/process-constant.js +27 -0
  176. package/dist/services/process-constant.js.map +1 -0
  177. package/dist/services/product.d.ts +121 -0
  178. package/dist/services/product.js +382 -0
  179. package/dist/services/product.js.map +1 -0
  180. package/dist/services/region.d.ts +42 -0
  181. package/dist/services/region.js +190 -0
  182. package/dist/services/region.js.map +1 -0
  183. package/dist/services/store.d.ts +98 -0
  184. package/dist/services/store.js +607 -0
  185. package/dist/services/store.js.map +1 -0
  186. package/dist/services/user.d.ts +74 -0
  187. package/dist/services/user.js +356 -0
  188. package/dist/services/user.js.map +1 -0
  189. package/dist/services/workflow-request.d.ts +14 -0
  190. package/dist/services/workflow-request.js +100 -0
  191. package/dist/services/workflow-request.js.map +1 -0
  192. package/dist/services/workflow-stage.d.ts +19 -0
  193. package/dist/services/workflow-stage.js +46 -0
  194. package/dist/services/workflow-stage.js.map +1 -0
  195. package/dist/services/workflow.d.ts +22 -0
  196. package/dist/services/workflow.js +108 -0
  197. package/dist/services/workflow.js.map +1 -0
  198. package/dist/subscribers/customer.d.ts +5 -0
  199. package/dist/subscribers/customer.js +20 -0
  200. package/dist/subscribers/customer.js.map +1 -0
  201. package/dist/subscribers/product.d.ts +11 -0
  202. package/dist/subscribers/product.js +30 -0
  203. package/dist/subscribers/product.js.map +1 -0
  204. package/dist/subscribers/store.d.ts +25 -0
  205. package/dist/subscribers/store.js +54 -0
  206. package/dist/subscribers/store.js.map +1 -0
  207. package/dist/subscribers/user.d.ts +16 -0
  208. package/dist/subscribers/user.js +62 -0
  209. package/dist/subscribers/user.js.map +1 -0
  210. package/dist/types/global.d.ts +1 -0
  211. package/dist/types/global.js +3 -0
  212. package/dist/types/global.js.map +1 -0
  213. package/dist/types/oidc-types.d.ts +13 -0
  214. package/dist/types/oidc-types.js +3 -0
  215. package/dist/types/oidc-types.js.map +1 -0
  216. package/index.js +50 -0
  217. package/package.json +105 -0
  218. package/tsconfig.admin.json +8 -0
  219. package/tsconfig.json +33 -0
  220. package/tsconfig.server.json +8 -0
  221. package/tsconfig.spec.json +5 -0
  222. package/yarn-error.log +12869 -0
@@ -0,0 +1,74 @@
1
+ import { EntityManager, InsertEvent } from "typeorm";
2
+ import { FindConfig } from "@medusajs/medusa/dist/types/common";
3
+ import { EventBusService, PaymentProviderService, UserService as MedusaUserService } from "@medusajs/medusa/dist/services";
4
+ import { User } from "../models/user";
5
+ import { Store } from "../models/store";
6
+ import StoreService from "./store";
7
+ import { QueueObject } from "async";
8
+ import { UpdateUserInput } from "@medusajs/medusa/dist/types/user";
9
+ import CurrencyService from "./currency";
10
+ import { ConfigModule, Logger } from "@medusajs/medusa/dist/types/global";
11
+ import { AnalyticsConfigService, StagedJob } from "@medusajs/medusa";
12
+ import UserRepository from "../repositories/user";
13
+ import { Request } from "express";
14
+ import { SaasFormUserAuthenticationTokenFormat } from "../types/oidc-types";
15
+ type ConstructorParams = {
16
+ manager: EntityManager;
17
+ userRepository: typeof UserRepository;
18
+ eventBusService: EventBusService;
19
+ paymentProviderService: PaymentProviderService;
20
+ loggedInUser?: User;
21
+ analyticsConfigService: AnalyticsConfigService;
22
+ storeService: StoreService;
23
+ currencyService: CurrencyService;
24
+ logger: Logger;
25
+ configModule: ConfigModule;
26
+ featureFlagRouter: any;
27
+ };
28
+ export default class UserService extends MedusaUserService {
29
+ static LIFE_TIME: import("awilix").LifetimeType;
30
+ private readonly manager;
31
+ private readonly userRepository;
32
+ protected eventBus_: EventBusService;
33
+ protected analyticsConfigService_: AnalyticsConfigService;
34
+ readonly container: ConstructorParams;
35
+ currencyService: CurrencyService;
36
+ storeService: StoreService;
37
+ logger: Logger;
38
+ configModule: ConfigModule;
39
+ paymentProviderService: PaymentProviderService;
40
+ loggedInUser: User;
41
+ externalCustomerQueue: QueueObject<Request>;
42
+ featureFlagRouter: any;
43
+ constructor(container: ConstructorParams);
44
+ withTransaction(transactionManager?: EntityManager): this;
45
+ queueProcessor: (request: Request) => Promise<User>;
46
+ loginUser(request: Request): Promise<User>;
47
+ retrieve(userId: string, config?: FindConfig<User>): Promise<User>;
48
+ buildQuery_(selector: Record<string, any>, config?: FindConfig<User>): object;
49
+ associateUserWithStore(userId: string, store: Store): Promise<User>;
50
+ private _delay;
51
+ fetchLoggedInUser(request?: Request): Promise<User | undefined>;
52
+ associateUserWithNewStore(event: InsertEvent<Store>): Promise<InsertEvent<Store>>;
53
+ update(userId: string, update: UpdateUserInput): Promise<User>;
54
+ attachExternalAccountToUser(userId: string, externalAccount: {
55
+ providerId: string;
56
+ accountId: string;
57
+ userId: string;
58
+ }): Promise<User>;
59
+ makeid(length: any): string;
60
+ createExternalUser(req: Request, externalServiceUser: SaasFormUserAuthenticationTokenFormat): Promise<{
61
+ user: User;
62
+ store: Store;
63
+ }>;
64
+ createStoreAndAttachUser(req?: Request): Promise<{
65
+ user: User;
66
+ store: Store;
67
+ }>;
68
+ notifyLogin(loggedInUser: User): Promise<void | StagedJob>;
69
+ registerLogin(loggedInUser: User): Promise<void | StagedJob>;
70
+ addToAuthQueue(request: Request): Promise<void>;
71
+ authCreateExternalUser(request: Request): Promise<void>;
72
+ findOneByEmail(email: string): Promise<User>;
73
+ }
74
+ export {};
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const awilix_1 = require("awilix");
4
+ const services_1 = require("@medusajs/medusa/dist/services");
5
+ const user_1 = require("../models/user");
6
+ const utils_1 = require("@medusajs/medusa/dist/utils");
7
+ const async_1 = require("async");
8
+ const sleep_1 = require("@medusajs/medusa/dist/utils/sleep");
9
+ const authenticate_user_1 = require("../api/middlewares/authenticate-user");
10
+ class UserService extends services_1.UserService {
11
+ constructor(container) {
12
+ super(container);
13
+ this.queueProcessor = async (request) => {
14
+ const user = (await this.loginUser(request));
15
+ this.loggedInUser = user;
16
+ const tasksRemaining = this.externalCustomerQueue.length();
17
+ await (0, authenticate_user_1.registerLogin)(request, user);
18
+ this.logger.debug(`${tasksRemaining} login requests awaiting to be processed`);
19
+ return user;
20
+ };
21
+ this.container = container;
22
+ this.manager = container.manager;
23
+ this.userRepository = container.userRepository;
24
+ this.eventBus_ = container.eventBusService;
25
+ this.currencyService = container.currencyService;
26
+ this.storeService = container.storeService;
27
+ this.logger = container.logger;
28
+ this.configModule = container.configModule;
29
+ this.currencyService = container.currencyService;
30
+ this.analyticsConfigService_ = container.analyticsConfigService;
31
+ // this.loggedInUser = container.loggedInUser;
32
+ this.featureFlagRouter = container.featureFlagRouter;
33
+ this.externalCustomerQueue = (0, async_1.queue)(this.queueProcessor, 1);
34
+ this.externalCustomerQueue.drain(async () => {
35
+ this.logger.info("Successfully processed all new user requests");
36
+ });
37
+ }
38
+ withTransaction(transactionManager) {
39
+ if (!transactionManager) {
40
+ return this;
41
+ }
42
+ const clone = new UserService({
43
+ manager: transactionManager,
44
+ userRepository: this.userRepository,
45
+ eventBusService: this.eventBus_,
46
+ analyticsConfigService: this.analyticsConfigService_,
47
+ featureFlagRouter: this.featureFlagRouter_,
48
+ storeService: this.storeService,
49
+ paymentProviderService: this.paymentProviderService,
50
+ currencyService: this.currencyService,
51
+ configModule: this.configModule,
52
+ logger: this.logger,
53
+ loggedInUser: this.loggedInUser
54
+ });
55
+ clone.transactionManager_ = transactionManager;
56
+ return clone;
57
+ }
58
+ async loginUser(request) {
59
+ const decodedToken = request.user;
60
+ return await this.atomicPhase_(async (manager) => {
61
+ var _a, _b, _c;
62
+ /** check if user exists */
63
+ let user;
64
+ try {
65
+ user = await this.withTransaction(manager).findOneByEmail(decodedToken.email);
66
+ }
67
+ catch {
68
+ this.logger.warn(` User with ${decodedToken.email} wasn't found`);
69
+ }
70
+ if (user) {
71
+ try {
72
+ const loggedInUser = (await this.withTransaction(manager).retrieve(user.id, {
73
+ select: ["id", "email"],
74
+ relations: ["stores"]
75
+ }));
76
+ if (!loggedInUser ||
77
+ ((_b = (_a = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.stores) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) == 0) {
78
+ /** degregestering user */
79
+ this.logger.error(`User ${(_c = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.email) !== null && _c !== void 0 ? _c : ""} is not associated with any store, `);
80
+ await this.delete(loggedInUser.id);
81
+ }
82
+ else {
83
+ user = loggedInUser;
84
+ }
85
+ }
86
+ catch {
87
+ this.logger.warn(` User with ${decodedToken.email} doesn't have associated store`);
88
+ }
89
+ /** check if user has an assoicated store */
90
+ /** create a new user */
91
+ }
92
+ else {
93
+ const externalAccount = await this.withTransaction(manager).createExternalUser(request, decodedToken);
94
+ return externalAccount.user;
95
+ }
96
+ return user;
97
+ });
98
+ }
99
+ async retrieve(userId, config) {
100
+ const userRepo = this.activeManager_.withRepository(this.userRepository);
101
+ const validatedId = /* this.validateId_*/ userId;
102
+ const query = this.buildQuery_({ id: validatedId }, config);
103
+ this.logger.info(`attempting to retrieve user: ${userId}`);
104
+ const user = await userRepo.findOne(query);
105
+ return user;
106
+ }
107
+ buildQuery_(selector, config = {}) {
108
+ if (config.relations) {
109
+ if (config.relations.includes("stores")) {
110
+ config.relations.push["stores"];
111
+ }
112
+ }
113
+ else {
114
+ config.relations = ["stores"];
115
+ }
116
+ return (0, utils_1.buildQuery)(selector, config);
117
+ }
118
+ async associateUserWithStore(userId, store) {
119
+ return this.atomicPhase_(async (manager) => {
120
+ var _a;
121
+ const userRepo = this.activeManager_.getRepository(user_1.User);
122
+ const user = await userRepo.findOne({
123
+ where: { id: userId },
124
+ relations: ["stores"]
125
+ });
126
+ // const user = await userRepo.findOne(query);
127
+ if (user) {
128
+ const associatedStore = (_a = user.stores) === null || _a === void 0 ? void 0 : _a.find((st) => st.id == store.id);
129
+ if (!associatedStore) {
130
+ user.stores.push(store);
131
+ await userRepo.save(user);
132
+ }
133
+ else {
134
+ this.logger.error("user already associated with this store");
135
+ }
136
+ }
137
+ else {
138
+ this.logger.error("user wasn't found");
139
+ }
140
+ return user;
141
+ });
142
+ }
143
+ _delay(ms) {
144
+ // eslint-disable-next-line no-undef
145
+ return new Promise((resolve) => setTimeout(resolve, ms));
146
+ }
147
+ async fetchLoggedInUser(request) {
148
+ await this._delay(1000);
149
+ const container = request === null || request === void 0 ? void 0 : request.scope;
150
+ if (container) {
151
+ try {
152
+ return container.resolve("loggedInUser");
153
+ }
154
+ catch (e) {
155
+ this.logger.warn("logged in user not registered in the container");
156
+ this.logger.info(`Did the queue start ? ${this.externalCustomerQueue.length()}`);
157
+ // return await this.loginUser(request);
158
+ }
159
+ }
160
+ else if ((this === null || this === void 0 ? void 0 : this.container) &&
161
+ Object.keys(this.container).includes("loggedInUser")) {
162
+ return this.container.loggedInUser;
163
+ }
164
+ else {
165
+ return;
166
+ }
167
+ }
168
+ async associateUserWithNewStore(event) {
169
+ let loggedInUser = undefined;
170
+ const storeMembers = event.entity.members;
171
+ let isMember = false;
172
+ if (!loggedInUser) {
173
+ await (0, sleep_1.sleep)(3000);
174
+ loggedInUser = await this.fetchLoggedInUser();
175
+ }
176
+ if (!loggedInUser) {
177
+ return event;
178
+ }
179
+ const userId = loggedInUser.id;
180
+ if ((storeMembers === null || storeMembers === void 0 ? void 0 : storeMembers.length) > 0) {
181
+ while (!loggedInUser) {
182
+ loggedInUser = await this.fetchLoggedInUser();
183
+ await (0, sleep_1.sleep)(3000);
184
+ }
185
+ const memberMatchinUser = storeMembers.find((user) => {
186
+ user.id == loggedInUser.id;
187
+ });
188
+ isMember = memberMatchinUser ? true : false;
189
+ }
190
+ if (!isMember) {
191
+ if (!event.entity.members) {
192
+ event.entity.members = [];
193
+ }
194
+ event.entity.members.push(loggedInUser);
195
+ const userRepo = this.activeManager_.getRepository(user_1.User);
196
+ const query = this.buildQuery_({ id: userId });
197
+ const user = await userRepo.findOne(query);
198
+ if (user) {
199
+ user.stores.push(event.entity);
200
+ await userRepo.save(user);
201
+ }
202
+ }
203
+ return event;
204
+ }
205
+ async update(userId, update) {
206
+ {
207
+ const userRepo = this.activeManager_.getRepository(user_1.User);
208
+ const query = this.buildQuery_({ id: userId });
209
+ const user = await userRepo.findOne(query);
210
+ if (user) {
211
+ if (user.email == update.email) {
212
+ for (const key of Object.keys(update)) {
213
+ user[key] == update[key];
214
+ }
215
+ await userRepo.save(user);
216
+ }
217
+ else {
218
+ throw new Error("email addresses cannot be updated");
219
+ }
220
+ }
221
+ return user;
222
+ }
223
+ }
224
+ async attachExternalAccountToUser(userId, externalAccount) {
225
+ const userRepo = this.activeManager_.getRepository(user_1.User);
226
+ const query = this.buildQuery_({ id: userId });
227
+ const user = await userRepo.findOne(query);
228
+ if (user) {
229
+ user.externalAccountId = externalAccount.accountId;
230
+ user.externalProviderId = externalAccount.providerId;
231
+ user.externalUserId = externalAccount.userId;
232
+ await userRepo.save(user);
233
+ }
234
+ return user;
235
+ }
236
+ makeid(length) {
237
+ let result = "";
238
+ const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
239
+ const charactersLength = characters.length;
240
+ for (let i = 0; i < length; i++) {
241
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
242
+ }
243
+ return result;
244
+ }
245
+ async createExternalUser(req, externalServiceUser) {
246
+ return await this.atomicPhase_(async (manager) => {
247
+ try {
248
+ const storeService = this.storeService;
249
+ const newUserInput = {
250
+ email: externalServiceUser.email
251
+ };
252
+ let newUser = (await this.withTransaction(manager).create(newUserInput, this.makeid(16)));
253
+ await (0, authenticate_user_1.registerLogin)(req, newUser);
254
+ newUser = await this.withTransaction(manager).attachExternalAccountToUser(newUser.id, {
255
+ providerId: externalServiceUser.provider,
256
+ userId: externalServiceUser.id,
257
+ accountId: externalServiceUser.id
258
+ });
259
+ /** attaching the user to store */
260
+ this.logger.info("creating store");
261
+ let store = await storeService
262
+ .withTransaction(manager)
263
+ .retrieveStoreInAccount(newUser.externalAccountId);
264
+ if (!store) {
265
+ const result = await this.createStoreAndAttachUser(req);
266
+ store = result.store;
267
+ newUser = result.user;
268
+ }
269
+ this.logger.info("registering user in store");
270
+ /** registerining user with the store */
271
+ return { user: newUser, store };
272
+ }
273
+ catch (e) {
274
+ this.logger.error("User Service: Error creating store: " +
275
+ JSON.stringify(e.message));
276
+ throw e;
277
+ }
278
+ });
279
+ }
280
+ async createStoreAndAttachUser(req) {
281
+ const defaultStoreUser = await this.retrieve(req.user.id);
282
+ return await this.atomicPhase_(async (manager) => {
283
+ let store = await this.storeService
284
+ .withTransaction(manager)
285
+ .createUserStore(defaultStoreUser.email.trim().toLowerCase());
286
+ store = await this.storeService
287
+ .withTransaction(manager)
288
+ .addMemberToStore(defaultStoreUser, store.id);
289
+ const updatedDefaultUser = await this.withTransaction(manager).associateUserWithStore(defaultStoreUser.id, store);
290
+ return { user: updatedDefaultUser, store };
291
+ });
292
+ }
293
+ async notifyLogin(loggedInUser) {
294
+ return await this.atomicPhase_(async (manager) => {
295
+ return await this.eventBus_
296
+ .withTransaction(manager)
297
+ .emit("medusa.marketplace.user.login.notification", loggedInUser);
298
+ });
299
+ }
300
+ async registerLogin(loggedInUser) {
301
+ return await this.atomicPhase_(async (manager) => {
302
+ return await this.eventBus_
303
+ .withTransaction(manager)
304
+ .emit("medusa.container.user.login.request", loggedInUser);
305
+ });
306
+ }
307
+ async addToAuthQueue(request) {
308
+ // const queuedLoginRequest = this.loginUser(request);
309
+ this.externalCustomerQueue.push(request, (err, result) => {
310
+ if (err) {
311
+ this.logger.error(err.message);
312
+ }
313
+ this.logger.info(`user logged in ${JSON.stringify(result)}`);
314
+ });
315
+ this.logger.info(`Did the queue start ? ${this.externalCustomerQueue.started} ` +
316
+ `Elements in the queue ? ${this.externalCustomerQueue.length()}`);
317
+ /** initialise content enging */
318
+ }
319
+ async authCreateExternalUser(request) {
320
+ try {
321
+ const userService = request.scope.resolve("userService");
322
+ if (this.loggedInUser) {
323
+ this.loggedInUser = (await userService.retrieve(this.loggedInUser.id, {
324
+ select: ["id", "email"],
325
+ relations: ["stores"]
326
+ }));
327
+ this.logger.info("attempting to login user");
328
+ await (0, authenticate_user_1.registerLogin)(request, this.loggedInUser);
329
+ }
330
+ }
331
+ catch (e) {
332
+ request.scope.register({
333
+ loggedInUser: {
334
+ resolve: () => undefined
335
+ }
336
+ });
337
+ this.logger.error("unable to add external user", e.message);
338
+ }
339
+ }
340
+ async findOneByEmail(email) {
341
+ return await this.atomicPhase_(async (manager) => {
342
+ const users = await manager.getRepository(user_1.User).find();
343
+ return users.find((user) => user.email == email);
344
+ /* const query = this.userRepository
345
+ .createQueryBuilder("user")
346
+ .where("user.email = :emailParameter", {
347
+ emailParameter: email
348
+ });
349
+ const _res = (await query.getOne()) as User;
350
+ return _res;*/
351
+ });
352
+ }
353
+ }
354
+ exports.default = UserService;
355
+ UserService.LIFE_TIME = awilix_1.Lifetime.TRANSIENT;
356
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/services/user.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { WorkflowRequest } from "../models/workflow-requests";
2
+ import { Workflow } from "../models/workflow";
3
+ import { TransactionBaseService } from "@medusajs/medusa";
4
+ export default class WorkflowRequestService extends TransactionBaseService {
5
+ private workflowRequestRepository;
6
+ constructor(container: any, configModule: any);
7
+ getRequestById(requestId: string): Promise<WorkflowRequest | undefined>;
8
+ createRequest(data: any, workflow: Workflow): Promise<string>;
9
+ private notifyApprover;
10
+ private notifyUserAboutRejection;
11
+ getCurrentStageIndex(request: WorkflowRequest, workflow: Workflow): number;
12
+ respondToRequest(requestId: string, userId: string, status: string, comments: string): Promise<void>;
13
+ generateRequestId(): string;
14
+ }
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /* eslint-disable require-jsdoc */
3
+ /* eslint-disable no-undef */
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const workflow_requests_1 = require("../models/workflow-requests");
6
+ const medusa_1 = require("@medusajs/medusa");
7
+ /* eslint-disable require-jsdoc */
8
+ class WorkflowRequestService extends medusa_1.TransactionBaseService {
9
+ constructor(container, configModule) {
10
+ super(container, configModule);
11
+ this.workflowRequestRepository =
12
+ this.activeManager_.getRepository(workflow_requests_1.WorkflowRequest);
13
+ }
14
+ // ...
15
+ // Get a request by ID
16
+ async getRequestById(requestId) {
17
+ return await this.workflowRequestRepository.findOne({
18
+ where: { id: requestId }
19
+ });
20
+ }
21
+ // Create a new request and add it to the system
22
+ async createRequest(data, workflow) {
23
+ const requestId = this.generateRequestId();
24
+ const initialStage = workflow.stages[0];
25
+ const newRequest = new workflow_requests_1.WorkflowRequest();
26
+ newRequest.status = "Pending"; // Set the initial status
27
+ newRequest.workflow = { id: requestId };
28
+ // Save the new request
29
+ await this.workflowRequestRepository.save(newRequest);
30
+ await this.activeManager_.save(workflow_requests_1.WorkflowRequest, newRequest);
31
+ // Notify the assigned approver
32
+ this.notifyApprover(newRequest, initialStage.approvers[0].id);
33
+ return requestId;
34
+ }
35
+ // Notify the approver about the new request
36
+ notifyApprover(request, approverId) {
37
+ // Your notification code goes here
38
+ console.log(`Notifying approver ${approverId} about the new request ${request.id}`);
39
+ }
40
+ // Notify the user about the request rejection
41
+ notifyUserAboutRejection(request) {
42
+ // Your notification code goes here
43
+ console.log(`Notifying user about the rejection of request ${request.id}`);
44
+ }
45
+ getCurrentStageIndex(request, workflow) {
46
+ const requestStatus = request.status;
47
+ const stages = workflow.stages; // Assuming 'stages' is an array of WorkflowStage entities in the Workflow entity.
48
+ // Find the index of the current stage based on the request status
49
+ for (let i = 0; i < stages.length; i++) {
50
+ const stage = stages[i];
51
+ // Check if the stage's name matches the request status
52
+ if (stage.name === requestStatus) {
53
+ return i; // Return the index of the matching stage
54
+ }
55
+ }
56
+ return -1; // Return -1 if no matching stage is found
57
+ }
58
+ // Approve or reject a request at a specific stage
59
+ async respondToRequest(requestId, userId, status, comments) {
60
+ const request = await this.getRequestById(requestId);
61
+ if (request) {
62
+ const currentStageIndex = this.getCurrentStageIndex(request, request.workflow);
63
+ const currentStage = request.approvals[currentStageIndex];
64
+ // Only allow the assigned user to respond
65
+ if (currentStage && currentStage.user.id === userId) {
66
+ currentStage.request.status = status;
67
+ currentStage.comment = comments;
68
+ // Proceed to the next stage if the current one is approved
69
+ if (status === "Approved") {
70
+ const nextStageIndex = currentStageIndex + 1;
71
+ const nextStage = request.approvals[nextStageIndex];
72
+ if (nextStage) {
73
+ nextStage.request.status = "Pending";
74
+ nextStage.user =
75
+ request.workflow.stages[nextStageIndex].approvers[0]; // Assign to the first approver of the next stage
76
+ // Notify the newly assigned approver
77
+ this.notifyApprover(request, nextStage.user.id);
78
+ }
79
+ else {
80
+ request.status = "Completed"; // The request has passed all stages
81
+ }
82
+ }
83
+ else if (status === "Rejected") {
84
+ request.status = "Rejected"; // The request has been rejected
85
+ // Notify the user about the rejection
86
+ this.notifyUserAboutRejection(request);
87
+ }
88
+ // Save the updated request
89
+ await this.workflowRequestRepository.save(request);
90
+ }
91
+ }
92
+ }
93
+ generateRequestId() {
94
+ const timestamp = new Date().getTime().toString(16); // Convert current timestamp to hexadecimal
95
+ const randomPart = Math.floor(Math.random() * 10000).toString(16); // Add a random number as a hexadecimal string
96
+ return `${timestamp}-${randomPart}`;
97
+ }
98
+ }
99
+ exports.default = WorkflowRequestService;
100
+ //# sourceMappingURL=workflow-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-request.js","sourceRoot":"","sources":["../../src/services/workflow-request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { EntityManager } from "typeorm";
2
+ import { WorkflowStage } from "../models/workflow-stage";
3
+ import { TransactionBaseService } from "@medusajs/medusa";
4
+ import WorkflowService from "./workflow";
5
+ declare class WorkflowStageService extends TransactionBaseService {
6
+ private workflowStageRepository;
7
+ private workflowService;
8
+ constructor(container: {
9
+ manager: EntityManager;
10
+ workflowService: WorkflowService;
11
+ }, config: any);
12
+ createStage(stageData: Partial<WorkflowStage>): Promise<WorkflowStage>;
13
+ getStageById(id: string): Promise<WorkflowStage | undefined>;
14
+ getStageByName(name: string, workflowId: string): Promise<WorkflowStage | undefined>;
15
+ updateStage(id: string, updatedData: Partial<WorkflowStage>): Promise<WorkflowStage | undefined>;
16
+ deleteStage(id: string): Promise<boolean>;
17
+ getAllStages(): Promise<WorkflowStage[]>;
18
+ }
19
+ export default WorkflowStageService;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const workflow_stage_1 = require("../models/workflow-stage");
4
+ const medusa_1 = require("@medusajs/medusa");
5
+ class WorkflowStageService extends medusa_1.TransactionBaseService {
6
+ constructor(container, config) {
7
+ super(container, config);
8
+ this.workflowStageRepository =
9
+ container.manager.getRepository(workflow_stage_1.WorkflowStage);
10
+ this.workflowService = container.workflowService;
11
+ }
12
+ async createStage(stageData) {
13
+ const newStage = this.workflowStageRepository.create(stageData);
14
+ return await this.workflowStageRepository.save(newStage);
15
+ }
16
+ async getStageById(id) {
17
+ return await this.workflowStageRepository.findOne({ where: { id } });
18
+ }
19
+ async getStageByName(name, workflowId) {
20
+ const stages = await this.workflowStageRepository.find({
21
+ where: { name },
22
+ relations: ["workflow"]
23
+ });
24
+ return stages.find((stage) => stage.workflow.id == workflowId);
25
+ }
26
+ async updateStage(id, updatedData) {
27
+ const existingStage = await this.workflowStageRepository.findOne({
28
+ where: { id }
29
+ });
30
+ if (!existingStage) {
31
+ return undefined; // Stage not found
32
+ }
33
+ // Merge the updated data into the existing stage
34
+ this.workflowStageRepository.merge(existingStage, updatedData);
35
+ return await this.workflowStageRepository.save(existingStage);
36
+ }
37
+ async deleteStage(id) {
38
+ const deleteResult = await this.workflowStageRepository.delete(id);
39
+ return deleteResult.affected === 1; // Returns true if a stage was deleted
40
+ }
41
+ async getAllStages() {
42
+ return await this.workflowStageRepository.find();
43
+ }
44
+ }
45
+ exports.default = WorkflowStageService;
46
+ //# sourceMappingURL=workflow-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-stage.js","sourceRoot":"","sources":["../../src/services/workflow-stage.ts"],"names":[],"mappings":";;AAEA,6DAAyD;AACzD,6CAA0D;AAG1D,MAAM,oBAAqB,SAAQ,+BAAsB;IAIrD,YACI,SAAuE,EACvE,MAAM;QAEN,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,uBAAuB;YACxB,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,WAAW,CACb,SAAiC;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChE,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QACzB,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,cAAc,CAChB,IAAY,EACZ,UAAkB;QAElB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACnD,KAAK,EAAE,EAAE,IAAI,EAAE;YACf,SAAS,EAAE,CAAC,UAAU,CAAC;SAC1B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,WAAW,CACb,EAAU,EACV,WAAmC;QAEnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;YAC7D,KAAK,EAAE,EAAE,EAAE,EAAE;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO,SAAS,CAAC,CAAC,kBAAkB;SACvC;QAED,iDAAiD;QACjD,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC/D,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QACxB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,YAAY,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,sCAAsC;IAC9E,CAAC;IAED,KAAK,CAAC,YAAY;QACd,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;CACJ;AAED,kBAAe,oBAAoB,CAAC"}