Add a flag to enable Persona support

It's disabled by default.  To enable, add the following to hydra.conf:

  enable_persona = 1
This commit is contained in:
Eelco Dolstra 2013-11-06 14:38:36 +01:00
parent d118a575e1
commit b44baf3746
6 changed files with 28 additions and 15 deletions

View file

@ -24,6 +24,7 @@ sub begin :Private {
$c->stash->{tracker} = $ENV{"HYDRA_TRACKER"};
$c->stash->{flashMsg} = $c->flash->{flashMsg};
$c->stash->{successMsg} = $c->flash->{successMsg};
$c->stash->{personaEnabled} = $c->config->{enable_persona} // "0" eq "1";
if (scalar(@args) == 0 || $args[0] ne "static") {
$c->stash->{nrRunningBuilds} = $c->model('DB::Builds')->search({ finished => 0, busy => 1 }, {})->count();

View file

@ -48,6 +48,8 @@ sub persona_login :Path('/persona-login') Args(0) {
my ($self, $c) = @_;
requirePost($c);
error($c, "Persona support is not enabled.") unless $c->stash->{personaEnabled};
my $assertion = $c->req->params->{assertion} or die;
my $ua = new LWP::UserAgent;

View file

@ -101,11 +101,13 @@
<script>
function doLogout() {
$.post("[% c.uri_for('/logout') %]")
.done(function(data) {
window.location.reload();
})
.fail(function() { bootbox.alert("Server request failed!"); });
[% IF c.user_exists %]
$.post("[% c.uri_for('/logout') %]")
.done(function(data) {
window.location.reload();
})
.fail(function() { bootbox.alert("Server request failed!"); });
[% END %]
}
</script>
@ -124,7 +126,8 @@
url: "[% c.uri_for('/persona-login') %]",
data: "assertion=" + assertion,
type: 'POST',
success: function(data) { window.location.reload(); }
success: function(data) { window.location.reload(); },
postError: function() { navigator.id.logout(); }
});
},
onlogout: doLogout

View file

@ -135,6 +135,7 @@ function requestJSON(args) {
bootbox.alert("Server error: " + escapeHTML(data.responseText));
else
bootbox.alert("Unknown server error!");
if (args.postError) args.postError(data);
};
return $.ajax(args);
};

View file

@ -123,15 +123,21 @@
<a href="#" id="persona-signout">Sign out</a>
</li>
[% ELSE %]
[% WRAPPER makeSubMenu title="Sign in" %]
[% IF personaEnabled %]
[% WRAPPER makeSubMenu title="Sign in" %]
<li>
<a href="#" id="persona-signin">
<img src="https://developer.mozilla.org/files/3963/persona_sign_in_blue.png" alt="Sign in with Persona" />
</a>
</li>
<li class="divider"></li>
<li>
<a href="#hydra-signin" data-toggle="modal">Sign in with a Hydra account</a>
</li>
[% END %]
[% ELSE %]
<li>
<a href="#" id="persona-signin">
<img src="https://developer.mozilla.org/files/3963/persona_sign_in_blue.png" alt="Sign in with Persona" />
</a>
</li>
<li class="divider"></li>
<li>
<a href="#hydra-signin" data-toggle="modal">Sign in with a Hydra account</a>
<a href="#hydra-signin" data-toggle="modal">Sign in</a>
</li>
[% END %]
[% END %]