@denz93/vendure-plugin-simple-auth
v1.3.1
Published
Allow customers login using email and verification code (One time login)
Downloads
26
Maintainers
Readme
Simple Auth Plugin for Vendure.io
A Vendure plugin allow users log in using email and verification code
Use Case
A lot of times we want visitors (aka customers) to complete their purchase order as quick as possilble. However, they usually hesitate to create a credential to a random online shop at checkout step. So we provide a way to quickly authenticate those visitors by their email and a verification code that is sent to their email.
What it does
- Expose a GraphQL Query "
requestOneTimeCode". - Add an authentication strategy to GraphQL mutation "
authenticate".
How to use
1. Install
yarn add @denz93/vendure-plugin-simple-auth
or
npm i --save @denz93/vendure-plugin-simple-auth
2. Add the plugin to vendure-config.ts file
import { SimpleAuthPlugin } from "@denz93/vendure-plugin-simple-auth";
...
export const config: VendureConfig = {
...
plugins: [
...
SimpleAuthPlugin.init(options) //see Options
]
}3. Options for SimpleAuthPlugin.init
attempts:
numberPlugin will invalidate the verification code after user's
attempts.
default: 5ttl:
numberTime to live
How long the verification code is valid for.
default: 600 (seconds)length:
numberHow many digits/alphabets the verification code should be.
default: 6includeAlphabet:
booleanShould allow alphabet characters.
default: false (akadigits only)isDev:
booleanIf true, the verification will return along with the response of query.
requestOneTimeCode.
It's for debug and testing.
default: falsecacheModuleOption:
CacheModuleOptionBy default, the plugin use
"memory"for caching which is underlying using NestJs CacheModule.
To change cache store toRedis,MongoDB, etc, please see NestJs CacheModule docs here.
You also want to see here fromcache-managerwhich is underlying used by NestJs.
Note: should use cache-manager 4.x if using Vendure under 2.x
default: {}checkCrossStrategies:
booleanStrictly enforce unique email among all strategies
For example:
- One day, user "John" sign in using Google authentication with "[email protected]".
- Another day, user "John" sign in using One-time passcode authenication (this plugin) with the same email.
- This plugin will throw an error if the flag is enabled.
default: false.
Note: This only works if Google authentication plugin using email as an identifier
4. Add EmailHandler to EmailPlugin
** Note: Since v1.3.0 you don't need to config this step anymore. The plugin will automatically append the handler to Email Plugin
// vendure-config.ts
import { oneTimeCodeRequestedEventHandler } from '@denz93/vendure-plugin-simple-auth';
...
export const config: VendureConfig = {
...
plugins: [
...
EmailPlugin.init({
...
handlers: [...defaultEmailHandler, oneTimeCodeRequestedEventHandler]
})
]
}Future Updates
- [x] Prevent cross authenticate (Ex: users use same email for GoogleAuth and SimpleAuth)
