| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 <!-- | 
|  | 2   Copyright 2016 The LUCI Authors. All rights reserved. | 
|  | 3   Use of this source code is governed under the Apache License, Version 2.0 | 
|  | 4   that can be found in the LICENSE file. | 
|  | 5 | 
|  | 6   The `auth-signin` element displays sign-in/sign-out button, user email and | 
|  | 7   avatar. | 
|  | 8   It has a google-signin/google-signin-aware element under the hood that handles | 
|  | 9   the actual OAuth logic. | 
|  | 10 | 
|  | 11   Usage: | 
|  | 12 | 
|  | 13     <auth-signin></auth-signin> | 
|  | 14 | 
|  | 15   Properties: | 
|  | 16     authHeaders: Object, Use this in iron-ajax to set oauth2 headers. | 
|  | 17     authResponse: Object, The raw gapi.auth2.AuthResponse object. | 
|  | 18     clientId: String, The client id to authenticate | 
|  | 19     profile: Object, Read Only, The email address and imageurl of the logged in 
     user. | 
|  | 20     signedIn: Boolean, Read Only, if the user is logged in. | 
|  | 21 | 
|  | 22   Methods: | 
|  | 23     signIn(): Signs the user in by popping up the authorization dialog. | 
|  | 24     signOut(): Signs the user out. | 
|  | 25 | 
|  | 26   Events: | 
|  | 27     auth-signin: Fired when the oauth handshake has completed and a user has log
     ged in. | 
|  | 28 --> | 
|  | 29 | 
|  | 30 <link rel="import" href="../../bower_components/google-signin/google-signin-awar
     e.html"> | 
|  | 31 <link rel="import" href="../../bower_components/polymer/polymer.html"> | 
|  | 32 | 
|  | 33 | 
|  | 34 <dom-module id="auth-signin"> | 
|  | 35   <template> | 
|  | 36     <style> | 
|  | 37       #avatar { | 
|  | 38         border-radius: 5px; | 
|  | 39       } | 
|  | 40       #signinContainer { | 
|  | 41         margin-top: 14px; | 
|  | 42       } | 
|  | 43     </style> | 
|  | 44 | 
|  | 45     <google-signin-aware id="aware" | 
|  | 46       client-id="[[clientId]]" | 
|  | 47       scopes="email" | 
|  | 48       on-google-signin-aware-success="_onSignin" | 
|  | 49       on-google-signin-aware-signed-out="_onSignout"> | 
|  | 50     </google-signin-aware> | 
|  | 51 | 
|  | 52     <template is="dom-if" if="[[!signedIn]]"> | 
|  | 53       <div id="signinContainer"> | 
|  | 54         <a on-tap="signIn" href="#">Sign in</a> | 
|  | 55       </div> | 
|  | 56     </template> | 
|  | 57 | 
|  | 58     <template is="dom-if" if="[[signedIn]]"> | 
|  | 59       <img id="avatar" src="[[profile.imageUrl]]" width="30" height="30"> | 
|  | 60       <span>[[profile.email]]</span> | 
|  | 61       <span>|</span> | 
|  | 62       <a on-tap="signOut" href="#">Sign out</a> | 
|  | 63     </template> | 
|  | 64   </template> | 
|  | 65   <script> | 
|  | 66     'use strict'; | 
|  | 67     Polymer({ | 
|  | 68       is: 'auth-signin', | 
|  | 69       properties: { | 
|  | 70         authHeaders: { | 
|  | 71           type: Object, | 
|  | 72           computed: "_makeHeader(authResponse)", | 
|  | 73           notify: true, | 
|  | 74         }, | 
|  | 75         authResponse: { | 
|  | 76           type: Object, | 
|  | 77           notify: true, | 
|  | 78         }, | 
|  | 79         clientId: { | 
|  | 80           type: String, | 
|  | 81         }, | 
|  | 82         profile: { | 
|  | 83           type: Object, | 
|  | 84           readOnly: true | 
|  | 85         }, | 
|  | 86         signedIn: { | 
|  | 87           type: Boolean, | 
|  | 88           readOnly: true, | 
|  | 89           value: false | 
|  | 90         } | 
|  | 91       }, | 
|  | 92 | 
|  | 93       _onSignin: function(e) { | 
|  | 94         this._setSignedIn(true); | 
|  | 95         var user = gapi.auth2.getAuthInstance().currentUser.get(); | 
|  | 96         var profile = user.getBasicProfile(); | 
|  | 97         this._setProfile({ | 
|  | 98           email: profile.getEmail(), | 
|  | 99           imageUrl: profile.getImageUrl() | 
|  | 100         }); | 
|  | 101         this.set("authResponse", user.getAuthResponse()); | 
|  | 102         this.fire("auth-signin"); | 
|  | 103       }, | 
|  | 104 | 
|  | 105       _onSignout: function(e) { | 
|  | 106         this._setSignedIn(false); | 
|  | 107         this._setProfile(null); | 
|  | 108       }, | 
|  | 109 | 
|  | 110       _makeHeader: function(authResponse) { | 
|  | 111         if (!authResponse) { | 
|  | 112           return {}; | 
|  | 113         } | 
|  | 114         return { | 
|  | 115           "authorization": authResponse.token_type + " " + authResponse.access_t
     oken | 
|  | 116         }; | 
|  | 117       }, | 
|  | 118 | 
|  | 119       signIn: function() { | 
|  | 120         this.$.aware.signIn(); | 
|  | 121       }, | 
|  | 122 | 
|  | 123       signOut: function() { | 
|  | 124         this.$.aware.signOut(); | 
|  | 125       } | 
|  | 126     }); | 
|  | 127   </script> | 
|  | 128 </dom-module> | 
| OLD | NEW | 
|---|