source: extensions/oAuth/template/identification_common.tpl @ 26605

Revision 26605, 4.5 KB checked in by mistic100, 6 years ago (diff)

add Persona authentification

Line 
1{combine_css path=$OAUTH_PATH|cat:'template/oauth_sprites.css'}
2
3{combine_script id='jquery.colorbox' load='footer' require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'}
4{combine_css id='colorbox' path="themes/default/js/plugins/colorbox/style2/colorbox.css"}
5
6{if $OAUTH.providers.Persona.enabled}
7  {combine_script id='persona' path='https://login.persona.org/include.js' load='footer'}
8{/if}
9
10{html_style}
11#openid_form { padding:20px; }
12#openid_form h3, #openid_form .oauth_38px { display:inline-block; vertical-align:middle; margin:0; }
13#openid_label.error { color:red; font-weight:bold; }
14{/html_style}
15
16{footer_script}
17// redirect, called from the popup
18function oauth_redirect(type) {
19  var url = '{$OAUTH.u_redirect}';
20  if (type && type != 'default') {
21    url = '{$ABS_ROOT_URL}'+ type +'.php';
22  }
23
24  window.location.href = url;
25}
26
27// open authentication popup
28function open_auth(url) {
29  window.open(
30    url + '&t=' + (new Date()).getTime(),
31    'hybridauth_social_sign_on',
32    'location=0,status=0,scrollbars=0,width=800,height=500'
33  ); 
34}
35
36// click on a button
37jQuery('a.oauth:not(.persona)').click(function(e) {
38  e.preventDefault();
39 
40  var idp = jQuery(this).data('idp');
41 
42  switch(idp) {
43    case 'OpenID': case 'Wordpress': case 'Flickr': case 'Steam':
44      switch(idp) {
45        case 'OpenID':
46          jQuery('#openid_label').html('{'Please enter your OpenID URL'|translate|escape:javascript}'); break;
47        case 'Wordpress': case 'Flickr': case 'Steam':
48          jQuery('#openid_label').html('{'Please enter your username'|translate|escape:javascript}'); break;
49      }
50     
51      var bg_color = $('#the_page #content').css('background-color');
52      if (!bg_color || bg_color=='transparent') {
53        bg_color = $('body').css('background-color');
54      }
55      jQuery('#openid_form').css('background-color', bg_color);
56
57      jQuery('#openid_form .oauth_38px').removeClass().addClass('oauth_38px ' + idp.toLowerCase());
58      jQuery('#openid_form h3').html(idp);
59      jQuery('#openid_form').data('idp', idp);
60
61      jQuery.colorbox({
62        inline: true,
63        href: '#openid_form',
64        initialWidth: 0,
65        initialHeight: 0,
66        mawWidth: '100%',
67        onComplete: function(){ jQuery.colorbox.resize({ speed:0 }) } // prevent misalignement when icon not loaded
68      });
69      break;
70     
71    default:
72      open_auth('{$OAUTH.u_login}'+ idp);
73  }
74});
75
76jQuery('#openid_form').submit(function(e) {
77  e.preventDefault();
78 
79  var idp = jQuery(this).data('idp');
80  var oi = jQuery('#openid_form input[name=openid_identifier]').val();
81  jQuery('#openid_form input[name=openid_identifier]').val('');
82 
83  jQuery('#openid_label').removeClass('error');
84  if (!oi) {
85    jQuery('#openid_label').addClass('error');
86    return;
87  }
88 
89  switch(idp) {
90    case 'Wordpress': oi = 'http://' + oi + '.wordpress.com'; break;
91    case 'Flickr': oi = 'http://www.flickr.com/photos/' + oi + '/'; break;
92    case 'Steam': oi = 'http://steamcommunity.com/openid/' + oi; break;
93  }
94
95  open_auth('{$OAUTH.u_login}OpenID&openid_identifier=' + encodeURI(oi));
96
97  jQuery.colorbox.close();
98});
99
100jQuery('#openid_cancel').click(function(e) {
101  e.preventDefault();
102 
103  jQuery('#openid_label').removeClass('error');
104  jQuery.colorbox.close();
105});
106
107{if $OAUTH.providers.Persona.enabled}
108jQuery('a.oauth.persona').click(function(e) {
109  e.preventDefault();
110  navigator.id.request();
111});
112
113jQuery('a[href$="act=logout"]').click(function(e) {
114  e.preventDefault();
115  navigator.id.logout();
116});
117
118navigator.id.watch({
119  loggedInUser: {if not empty($OAUTH.persona_email)}'{$OAUTH.persona_email}'{else}null{/if},
120 
121  onlogin: function(assertion) {
122    jQuery.ajax({
123      type: 'POST',
124      url: '{$OAUTH.u_login}Persona',
125      dataType: 'json',
126      data: { assertion: assertion },
127      success: function(data) {
128        oauth_redirect(data.redirect_to);
129      },
130      error: function() {
131        alert('Unknown error');
132      }
133    });
134  },
135 
136  onlogout: function() {
137    window.location.href = '{$U_LOGOUT}';
138  }
139});
140{/if}
141{/footer_script}
142
143<div style="display:none;">
144  <form id="openid_form" action="">
145    <div>
146      <span class="oauth_38px"></span>
147      <h3>OpendID</h3>
148    </div>
149    <div>
150      <br>
151      <label id="openid_label" for="openid_identifier"></label>
152      <br>
153      <input type="text" name="openid_identifier" id="openid_identifier" size="50">
154    </div>
155    <div>
156      <br>
157      <input type="submit" name="{'Submit'|translate}">
158      <a href="#" id="openid_cancel">{'Cancel'|translate}</a>
159    </div>
160  </form>
161</div>
Note: See TracBrowser for help on using the repository browser.