Git Product home page Git Product logo

hapi-login-example-postgres's Introduction

Hapi Register + Login Example (using) PostgreSQL

A login form using hapi-auth-register, hapi-auth-login & hapi-auth-jwt2 with a PostgreSQL DB

Build Status codecov.io Code Climate Dependency Status devDependencies Status HitCount

Why?

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: Join the chat at https://gitter.im/dwyl/chat

What?

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!

Highlights:

  • ALL values inserted into the database are escaped using pg-escape (made by @TJ & Co ... so you know its good)
  • We use Joi for validation - which we display in the client UI. (see screenshots below)

login form

How?

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

1. Clone the repo:

git clone https://github.com/dwyl/hapi-login-example-postgres.git
cd hapi-login-example-postgres

2. Install Dependencies from NPM

npm install

3. Ensure you have the Required Environment Variables

create 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/vaN7A

default on mac is: export DATABASE_URL=postgres://postgres:@localhost/test
if you don't already have a database called test on your system,
create it now by running this command in your psql/pgadmin: CREATE DATABASE test;

4. Run the Tests

npm test

Note: running npm test will first execute npm run create which creates the necessary Database Tables to run the app. see: /test/database_setup.sql

5. Run the Server

npm run dev

That's it.
Now, hack customise it to your heart's content!

Demo Screenshots

When you visit http://localhost:8000/ you will see a login form, you can login with any valid email address: hapi-login-01

Make sure the email address is valid: hapi-login-03

Your password needs to be more than 6 characters long: hapi-login-05

We also use https://github.com/chriso/validator.js to mitigate Cross Site Scripting vulnerability:

Avoids Cross Site Scripting: hapi login avoids XSS

Want More?

If you would like to see this example expanded, please either create an issue with a specific request or Join the chat at https://gitter.im/dwyl/chat

hapi-login-example-postgres's People

Contributors

nelsonic avatar iteles avatar arhell avatar simonlab avatar jackcarlisle avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.