Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
84 lines (58 sloc) 2.43 KB

handshakejs-script

Usage

Register app_name

First, register your app_name.

Add script tag

Next, place the handshake.js script tag where you want the login form displayed.

<script src='/path/to/handshake.js' 
        data-app_name="your_app_name" 
        data-root_url="https://handshakejs.herokuapp.com"></script>

(Get the latest handshake.js here. Replace the data-app_name with the one you registered.)

Next, bind to the handshake:login_confirm event to get the successful login data. This is where you would make an internal request to your application to set the session for the user.

<script>
  handshake.script.addEventListener('handshake:login_confirm', function(e) {
    console.log(e.data);
    $.post("/login/success", {email: e.data.identity.email, hash: e.data.identity.hash}, function(data) {
      window.location.href = "/dashboard";
    });    
  }, false); 
</script>

Setup your /login/success route

Lastly, setup a /login/success route to set your app's session. There are examples below in different languages.

Node.js Example
var handshakejs = require('handshakejs')('YOUR_SALT');
app.post('/login/success', function(req, res) {
  handshakejs.validate({email: req.body.email, hash: req.body.hash}, function(err, result) {
    if (!err) {
      req.session.user = req.body.email;
    }
    res.redirect('/dashboard');
  });
});

See full example nodejs app.

Ruby Example
post "/login/success" do
  Handshakejs.salt = ENV['SALT']  
  result = Handshakejs.validate({email: params[:email], hash: params[:hash]})

  session[:user] = params[:email] if result

  redirect "/dashboard"
end

See full example ruby app.

Video Demo

Dev Setup

Dev setup is if you want to work on the library yourself.

$ npm install -g grunt-cli
$ npm install
$ grunt