A login form using hapi-auth-register, hapi-auth-login & hapi-auth-jwt2 with a PostgreSQL DB
We did not find an end-to-end solution/tutorial for login (using email & password) in Hapi.js apps, so we wrote it.
By popular demand
this example focusses on PostgreSQL,
but it can easily be adapted to work with any backed/database.
If anything is unclear in this (or any of our other repos),
please tell us:
This repo is a showcase for how to build a login flow using Hapi.js.
We use the following plugins:
Each one is hand-crafted, tested and maintained by us, feel free to use the code how ever you see fit.
Note: If you have requests/suggestions for how to extend this example, please let us know!
- ALL values inserted into the database are escaped using
pg-escape(made by @TJ & Co ... so you know its good) - We use
Joifor validation - which we display in the client UI. (see screenshots below)
The best way to get started is to run this example locally.
Please ensure you have PostgreSQL Installed and Running on your local machine before you attempt to run this example. see: https://wiki.postgresql.org/wiki/Detailed_installation_guides
git clone https://github.com/dwyl/hapi-login-example-postgres.git
cd hapi-login-example-postgresnpm installcreate an .env file in your hapi-login-example-postgres directory.
add a line for your DATABASE_URL variable and one for JWT_SECRET:
e.g:
export DATABASE_URL=postgres://postgres:@localhost/test
export JWT_SECRET=https://git.io/vaN7Adefault on mac is: export DATABASE_URL=postgres://postgres:@localhost/test
if you don't already have a database calledteston your system,
create it now by running this command in your psql/pgadmin:CREATE DATABASE test;
npm testNote: running npm test will first execute npm run create which creates
the necessary Database Tables to run the app. see:
/test/database_setup.sql
npm run devThat's it.
Now, hack customise it to your heart's content!
When you visit http://localhost:8000/ you will see a login form, you can login with any valid email address:

Make sure the email address is valid:

Your password needs to be more than 6 characters long:

We also use https://github.com/chriso/validator.js to mitigate Cross Site Scripting vulnerability:
If you would like to see this example expanded,
please either create an issue
with a specific request or

