user-auth-jsonrpc
This is a node package to support in the implementation of a user authentication end-point.
The implementation of user-auth-jsonrpc is based on the following main packages:
- express: to implement the http server
- mongodb: to persiet the user information
- node-jose: to generate the authorization tokens
- nodemailer: to send confirmation emails to the user
In order to use this package your code/environment should meet the following:
- Http routing based on express
- Storage backend based on MongoDB
- To provide options and credentials to communicate with a SMTP server
- To provide the email template files with the content of the confirmation body sent to the users.
Installation
npm install user-auth-jsonrpc
Tests
npm run lint
npm test
Usage
const express = ;const userAuth = ;const MongoClient = ;const path = ; // create the express app objectconst app = ; // create the authentication routerlet routerRpc = express;app; { return MongoClient ;}; ;
Email Configuration
The configuration is based on the package mailer-template.
In the example above we have used the following template structure:
├── templates
└── mail
├── confirm-password.html.mst
├── confirm-password.json
├── confirm-register.html.mst
└── confirm-register.json
With the following templates contents:
confirm-register.json
"subject": "Activate your account in The_Marvellouse_Account" "images":
confirm-register.html.mst
<p>Hi {{profile.name}},</p>
<p>Thanks for signing up for The_Marvellouse_Service!</p>
<p>Please confirm your account at <a class=activate href="{{href}}">activate</a></p>
confirm-password.json
"subject": "Password change requested in The_Marvellouse_Account" "images":
confirm-password.html.mst
<p>Hi, {{profile.name}}</p>
<p>You have recently requested to change the password in your account for The_Marvellouse_Service!</p>
<p>Please confirm the change at <a class=activate href="{{href}}">confirm change</a></p>
Template View
Each template is rendered using mustache and the view object which can be expanded in the templates has the following structure:
{
profile: {...},
href: '...'
}
where,
profile
is the corresponding profile field from the user document in the database. You can use in the template, for instance, the name of the user like{{profile.name}}
href
is the link to confirm the action (register or password change)
API
You can see the documentation of the client API for the implemented end-point at API doc
Contributing
In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.