Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
IN PROGRESS. NOT FUNCTIONAL. The express-persona npm module as a docpad plugin.
CSS CoffeeScript JavaScript
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src
test
Makefile
README.md
package.json

README.md

IN PROGRESS. NON-FUNCTIONAL.

docpad-plugin-persona

The express-persona npm module as a docpad plugin.

Mozilla Persona, formerly called BrowserID, is self described as: "a cross-browser login system for the Web that's easy to use and easy to deploy. It works on all major browsers, and you can get started today."

This docpad plugin uses jsdom to query the DOM for ".persona-btn" on the renderDocument docpad event. If it finds it, it'll create a script tag that is the express-persona script:

var loginButton = document.querySelectorAll('.persona-btn');

loginButton.addEventListener("click", function() {
  navigator.id.get(function(assertion) {
    if (!assertion) {
      return;
    }

    var xhr = new XMLHttpRequest();
    xhr.open("POST", "/persona/verify", true);
    xhr.setRequestHeader("Content-Type", "application/json");
    xhr.addEventListener("loadend", function(e) {
      try {
        var data = JSON.parse(this.response);
        if (data.status === "okay") {
          // the email address the user logged in with
          console.log(data.email);
        } else {
          console.log("Login failed because " + data.reason);
        }
      } catch (ex) {
        // oh no, we didn't get valid JSON from the server
      }
    }, false);
    xhr.send(JSON.stringify({
      assertion: assertion
    }));
  });
}, false);

The "Sign in" button comes in three color options:

Along with a script tag being created, a link tag will be created as well linking the appripiate css file to create a CSS3 Sign In button.

.class Button .css file
.persona-btn persona sign in blue persona-btn.css
" + .dark persona sign in dark persona-dark-btn.css
" + .orange persona sign in orange persona-orange-btn.css

Dependencies
jsdom.js 0.2.x
express ~3.0.6
express-persona 0.0.7
bal-util >=1.13.8 <1.14

License

Licensed under the incredibly permissive MIT License
Copyright © 2013 MDM Inc.

Something went wrong with that request. Please try again.