Skip to content

Instantly share code, notes, and snippets.

@OmarKhattab
Created November 29, 2020 21:15
Show Gist options
  • Save OmarKhattab/dea4328acd9360ffe3f12fa17c59a87b to your computer and use it in GitHub Desktop.
Save OmarKhattab/dea4328acd9360ffe3f12fa17c59a87b to your computer and use it in GitHub Desktop.
Lambda Functions For SMS Verification
export const sendSMSVerificationCode = async (event, context, callback) => {
try {
context.callbackWaitsForEmptyEventLoop = false;
await connectToDB();
const data = JSON.parse(event.body);
const { phone } = data;
console.log(phone);
const code = Math.floor(1000 + Math.random() * 9000);
let user;
try {
user = await User.findOne({ phone });
} catch (error) {}
// if (!user) return failure({ message: "No User Found With Phone Number" });
if (user) {
user.phoneVerificationCode = code;
await user.save();
await axios.post(verificationCodesWebhookURL, {
text: `${phone} verification code is: ${code}`,
});
} else {
await axios.post(verificationCodesWebhookURL, {
text: `${phone} New User Attempting To Signup. Your verification code is: ${code}`,
});
}
await client.messages.create({
body: `Your verification code is ${code}`,
from: trialNumber,
to: phone,
});
return success({ status: "ok" });
} catch (error) {
console.log(error);
return failure({ error: error.message, message: error.message });
}
};
export const verifySMSVerificationCode = async (event, context, callback) => {
try {
context.callbackWaitsForEmptyEventLoop = false;
await connectToDB();
const data = JSON.parse(event.body);
const { verificationCode, phone } = data;
let user = await User.findOne({ phone });
if (!user) return failure({ message: "Invalid Phone Number" });
if (user && user.phoneVerificationCode) {
if (user.phoneVerificationCode === verificationCode) {
if (!user.phoneVerified)
await User.findOneAndUpdate(
{ phone },
{ $set: { phoneVerified: true } }
);
const token = await user.generateJWT({ phone }); // generate a fresh JWT
user.jwt = token;
user = await user.save();
return success({ status: "ok", user });
} else return failure({ message: "invalid code" });
}
return failure({
error: "Invalid Phone Number",
message: "Invalid Phone Number",
});
} catch (error) {
console.log(error);
console.log(error.message);
return failure({ message: error.message, error: error.message });
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment