First, register your app_name.
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>
Lastly, setup a /login/success route to set your app's session. There are examples below in different languages.
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');
});
});
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
Dev setup is if you want to work on the library yourself.
$ npm install -g grunt-cli
$ npm install
$ grunt