f330ff95eb1aa051cd37a812bfb3e10901d18e8f
[scpubgit/stemmaweb.git] / root / src / auth / login.tt
1 [% WRAPPER header.tt
2         pagetitle = "Stemmaweb - Sign in"
3         applicationstyle = c.uri_for('/css/auth.css')
4 %]
5
6 <meta name="google-signin-clientid" content="[% google_client_id %]" />
7 <meta name="google-signin-scope" content="https://www.googleapis.com/auth/plus.profile.emails.read" />
8 <meta name="google-signin-requestvisibleactions" content="http://schema.org/AddAction" />
9 <meta name="google-signin-cookiepolicy" content="single_host_origin" />
10 <meta name="google-signin-openidrealm" content="[% c.uri_for('/') %]" />
11 <script src="https://apis.google.com/js/client:platform.js?onload=render" async defer>
12 </script>
13 <script>
14  /* Executed when the APIs finish loading */
15  function render() {
16
17     document.getElementById('signinButton').disabled = false;
18    var additionalParams = {
19      'callback': googleSignIn
20    };
21
22    // Attach a click listener to a button to trigger the flow.
23    var signinButton = document.getElementById('signinButton');
24    signinButton.addEventListener('click', function() {
25      gapi.auth.signIn(additionalParams); // Will use page level configuration
26    });
27
28     $('#login_actions').accordion();
29     $('.login_button').button();
30     $('#submit').button();
31     
32     var status = '[% status_msg %]';
33     if( status == 'Logged in!' ) {
34         setInterval( function ( e ) {
35                 window.opener.location.reload(true);
36                 window.close();
37                 e.preventDefault();
38         }, 2000 );
39     }
40  }
41 </script>
42     <script type="text/javascript">
43
44         function googleSignIn(authResult) {
45                 if (authResult['status']['signed_in']) {
46                         document.getElementById('signinButton').disabled = true;
47                         gapi.client.load('plus', 'v1', function apiClientLoaded() {
48                                 gapi.client.plus.people.get({ userId: 'me'}).execute(function infoRetrieved(resp) {
49                                         var primaryEmail;
50                                         for (var i = 0; i < resp.emails.length; i++) {
51                                                 if (resp.emails[i].type === 'account') {
52                                                         primaryEmail = resp.emails[i].value;
53                                                 }
54                                         }
55
56                                         dataRetrieved(authResult, primaryEmail);
57                                 });
58                         });
59                 } else {
60                         console.log("Error", authResult);
61                 }
62         }
63
64         function dataRetrieved(login, email) {
65                 console.log(email);
66                 console.log(login.id_token);
67
68                 document.getElementById('email').value = email;
69                 document.getElementById('id_token').value = login.id_token;
70                 document.getElementById('google_form').submit();
71         }
72
73     </script>
74 [% END %]
75         <div id="topbanner">
76                 <h1>Stemmaweb - Sign in</h1>
77         </div>
78
79 <div id="login_status">
80 [% IF status_msg %]
81                         <p>[% status_msg | html %]</p>
82 [% END %]
83 [% IF error_msg %]
84                         <p class="error">[% error_msg | html %]</p>
85 [% END %]
86
87 [% IF form.has_errors %]
88                         <p class="error">Some fields had errors:</p>
89                                         
90                         <ul class="errors">
91         [% FOREACH msg IN form.errors %]
92                                 <li>[% msg | html %]</li>
93         [% END %]
94                         </ul>
95 [% END %]
96 </div>
97 [% UNLESS status_msg == 'Logged in!' %]
98 <div id="login_actions">
99         <h3><a href="#">Sign in with Google</a></h3>
100         <div>
101                 <p>If you have a Google account, you may use it to sign into Stemmaweb.</p>
102
103         <button disabled id="signinButton">Sign in with Google</button>
104                 <form id="google_form" action="[% c.uri_for_action('/users/login') | html %]" method="post">
105                         <input id='email' name='email' value='' type='hidden' />
106                         <input id='id_token' name='id_token' value='' type='hidden' />
107                 </form>
108         </div>
109
110         <h3><a href="#">Sign in with OpenID</a></h3>
111         <div>
112                 <p>If you have an account with an <a href="http://openid.net/get-an-openid/" target="_blank">OpenID provider</a> (e.g. WordPress, Blogger, Flickr, Yahoo), you may use it to sign into Stemmaweb.
113                 <form class="openid_form" method="post" action="[% c.uri_for_action('/users/login') | html %]" autocomplete="off">
114                         <input type="hidden" name="realm" value="openid"/>
115                         <input type="text" name="openid_identifier" id="openid_input"/>
116                         <input type="submit" class="login_button" id="login_openid" value="Sign in with OpenID"/>
117                 </form>
118         </div>
119
120 [% UNLESS c.req.param('realm') == 'openid' %]
121         <h3><a href="#">Sign in with Stemmaweb</a></h3>
122         <div>
123                 <p>If you do not have Google or another OpenID account, you may <a href="[% c.uri_for_action('/users/register') | html %]">register</a> for a user account here with its own password.  Once you are registered, you can use this form to sign in.</p>
124                 <form id="login_local_form" method="post" action="[% c.uri_for_action('/users/login') | html %]" autocomplete="off">
125                         <input type="hidden" name="realm" value="default"/>
126                         [% userlabel = form.field('username').label('Email address') %]
127                         [% form.field('username').render %]
128                         [% form.field('password').render %]
129                         
130                         [% rememberlabel = form.field('remember').label('Remember me') %]
131                         [% form.field('remember').render %]
132                         
133                         [% submitbutton = form.field('submit').value('Sign in with Stemmaweb') %]
134                         [% form.field('submit').render %]
135                 </form>
136         </div>
137 [% END %]
138 </div>
139 [% END %]
140 [% PROCESS footer.tt %]