11import Ember from 'ember' ;
22
33/**
4- * @overview OAuth2 addon for Emberjs that stores tokens in the browsers localStorage
5- * @license Licensed under MIT license
6- * See https://raw.github.com/amkirwan/ember-oauth2/master/LICENSE
7- * @version 2.0.3 -beta
8- *
9- * @module ember-oauth2
10- * @class ember-oauth2
11- */
4+ * @overview OAuth2 addon for Emberjs that stores tokens in the browsers localStorage
5+ * @license Licensed under MIT license
6+ * See https://raw.github.com/amkirwan/ember-oauth2/master/LICENSE
7+ * @version 2.0.4 -beta
8+ *
9+ * @module ember-oauth2
10+ * @class ember-oauth2
11+ */
1212export default Ember . Service . extend ( Ember . Evented , {
13- VERSION : '2.0.3 -beta' ,
13+ VERSION : '2.0.4 -beta' ,
1414 /**
1515 * initialize with the providerId to find in
1616 * EmberENV['ember-oauth2'] config
@@ -38,7 +38,9 @@ export default Ember.Service.extend(Ember.Evented, {
3838 this . set ( 'providerId' , providerId ) ;
3939 // if the provider id doesn't exist in the config throw an error
4040 if ( ! this . get ( 'config' ) [ this . get ( 'providerId' ) ] ) {
41- throw new Error ( `Cannot find the providerId: ${ this . get ( 'providerId' ) } in the config.` ) ;
41+ throw new Error (
42+ `Cannot find the providerId: ${ this . get ( 'providerId' ) } in the config.`
43+ ) ;
4244 } else {
4345 this . set ( 'providerConfig' , this . get ( 'config' ) [ this . get ( 'providerId' ) ] ) ;
4446 this . setProperties ( this . providerConfig ) ;
@@ -53,10 +55,18 @@ export default Ember.Service.extend(Ember.Evented, {
5355 * @return {Promise }
5456 */
5557 authorize ( ) {
56- if ( ! this . get ( 'providerId' ) ) { throw new Error ( 'No provider id given.' ) ; }
57- if ( ! this . get ( 'clientId' ) ) { throw new Error ( 'No client id given.' ) ; }
58- if ( ! this . get ( 'authBaseUri' ) ) { throw new Error ( 'No auth base uri given.' ) ; }
59- if ( ! this . get ( 'redirectUri' ) ) { throw new Error ( 'No redirect uri given.' ) ; }
58+ if ( ! this . get ( 'providerId' ) ) {
59+ throw new Error ( 'No provider id given.' ) ;
60+ }
61+ if ( ! this . get ( 'clientId' ) ) {
62+ throw new Error ( 'No client id given.' ) ;
63+ }
64+ if ( ! this . get ( 'authBaseUri' ) ) {
65+ throw new Error ( 'No auth base uri given.' ) ;
66+ }
67+ if ( ! this . get ( 'redirectUri' ) ) {
68+ throw new Error ( 'No redirect uri given.' ) ;
69+ }
6070 this . clearStates ( ) ;
6171 this . saveState ( this . requestObj ( ) ) ;
6272 return this . openWindow ( this . authUri ( ) ) ;
@@ -72,10 +82,15 @@ export default Ember.Service.extend(Ember.Evented, {
7282 */
7383 openWindow ( url ) {
7484 let dialog = window . open ( url , 'Authorize' , 'height=600, width=450' ) ;
75- if ( window . focus && dialog ) { dialog . focus ( ) ; }
85+ if ( window . focus && dialog ) {
86+ dialog . focus ( ) ;
87+ }
7688 return new Ember . RSVP . Promise ( function ( resolve , reject ) {
77- if ( dialog ) { resolve ( dialog ) ; }
78- else { reject ( new Error ( 'Opening dialog login window failed.' ) ) ; }
89+ if ( dialog ) {
90+ resolve ( dialog ) ;
91+ } else {
92+ reject ( new Error ( 'Opening dialog login window failed.' ) ) ;
93+ }
7994 } ) ;
8095 } ,
8196
@@ -96,22 +111,25 @@ export default Ember.Service.extend(Ember.Evented, {
96111 if ( self . get ( 'responseType' ) === 'token' ) {
97112 self . saveToken ( self . generateToken ( params ) ) ;
98113 // verify the token on the client end
99- self . verifyToken ( ) . then ( function ( result ) {
100- /*jshint unused:false*/
101- self . trigger ( 'success' ) ;
102- } , function ( error ) {
103- /*jshint unused:false*/
104- self . removeToken ( ) ;
105- self . trigger ( 'error' , 'Error: verifying token' , params ) ;
106- } ) ;
114+ self . verifyToken ( ) . then (
115+ function ( result ) {
116+ /*jshint unused:false*/
117+ self . trigger ( 'success' ) ;
118+ } ,
119+ function ( error ) {
120+ /*jshint unused:false*/
121+ self . removeToken ( ) ;
122+ self . trigger ( 'error' , 'Error: verifying token' , params ) ;
123+ }
124+ ) ;
107125 } else {
108126 self . trigger ( 'success' , params . code ) ;
109127 }
110128 } else {
111129 self . trigger ( 'error' , 'Error: authorization' , params ) ;
112130 }
113131
114- if ( callback && typeof ( callback ) === 'function' ) {
132+ if ( callback && typeof callback === 'function' ) {
115133 callback ( ) ;
116134 }
117135 } ) ,
@@ -122,8 +140,10 @@ export default Ember.Service.extend(Ember.Evented, {
122140 @return {Boolean } True if success false otherwise
123141 */
124142 authSuccess : function ( params ) {
125- return ( this . get ( 'responseType' ) === 'token' && params . access_token ) ||
126- ( this . get ( 'responseType' ) === 'code' && params . code ) ;
143+ return (
144+ ( this . get ( 'responseType' ) === 'token' && params . access_token ) ||
145+ ( this . get ( 'responseType' ) === 'code' && params . code )
146+ ) ;
127147 } ,
128148
129149 /**
@@ -189,13 +209,17 @@ export default Ember.Service.extend(Ember.Evented, {
189209 * @return {Boolean } Will return true if the states false if they do not match
190210 */
191211 checkState : function ( state ) {
192- if ( ! state ) { return false ; }
212+ if ( ! state ) {
213+ return false ;
214+ }
193215 // check the state returned with state saved in localstorage
194216 if ( state === this . readState ( ) . state ) {
195217 this . removeState ( this . stateKeyName ( ) ) ;
196218 return true ;
197219 } else {
198- Ember . Logger . warn ( "State returned from the server did not match the local saved state." ) ;
220+ Ember . Logger . warn (
221+ 'State returned from the server did not match the local saved state.'
222+ ) ;
199223 return false ;
200224 }
201225 } ,
@@ -230,12 +254,18 @@ export default Ember.Service.extend(Ember.Evented, {
230254 */
231255 authUri : function ( ) {
232256 var uri = this . get ( 'authBaseUri' ) ;
233- uri += '?response_type=' + encodeURIComponent ( this . get ( 'responseType' ) ) +
234- '&redirect_uri=' + encodeURIComponent ( this . get ( 'redirectUri' ) ) +
235- '&client_id=' + encodeURIComponent ( this . get ( 'clientId' ) ) +
236- '&state=' + encodeURIComponent ( this . get ( 'state' ) ) ;
257+ uri +=
258+ '?response_type=' +
259+ encodeURIComponent ( this . get ( 'responseType' ) ) +
260+ '&redirect_uri=' +
261+ encodeURIComponent ( this . get ( 'redirectUri' ) ) +
262+ '&client_id=' +
263+ encodeURIComponent ( this . get ( 'clientId' ) ) +
264+ '&state=' +
265+ encodeURIComponent ( this . get ( 'state' ) ) ;
237266 if ( this . get ( 'scope' ) ) {
238- uri += '&scope=' + encodeURIComponent ( this . get ( 'scope' ) ) . replace ( '%20' , '+' ) ;
267+ uri +=
268+ '&scope=' + encodeURIComponent ( this . get ( 'scope' ) ) . replace ( '%20' , '+' ) ;
239269 }
240270 return uri ;
241271 } ,
@@ -252,7 +282,9 @@ export default Ember.Service.extend(Ember.Evented, {
252282 request . providerId = this . get ( 'providerId' ) ;
253283 request . clientId = this . get ( 'clientId' ) ;
254284 request . state = this . generateState ( ) ;
255- if ( this . get ( 'scope' ) ) { request . scope = this . get ( 'scope' ) ; }
285+ if ( this . get ( 'scope' ) ) {
286+ request . scope = this . get ( 'scope' ) ;
287+ }
256288 return request ;
257289 } ,
258290
@@ -261,27 +293,30 @@ export default Ember.Service.extend(Ember.Evented, {
261293 * @param {Object } requestObj Properties of the request state to save in localStorage
262294 */
263295 saveState : function ( requestObj ) {
264- window . localStorage . setItem ( this . stateKeyName ( ) , JSON . stringify ( requestObj ) ) ;
296+ window . localStorage . setItem (
297+ this . stateKeyName ( ) ,
298+ JSON . stringify ( requestObj )
299+ ) ;
265300 } ,
266301
267302 /**
268- * Remove any states from localStorage if they exist
269- * @method clearStates
270- * @return {Array } Keys used to remove states from localStorage
271- */
303+ * Remove any states from localStorage if they exist
304+ * @method clearStates
305+ * @return {Array } Keys used to remove states from localStorage
306+ */
272307 clearStates : function ( ) {
273- let regex = new RegExp ( '^' + this . get ( 'statePrefix' ) + '-.*' , 'g' ) ;
308+ let regex = new RegExp ( '^' + this . get ( 'statePrefix' ) + '-.*' , 'g' ) ;
274309
275310 let name ;
276311 let toRemove = [ ] ;
277- for ( let i = 0 , l = window . localStorage . length ; i < l ; i ++ ) {
312+ for ( let i = 0 , l = window . localStorage . length ; i < l ; i ++ ) {
278313 name = window . localStorage . key ( i ) ;
279314 if ( name . match ( regex ) ) {
280315 toRemove . push ( name ) ;
281316 }
282317 }
283318
284- for ( let j = 0 , len = toRemove . length ; j < len ; j ++ ) {
319+ for ( let j = 0 , len = toRemove . length ; j < len ; j ++ ) {
285320 name = toRemove [ j ] ;
286321 this . removeState ( name ) ;
287322 }
@@ -311,7 +346,9 @@ export default Ember.Service.extend(Ember.Evented, {
311346 */
312347 readState : function ( ) {
313348 var stateObj = JSON . parse ( window . localStorage . getItem ( this . stateKeyName ( ) ) ) ;
314- if ( ! stateObj ) { return false ; }
349+ if ( ! stateObj ) {
350+ return false ;
351+ }
315352
316353 return stateObj ;
317354 } ,
@@ -322,8 +359,9 @@ export default Ember.Service.extend(Ember.Evented, {
322359 */
323360 uuid ( ) {
324361 return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' . replace ( / [ x y ] / g, function ( c ) {
325- var r = Math . random ( ) * 16 | 0 , v = c === 'x' ? r : ( r & 0x3 | 0x8 ) ;
326- return v . toString ( 16 ) ;
362+ var r = ( Math . random ( ) * 16 ) | 0 ,
363+ v = c === 'x' ? r : ( r & 0x3 ) | 0x8 ;
364+ return v . toString ( 16 ) ;
327365 } ) ;
328366 } ,
329367
@@ -332,7 +370,7 @@ export default Ember.Service.extend(Ember.Evented, {
332370 * @return {Number } The current time in seconds rounded
333371 */
334372 now ( ) {
335- return Math . round ( new Date ( ) . getTime ( ) / 1000.0 ) ;
373+ return Math . round ( new Date ( ) . getTime ( ) / 1000.0 ) ;
336374 } ,
337375
338376 /**
@@ -342,7 +380,9 @@ export default Ember.Service.extend(Ember.Evented, {
342380 * @return {String } The state key name used for localstorage
343381 */
344382 stateKeyName ( ) {
345- if ( ! this . get ( 'state' ) ) { this . generateState ( ) ; }
383+ if ( ! this . get ( 'state' ) ) {
384+ this . generateState ( ) ;
385+ }
346386 return this . get ( 'statePrefix' ) + '-' + this . get ( 'state' ) ;
347387 } ,
348388
@@ -351,7 +391,9 @@ export default Ember.Service.extend(Ember.Evented, {
351391 * @return {String } The state
352392 */
353393 generateState ( clear = false ) {
354- if ( ! this . get ( 'state' ) || clear === true ) { this . set ( 'state' , this . uuid ( ) ) ; }
394+ if ( ! this . get ( 'state' ) || clear === true ) {
395+ this . set ( 'state' , this . uuid ( ) ) ;
396+ }
355397 return this . get ( 'state' ) ;
356398 } ,
357399
@@ -361,8 +403,12 @@ export default Ember.Service.extend(Ember.Evented, {
361403 */
362404 getToken : function ( ) {
363405 var token = JSON . parse ( window . localStorage . getItem ( this . tokenKeyName ( ) ) ) ;
364- if ( ! token ) { return null ; }
365- if ( ! token . access_token ) { return null ; }
406+ if ( ! token ) {
407+ return null ;
408+ }
409+ if ( ! token . access_token ) {
410+ return null ;
411+ }
366412 return token ;
367413 } ,
368414
@@ -372,7 +418,9 @@ export default Ember.Service.extend(Ember.Evented, {
372418 */
373419 getAccessToken : function ( ) {
374420 var token = this . getToken ( ) ;
375- if ( ! token ) { return null ; }
421+ if ( ! token ) {
422+ return null ;
423+ }
376424 return token . access_token ;
377425 } ,
378426
@@ -390,7 +438,7 @@ export default Ember.Service.extend(Ember.Evented, {
390438 * @method expiresIn
391439 * @param {String } expires lifetime left of token in seconds
392440 * @return {Number } When the token expires in seconds.
393- */
441+ */
394442 expiresIn : function ( expires ) {
395443 return this . now ( ) + parseInt ( expires , 10 ) ;
396444 } ,
@@ -401,7 +449,9 @@ export default Ember.Service.extend(Ember.Evented, {
401449 */
402450 accessTokenIsExpired : function ( ) {
403451 let token = this . getToken ( ) ;
404- if ( ! token ) { return true ; }
452+ if ( ! token ) {
453+ return true ;
454+ }
405455 if ( this . now ( ) >= token . expires_in ) {
406456 return true ;
407457 } else {
@@ -415,8 +465,10 @@ export default Ember.Service.extend(Ember.Evented, {
415465 */
416466 expireAccessToken : function ( ) {
417467 var token = this . getToken ( ) ;
418- if ( ! token ) { return null ; }
468+ if ( ! token ) {
469+ return null ;
470+ }
419471 token . expires_in = 0 ;
420472 this . saveToken ( token ) ;
421- }
473+ } ,
422474} ) ;
0 commit comments