@7365admin1/core 2.50.0 → 2.51.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.
package/dist/index.mjs CHANGED
@@ -3952,6 +3952,9 @@ function useVerificationRepo() {
3952
3952
  return Promise.reject(error);
3953
3953
  }
3954
3954
  }
3955
+ async function findOne(query) {
3956
+ return await collection.findOne(query);
3957
+ }
3955
3958
  return {
3956
3959
  createIndex,
3957
3960
  createTextIndex,
@@ -3960,7 +3963,8 @@ function useVerificationRepo() {
3960
3963
  getVerifications,
3961
3964
  getByIdByType,
3962
3965
  updateStatusById,
3963
- getByStatus
3966
+ getByStatus,
3967
+ findOne
3964
3968
  };
3965
3969
  }
3966
3970
 
@@ -5297,29 +5301,28 @@ function useVerificationService() {
5297
5301
  throw error;
5298
5302
  }
5299
5303
  }
5300
- async function createSimpleUserInvite({
5301
- email,
5302
- metadata
5303
- }) {
5304
+ async function createSimpleUserInvite({ email, metadata }) {
5304
5305
  const type = "user-invite";
5306
+ if (metadata?.org)
5307
+ await getOrgById(metadata.org);
5308
+ if (metadata?.siteId)
5309
+ await getSiteById(metadata.siteId);
5310
+ const existing = await useVerificationRepo().findOne({
5311
+ type,
5312
+ email,
5313
+ "metadata.org": metadata?.org,
5314
+ "metadata.siteId": metadata?.siteId
5315
+ });
5316
+ if (existing)
5317
+ return existing._id;
5305
5318
  const value = {
5306
5319
  type,
5307
5320
  email,
5308
5321
  metadata,
5309
- expireAt: new Date(
5310
- (/* @__PURE__ */ new Date()).getTime() + 72 * 60 * 60 * 1e3
5311
- ).toISOString(),
5322
+ expireAt: new Date(Date.now() + 72 * 60 * 60 * 1e3).toISOString(),
5312
5323
  createdAt: (/* @__PURE__ */ new Date()).toISOString()
5313
5324
  };
5314
- if (value.metadata?.org) {
5315
- await getOrgById(value.metadata?.org);
5316
- }
5317
- if (value.metadata?.siteId) {
5318
- await getSiteById(value.metadata?.siteId);
5319
- }
5320
5325
  const res = await add(value);
5321
- const dir = __dirname;
5322
- const filePath = getDirectory(dir, "./public/handlebars/user-invite");
5323
5326
  const link = `${APP_MAIN}/verify/invitation/${res}`;
5324
5327
  const emailContent = compileHandlebar({
5325
5328
  context: {
@@ -5327,9 +5330,9 @@ function useVerificationService() {
5327
5330
  validity: VERIFICATION_USER_INVITE_DURATION,
5328
5331
  link
5329
5332
  },
5330
- filePath
5333
+ filePath: getDirectory(__dirname, "./public/handlebars/user-invite")
5331
5334
  });
5332
- mailer.sendMail({
5335
+ await mailer.sendMail({
5333
5336
  to: email,
5334
5337
  subject: "User Invite",
5335
5338
  html: emailContent,
@@ -7181,7 +7184,7 @@ function useMemberService() {
7181
7184
  getByRoles
7182
7185
  } = useMemberRepo();
7183
7186
  const { getById: _getVerificationById, updateStatusById } = useVerificationRepo();
7184
- const { getUserByEmail, updateDefaultOrgByEmail } = useUserRepo();
7187
+ const { getUserByEmail, updateDefaultOrgByEmail, getUserById } = useUserRepo();
7185
7188
  const { getById: getOrgById } = useOrgRepo();
7186
7189
  const { getSiteById } = useSiteRepo();
7187
7190
  const { getOwnerRolesByTypeOrg } = useRoleRepo();
@@ -7243,6 +7246,52 @@ function useMemberService() {
7243
7246
  session?.endSession();
7244
7247
  }
7245
7248
  }
7249
+ async function createMemberDirect({
7250
+ userId,
7251
+ orgId,
7252
+ roleId,
7253
+ app,
7254
+ siteId,
7255
+ siteName
7256
+ }) {
7257
+ const session = useAtlas15.getClient()?.startSession();
7258
+ session?.startTransaction();
7259
+ try {
7260
+ const org = await getOrgById(orgId);
7261
+ if (!org)
7262
+ throw new BadRequestError29("Organization not found.");
7263
+ const user = await getUserById(userId);
7264
+ if (!user)
7265
+ throw new BadRequestError29("User not found.");
7266
+ const member = await addMember(
7267
+ {
7268
+ org: org._id?.toString() || "",
7269
+ orgName: org.name || "",
7270
+ user: user._id?.toString() || "",
7271
+ name: user?.email,
7272
+ role: roleId,
7273
+ type: app,
7274
+ siteId: siteId ?? "",
7275
+ siteName: siteName ?? ""
7276
+ },
7277
+ session
7278
+ );
7279
+ if (!user.defaultOrg) {
7280
+ await updateDefaultOrgByEmail(
7281
+ user.email,
7282
+ org._id?.toString() || "",
7283
+ session
7284
+ );
7285
+ }
7286
+ await session?.commitTransaction();
7287
+ return { member };
7288
+ } catch (error) {
7289
+ await session?.abortTransaction();
7290
+ throw error;
7291
+ } finally {
7292
+ session?.endSession();
7293
+ }
7294
+ }
7246
7295
  async function updateRoleById(id, role, type, org) {
7247
7296
  const owner = await getOwnerRolesByTypeOrg(type, org);
7248
7297
  if (!owner.length) {
@@ -7270,6 +7319,7 @@ function useMemberService() {
7270
7319
  }
7271
7320
  return {
7272
7321
  createMember,
7322
+ createMemberDirect,
7273
7323
  updateRoleById
7274
7324
  };
7275
7325
  }
@@ -7284,7 +7334,7 @@ function useMemberController() {
7284
7334
  updateMemberStatus: _updateMemberStatus,
7285
7335
  updateStatusByUserId: _updateStatusByUserId
7286
7336
  } = useMemberRepo();
7287
- const { createMember: _createMember, updateRoleById: _updateRoleById } = useMemberService();
7337
+ const { createMember: _createMember, createMemberDirect: _createMemberDirect, updateRoleById: _updateRoleById } = useMemberService();
7288
7338
  async function createMember(req, res, next) {
7289
7339
  const validation = Joi15.string().hex().required();
7290
7340
  const _id = req.params.id;
@@ -7473,6 +7523,32 @@ function useMemberController() {
7473
7523
  return;
7474
7524
  }
7475
7525
  }
7526
+ async function createMemberDirect(req, res, next) {
7527
+ const validation = Joi15.object({
7528
+ userId: Joi15.string().hex().required(),
7529
+ orgId: Joi15.string().hex().required(),
7530
+ roleId: Joi15.string().hex().required(),
7531
+ app: Joi15.string().required(),
7532
+ siteId: Joi15.string().hex().optional().allow("", null),
7533
+ siteName: Joi15.string().optional().allow("", null)
7534
+ });
7535
+ const { error } = validation.validate(req.body);
7536
+ if (error) {
7537
+ logger21.log({ level: "error", message: error.message });
7538
+ next(new BadRequestError30(error.message));
7539
+ return;
7540
+ }
7541
+ const { userId, orgId, roleId, app, siteId, siteName } = req.body;
7542
+ try {
7543
+ const data = await _createMemberDirect({ userId, orgId, roleId, app, siteId, siteName });
7544
+ res.status(201).json(data);
7545
+ return;
7546
+ } catch (error2) {
7547
+ logger21.log({ level: "error", message: error2.message });
7548
+ next(error2);
7549
+ return;
7550
+ }
7551
+ }
7476
7552
  return {
7477
7553
  createMember,
7478
7554
  getByUserId,
@@ -7480,7 +7556,8 @@ function useMemberController() {
7480
7556
  getAll,
7481
7557
  getOrgsByMembership,
7482
7558
  updateMemberStatus,
7483
- updateRoleById
7559
+ updateRoleById,
7560
+ createMemberDirect
7484
7561
  };
7485
7562
  }
7486
7563