Passwordless authentication for Medusa
This plugin requires:
npm install @devx-commerce/passwordless
{resolve: "@medusajs/medusa/auth",options: {providers: [{resolve: `@devx-commerce/passwordless/providers/passwordless`,id: "passwordless",options: {jwtSecret: "secret", // JWT secret for token generationlimeChatOptions: {webhookUrl: process.env.LIMECHAT_WEBHOOK_URL,typeId: process.env.LIMECHAT_TYPE_ID,},// Optional configurationcodeLength: 6, // Length of verification code (default: 4)codeExpiryMinutes: 10, // Code expiration time in minutes (default: 15)maxAttempts: 5, // Maximum verification attempts (default: 3)smsRateLimitMinutes: 5, // Time between SMS requests in minutes (default: 10)blockDurationMinutes: 10, // Block duration after max attempts in minutes (default: 5)}}]}}
Authentication Flow:
Security Features:
The plugin provides two main endpoints:
POST /auth/customer/passwordless{"phone": "+1234567890"}
POST /auth/customer/passwordless/callback{"phone": "+1234567890","code": "1234"}
Phone numbers must be in E.164 format:
The plugin provides clear error messages for various scenarios: