NAME
Plack::Middleware::Auth::BrowserID - Plack Middleware to integrate with Mozilla Persona (Auth by email)
VERSION
version 0.0.4
SYNOPSIS
#.. on PSGI file
use Plack::Builder;
use Plack::Session;
##..
builder {
enable 'Session', store => 'File';
mount '/auth' => builder {
enable 'Auth::BrowserID', audience => 'http://localhost:8082/';
};
mount '/' => $app;
};
DESCRIPTION
Mozilla Persona is a secure solutions, to identify users based on email address.
"Simple, privacy-sensitive single sign-in: let your users sign into your website with their email address, and free yourself from password management."
Some Javascript code is needed in the client side. First include the dependencies:
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.3.1/jquery.cookie.min.js"></script>
<script src="https://login.persona.org/include.js"></script>"
Setup the watch with email and url's for login and logout (as defined in the PSGI "mount '/auth'"):
email = $.cookie('email') || null;
navigator.id.watch({
loggedInUser: email,
onlogin: function(assertion) {
return $.post('/auth/signin', {
assertion: assertion
}, function(data) {
return window.location.reload();
});
},
onlogout: function() {
return window.location = '/auth/signout';
}
});
And map the events in the DOM with the watch from Mozilla:
var signinLink = document.getElementById('signin');
if (signinLink) {
signinLink.onclick = function() { navigator.id.request(); };
}
var signoutLink = document.getElementById('signout');
if (signoutLink) {
signoutLink.onclick = function() { navigator.id.logout(); };
}
Please look for the example and read the Mozilla Persona info on MDN.
In the web application get the Plack::Session (example):
use Dancer2;
use Plack::Session;
get '/' => sub {
my $session = Plack::Session->new( shift->env );
'Hi! do you wanna dance? ' . $session->get('email');
};
See the functional example on the examples folder.
plackup -s Starman -r -p 8082 -E development -I lib example/app.psgi
SEE ALSO
Plack::Middleware::Session LWP::Protocol::https Net::BrowserID::Verify
AUTHOR
João Bolila <bolila@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by J. Bolila.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.