summaryrefslogtreecommitdiffstats
path: root/extensions/Persona/template/en/default/hook/global/header-additional_header.html.tmpl
blob: f440247b3cdc80b3c028a36fc81dc0030b82d02b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  #
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
  #%]

[% RETURN IF user.login
             || !Param('persona_includejs_url')
             || !Param('user_info_class').split(',').contains('Persona') %]

[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]

[% login_target = cgi.url("-relative" => 1, "-query" => 1) %]
[% IF !login_target OR login_target.match("^token.cgi") %]
  [% login_target = "index.cgi" %]
[% END %]

[% login_target = urlbase _ login_target %]

<script src="[% Param('persona_includejs_url') %]" type="text/javascript"></script>

<script type="text/javascript">
function createHidden(name, value, form) {
  var field = document.createElement('input');
  field.type = 'hidden';
  field.name = name;
  field.value = value;;
  form.appendChild(field);
}

function persona_sign_in() {
  navigator.id.watch({
    loggedInUser: null,
    onlogin: function(assertion) {
      var form = document.createElement('form');
      form.action = '[% login_target FILTER js %]';
      form.method = 'POST';
      form.style.display = 'none';

      createHidden('token', '[% issue_hash_token(['login']) FILTER js %]', form);
      createHidden('Bugzilla_remember', 'on', form);
      createHidden('persona_assertion', assertion, form);

      [% FOREACH field = cgi.param() %]
        [% NEXT IF field.search("^(Bugzilla_(login|password|restrictlogin)|token|persona_assertion)$") %]
        [% FOREACH mvalue = cgi.param(field).slice(0) %]
          createHidden('[% field FILTER js %]', '[% mvalue FILTER html_linebreak FILTER js %]', form);
        [% END %]
      [% END %]

      document.body.appendChild(form);
      form.submit();
      return true;
    },
    onlogout: function () {
      document.location = '[% urlbase FILTER none %]index.cgi?logout=1';
      return true;
    }
  });
  navigator.id.request({ siteName: '[% terms.BugzillaTitle FILTER js %]' });
}
</script>