all repos — caroster @ e6df524bf4e90efcb82e2474df6c26952d86b7a4

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

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

 1import jwt from "jsonwebtoken";
 2
 3const MAGICLINK_SECRET = process.env.MAGICLINK_SECRET;
 4
 5export const generateMagicToken = async (email: string) => {
 6  const existingUser = await strapi.db
 7    .query("plugin::users-permissions.user")
 8    .findOne({
 9      where: { email },
10    });
11
12  if (existingUser?.provider === "google") {
13    strapi.log.warn(
14      `User ${email} is linked to Google account. Can't login with magic link.`
15    );
16    throw new Error("GoogleAccount");
17  }
18  if (!MAGICLINK_SECRET) throw new Error("No MAGICLINK_SECRET provided");
19
20  return jwt.sign({ email }, MAGICLINK_SECRET, { expiresIn: "20m" });
21};
22
23export const verifyMagicToken = (token: string) =>
24  jwt.verify(token, MAGICLINK_SECRET);