From 8ac1cc58378efd0662ea868cfd3ce672bac61ed8 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Mon, 8 Dec 2014 03:53:46 -0500 Subject: [PATCH] refactor(github) auth --- html/auth.html | 11 +++-------- html/auth/github.html | 25 +++++++++++-------------- lib/client/dom.js | 2 ++ lib/client/storage/_github.js | 27 ++++++++++++++++++++------- 4 files changed, 36 insertions(+), 29 deletions(-) diff --git a/html/auth.html b/html/auth.html index 64cd7f32..b1920ec3 100644 --- a/html/auth.html +++ b/html/auth.html @@ -6,14 +6,9 @@ (function(){ 'use strict'; - var GitHub, - opener = window.opener; - - if (opener) { - GitHub = opener.CloudCmd.GitHub; - GitHub.autorize(GitHub.callback, window.location.search); - window.close(); - } + window.addEventListener('message', function(event) { + event.source.postMessage(window.location.search, event.origin); + }); })(); diff --git a/html/auth/github.html b/html/auth/github.html index cd3b0ee5..1e9e573c 100644 --- a/html/auth/github.html +++ b/html/auth/github.html @@ -2,24 +2,21 @@ + diff --git a/lib/client/dom.js b/lib/client/dom.js index 2bc1d7bd..f1e1287c 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -1449,6 +1449,8 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog; if (!wnd) Dialog.alert('Please disable your popup blocker and try again.'); + + return wnd; }; /** diff --git a/lib/client/storage/_github.js b/lib/client/storage/_github.js index b3fd9678..9a63cb12 100644 --- a/lib/client/storage/_github.js +++ b/lib/client/storage/_github.js @@ -7,8 +7,11 @@ var CloudCmd, Util, join, DOM, CloudFunc, Github, cb; function GitHubProto(callback) { var GitHub = this, - Storage = DOM.Storage, + Popup, + + Storage = DOM.Storage, + Events = DOM.Events, GH, User; @@ -22,6 +25,13 @@ var CloudCmd, Util, join, DOM, CloudFunc, Github, cb; Util.exec.ret(callback) ]); + Events.add('message', function(event) { + if (event.origin === document.location.origin) { + Popup.close(); + GitHub.autorize(event.data); + } + }); + GitHub.callback = function() { Util.exec.series([ GitHub.getUserData, @@ -31,8 +41,8 @@ var CloudCmd, Util, join, DOM, CloudFunc, Github, cb; } function load(callback) { - var dir = CloudCmd.LIBDIRCLIENT + 'storage/github/', - url = join([ + var dir = CloudCmd.LIBDIRCLIENT + 'storage/github/', + url = CloudCmd.join([ dir + 'lib/underscore.js', dir + 'lib/base64.js', dir + 'github.js' @@ -51,7 +61,7 @@ var CloudCmd, Util, join, DOM, CloudFunc, Github, cb; GitHub.autorize = function(callback, code) { Storage.get('token', function(error, token) { - var isContain, + var isContain, popup, apiURL = CloudFunc.apiURL, URL = '//' + window.location.host + '/auth/github'; @@ -64,9 +74,11 @@ var CloudCmd, Util, join, DOM, CloudFunc, Github, cb; isContain = ~code.indexOf('?code='); - if (!isContain) - DOM.openWindow(URL); - else + if (!isContain) { + Popup = DOM.openWindow(URL); + if (Popup) + Popup.postMessage('', window.location.origin); + } else { DOM.load.ajax({ type : 'put', url : apiURL + '/auth', @@ -82,6 +94,7 @@ var CloudCmd, Util, join, DOM, CloudFunc, Github, cb; Util.log('Worning: token not getted...'); } }); + } } }); };