Exposes a REST API and JavaScript API at
server.plugins.account.api
.
This plugin also creates _users/_design/byId
in your CouchDB, which has one
map function (see doc).
var Hapi = require('hapi')
var hapiAccount = require('@hoodie/account-server')
var PouchDB = require('pouchdb')
.plugin(require('pouchdb-admins'))
var options = {
PouchDB: PouchDB,
usersDb: 'my-users-db',
admins: {
admin: '-pbkdf2-a2ca9d3ee921c26d2e9d61e03a0801b11b8725c6,1081b31861bd1e91611341da16c11c16a12c13718d1f712e,10'
},
secret: 'secret123',
sessionTimeout: 1209600,
confirmation: 'auto',
notifications: {
transport: {
service: 'gmail',
auth: {
user: '[email protected]',
pass: 'userpass'
}
},
templates: {
passwordreset: 'Dear {account.username},\n\nyou can reset your password at:\n{server.info.uri}/#resetPassword/{request.token}',
confirmation: 'Dear {account.profile.name},\n\nyour confirmation code is {token}'
}
},
schema: {
username: {
minlength: 3
},
password: {
minlength: 6
},
profile: {
required: ['name'],
properties: {
name: {
type: 'string',
minlength: 3
}
}
}
},
requests: {
upgrade: function (request, reply) {
var server = request.connection.server
var user = request.auth.credentials
var promise = server.app.users.update({
id: user.id,
plan: request.params.plan
})
reply(promise)
}
}
})
server.register({
register: hapiAccount,
options: options
}, function (error) {
if (error) {
throw error
}
// plugin account api, see below
});
server.connection({
port: 8000
});
server.start(function () {
console.log('Server running at %s', server.info.uri);
});
PouchDB constructor
Name of users database. Defaults to _users
Map of admin usernames to secrets, as it’s defined in CouchDb config
Timeout for session in milliseconds.
Account confirmation strategy.
"auto"
: accounts get confirmed automatically"email"
: user receives email with confirmation token / url"invite-only"
: user receives email with invitation token, that needs to be passed on sign upfalse
: Admins confirm manually, or custom logic / 3rd-party plugins
Settings to send notifications to users like password resets and account confirmations.
notifications.service
and notifications.auth
should be compatible with
nodemailer
options.notifications.templates
are templates for notifications being sent out
by the server.
A JSON schema to validate account properties against.
Handlers for custom requests