all repos — caroster @ v6.0

[Octree] Group carpool to your event https://caroster.io

backend/src/extensions/users-permissions/services/sendConfirmationEmail.ts (view raw)

 1import crypto from "crypto";
 2import urlJoin from "url-join";
 3import { getAbsoluteServerUrl, sanitize } from "@strapi/utils";
 4
 5export default async (user) => {
 6  const userSchema = strapi.getModel("plugin::users-permissions.user");
 7
 8  const confirmationToken = crypto.randomBytes(20).toString("hex");
 9  strapi.entityService.update("plugin::users-permissions.user", user.id, {
10    data: { confirmationToken },
11    populate: ["role"],
12  });
13
14  const sanitizedUserInfo = await sanitize.sanitizers.defaultSanitizeOutput(
15    userSchema,
16    user
17  );
18  const apiPrefix = strapi.config.get("api.rest.prefix");
19  const url = urlJoin(
20    getAbsoluteServerUrl(strapi.config),
21    apiPrefix,
22    "/auth/email-confirmation"
23  );
24  const confirmationLink = `${url}?confirmation=${confirmationToken}`;
25  await strapi
26    .service("api::email.email")
27    .sendEmailNotif(user.email, "ConfirmEmail", user.lang, {
28      confirmationToken,
29      confirmationLink,
30      user: sanitizedUserInfo,
31    });
32};