@zimpligital/medusa-plugin-auth-otp
Version:
A starter for Medusa plugins.
74 lines • 5.96 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.POST = void 0;
const utils_1 = require("@medusajs/framework/utils");
const POST = async (req, res) => {
const customer_id = req.auth_context.actor_id;
const phone = req.validatedBody.phone;
const customerService = req.scope.resolve(utils_1.Modules.CUSTOMER);
const logger = req.scope.resolve('logger');
try {
const customer = await customerService.retrieveCustomer(customer_id);
const customer_phone = customer?.phone || '';
// Check if the user already has a provider identity for 'auth-otp' with their current phone
const authService = req.scope.resolve(utils_1.Modules.AUTH);
const [provider] = await authService.listProviderIdentities({
provider: 'auth-otp',
entity_id: customer_phone
});
// If provider identity exists, update it with the new phone number
if (provider) {
// Update provider identity's phone fields
await authService.updateProviderIdentities([
{
id: provider.id,
entity_id: phone,
user_metadata: { phone },
provider_metadata: { phone }
}
]);
// Update the phone number in the customer profile
await customerService.updateCustomers(customer_id, {
phone,
metadata: {
last_phone_updated_at: new Date().toISOString(),
}
});
return res.status(200).json({ success: true, message: "Phone number updated successfully" });
}
// If no provider identity exists, create a new one for 'auth-otp' with the new phone number
const [authIdentity] = await authService.listAuthIdentities({
app_metadata: {
customer_id
}
});
// Create a new provider identity linked to the user's auth identity
await authService.createProviderIdentities([
{
provider: "auth-otp",
auth_identity_id: authIdentity.id,
entity_id: phone,
user_metadata: {
phone
},
provider_metadata: {
phone
}
}
]);
// Update the phone number in the customer profile
await customerService.updateCustomers(customer_id, {
phone,
metadata: {
last_phone_updated_at: new Date().toISOString(),
}
});
return res.status(200).json({ success: true, message: "Phone number updated successfully" });
}
catch (error) {
logger.error('Error updating phone number', error);
return res.status(422).json({ success: false, message: `Unable to update phone number: ${error?.message}` });
}
};
exports.POST = POST;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvY3VzdG9tZXIvYXV0aC1vdHAvdXBkYXRlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLHFEQUFvRDtBQUc3QyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3hCLEdBQWdELEVBQ2hELEdBQW1CLEVBQ2xCLEVBQUU7SUFFSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQTtJQUM3QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUV0QyxNQUFNLGVBQWUsR0FBMkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sTUFBTSxHQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5ELElBQUksQ0FBQztRQUNKLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1FBRTdDLDRGQUE0RjtRQUM1RixNQUFNLFdBQVcsR0FBdUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQztZQUMzRCxRQUFRLEVBQUUsVUFBVTtZQUNwQixTQUFTLEVBQUUsY0FBYztTQUN6QixDQUFDLENBQUE7UUFHRixtRUFBbUU7UUFDbkUsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNkLDBDQUEwQztZQUMxQyxNQUFNLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDMUM7b0JBQ0MsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO29CQUNmLFNBQVMsRUFBRSxLQUFLO29CQUNoQixhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUU7b0JBQ3hCLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFO2lCQUM1QjthQUNELENBQUMsQ0FBQTtZQUNGLGtEQUFrRDtZQUNsRCxNQUFNLGVBQWUsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUNsRCxLQUFLO2dCQUNMLFFBQVEsRUFBRTtvQkFDVCxxQkFBcUIsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtpQkFDL0M7YUFDRCxDQUFDLENBQUE7WUFDRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFFRCw0RkFBNEY7UUFDNUYsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sV0FBVyxDQUFDLGtCQUFrQixDQUFDO1lBQzNELFlBQVksRUFBRTtnQkFDYixXQUFXO2FBQ1g7U0FDRCxDQUFDLENBQUE7UUFFRixvRUFBb0U7UUFDcEUsTUFBTSxXQUFXLENBQUMsd0JBQXdCLENBQUM7WUFDMUM7Z0JBQ0MsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxFQUFFO2dCQUNqQyxTQUFTLEVBQUUsS0FBSztnQkFDaEIsYUFBYSxFQUFFO29CQUNkLEtBQUs7aUJBQ0w7Z0JBQ0QsaUJBQWlCLEVBQUU7b0JBQ2xCLEtBQUs7aUJBQ0w7YUFDRDtTQUNELENBQUMsQ0FBQTtRQUVGLGtEQUFrRDtRQUNsRCxNQUFNLGVBQWUsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFO1lBQ2xELEtBQUs7WUFDTCxRQUFRLEVBQUU7Z0JBQ1QscUJBQXFCLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDL0M7U0FDRCxDQUFDLENBQUE7UUFFRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLGtDQUFrQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlHLENBQUM7QUFDRixDQUFDLENBQUM7QUEvRVcsUUFBQSxJQUFJLFFBK0VmIn0=