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->{tracker} = $ENV{"HYDRA_TRACKER"};
$c->stash->{flashMsg} = $c->flash->{flashMsg}; $c->stash->{flashMsg} = $c->flash->{flashMsg};
$c->stash->{successMsg} = $c->flash->{successMsg}; $c->stash->{successMsg} = $c->flash->{successMsg};
$c->stash->{personaEnabled} = $c->config->{enable_persona} // "0" eq "1";
if (scalar(@args) == 0 || $args[0] ne "static") { if (scalar(@args) == 0 || $args[0] ne "static") {
$c->stash->{nrRunningBuilds} = $c->model('DB::Builds')->search({ finished => 0, busy => 1 }, {})->count(); $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) = @_; my ($self, $c) = @_;
requirePost($c); requirePost($c);
error($c, "Persona support is not enabled.") unless $c->stash->{personaEnabled};
my $assertion = $c->req->params->{assertion} or die; my $assertion = $c->req->params->{assertion} or die;
my $ua = new LWP::UserAgent; my $ua = new LWP::UserAgent;

View file

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

View file

@ -107,4 +107,4 @@ td.nowrap {
.star:hover { .star:hover {
cursor: pointer; cursor: pointer;
} }

View file

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

View file

@ -123,15 +123,21 @@
<a href="#" id="persona-signout">Sign out</a> <a href="#" id="persona-signout">Sign out</a>
</li> </li>
[% ELSE %] [% 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> <li>
<a href="#" id="persona-signin"> <a href="#hydra-signin" data-toggle="modal">Sign in</a>
<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> </li>
[% END %] [% END %]
[% END %] [% END %]