From 32e5be6a0cc69177921e2a700a9cf2609976f8fe Mon Sep 17 00:00:00 2001 From: Carl Gorringe Date: Tue, 5 Jul 2022 21:55:15 -0700 Subject: [PATCH 1/7] Google Sign In UI --- webextension/css/common.css | 19 +++++++++++++++++++ webextension/css/index.css | 8 +++++++- webextension/images/g-icon40.png | Bin 0 -> 3856 bytes webextension/index.html | 11 +++++++---- 4 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 webextension/images/g-icon40.png diff --git a/webextension/css/common.css b/webextension/css/common.css index 706fee23..0fc9a2d8 100644 --- a/webextension/css/common.css +++ b/webextension/css/common.css @@ -204,6 +204,16 @@ button.selected:focus-visible { background-color: #85518E !important; } +.btn-white { + background-color: #fff; + color: #333 !important; + border: 1px solid #ccc; +} +.btn-white:hover, +.btn-white:focus-visible { + background-color: #f6f6f6; +} + .btn-light-gray { background-color: #737373; color: #eee !important; @@ -305,6 +315,15 @@ button.selected:focus-visible { color: #fff; } + .btn-white { + background-color: #bbb; + border: 1px solid #eee; + } + .btn-white:hover, + .btn-white:focus-visible { + background-color: #ccc; + } + .btn-yellow { background-color: #886600 !important; border: 1px solid #CCAA00 !important; diff --git a/webextension/css/index.css b/webextension/css/index.css index b95a6c93..af36b3f7 100644 --- a/webextension/css/index.css +++ b/webextension/css/index.css @@ -57,6 +57,11 @@ body { height: 25px; } +.g-login-icon { + width: 20px; + height: 20px; +} + .feedback-icon-svg { width: 27px; height: 27px; @@ -437,7 +442,8 @@ body { margin: 5px 2px 10px 2px; } -.login-form * { +.login-form input, +.login-form button { margin-top: 8px; } diff --git a/webextension/images/g-icon40.png b/webextension/images/g-icon40.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c801c9974ff44a7e1433c3c8eefbe99c5e1d40 GIT binary patch literal 3856 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 R+ru9VJsm^sLQVV7e*vM7$&LU3 literal 0 HcmV?d00001 diff --git a/webextension/index.html b/webextension/index.html index b3a24ce0..1756425f 100644 --- a/webextension/index.html +++ b/webextension/index.html @@ -375,11 +375,14 @@ - - - + + + + +
From cca76cf0e7bada0c20e39feceaea4994bb56008b Mon Sep 17 00:00:00 2001 From: Carl Gorringe Date: Wed, 6 Jul 2022 16:25:45 -0700 Subject: [PATCH 2/7] Implementing Google login (WIP) --- webextension/manifest.json | 1 + webextension/scripts/login.js | 38 +++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/webextension/manifest.json b/webextension/manifest.json index ef0fe336..fe8191a3 100644 --- a/webextension/manifest.json +++ b/webextension/manifest.json @@ -28,6 +28,7 @@ "activeTab", "cookies", "contextMenus", + "identity", "notifications", "storage", "webRequest", diff --git a/webextension/scripts/login.js b/webextension/scripts/login.js index 78d24d6a..e113c29d 100644 --- a/webextension/scripts/login.js +++ b/webextension/scripts/login.js @@ -14,6 +14,7 @@ $(function() { $('#signup-btn').click(signUp) $('#forgot-pw-btn').click(forgotPassword) $('#login-btn').click(doLogin) + $('#g-login-btn').click(doGoogleLogin) $('#logout-tab-btn').click(doLogout) }) @@ -94,3 +95,40 @@ function doLogout() { loginError() clearSettingsOnLogout() } + +function doGoogleLogin(e) { + + const CLIENT_ID = encodeURIComponent('41383750805-slra1gn7ge0bcc8ihpqnkk7hf0fo7dem.apps.googleusercontent.com') + const RESPONSE_TYPE = 'token' // 'id_token' ?? + // const STATE = 'abcdefg' // optional string passed to server + const SCOPE = 'openid' // ? + + // TODO: FIXME: Find out what the correct redirect_uri is in the Google Account! + + // const REDIRECT_URL = encodeURIComponent('https://archive.org/account/login') // Error 400: redirect_uri_mismatch + // const REDIRECT_URL = encodeURIComponent('https://archive.org') // Error 400: redirect_uri_mismatch + const REDIRECT_URL = encodeURIComponent('https://archive.org/services/third_party_sso.php') // Error 400: redirect_uri_mismatch + + // let nonce = encodeURIComponent(Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)); + + let url = `https://accounts.google.com/o/oauth2/v2/auth?client_id=${CLIENT_ID}&response_type=${RESPONSE_TYPE}&redirect_uri=${REDIRECT_URL}&scope=${SCOPE}&prompt=consent` + // &state=${STATE} + // &nonce=${nonce} + console.log(url) // DEBUG + + if (chrome.identity && chrome.identity.launchWebAuthFlow) { + // available in Chrome, Firefox, Edge + chrome.identity.launchWebAuthFlow({ + url: url, + interactive: true + }, (redirect_url) => { + console.log(redirect_url) // DEBUG + openByWindowSetting(redirect_url) // TEST + }) + } else { + // used in Safari + openByWindowSetting(url) + } + + +} From e5de5a8619fd5447bbdc5a9982323133dfd83e9a Mon Sep 17 00:00:00 2001 From: Carl Gorringe Date: Fri, 8 Jul 2022 14:22:09 -0700 Subject: [PATCH 3/7] temp solution to just open login page --- webextension/scripts/login.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/webextension/scripts/login.js b/webextension/scripts/login.js index e113c29d..b80858f2 100644 --- a/webextension/scripts/login.js +++ b/webextension/scripts/login.js @@ -98,6 +98,10 @@ function doLogout() { function doGoogleLogin(e) { + // temp solution until we can get the OAuth flow working + openByWindowSetting('https://archive.org/account/login', 'tab') + + /* const CLIENT_ID = encodeURIComponent('41383750805-slra1gn7ge0bcc8ihpqnkk7hf0fo7dem.apps.googleusercontent.com') const RESPONSE_TYPE = 'token' // 'id_token' ?? // const STATE = 'abcdefg' // optional string passed to server @@ -127,8 +131,7 @@ function doGoogleLogin(e) { }) } else { // used in Safari - openByWindowSetting(url) + openByWindowSetting(url, 'tab') } - - + */ } From 4824fb743fa5a32bf0de4deb5ac04bc29ae5a60f Mon Sep 17 00:00:00 2001 From: Carl Gorringe Date: Fri, 8 Jul 2022 15:26:57 -0700 Subject: [PATCH 4/7] move login button and add OR line --- webextension/css/index.css | 19 +++++++++++++++++++ webextension/index.html | 9 ++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/webextension/css/index.css b/webextension/css/index.css index af36b3f7..4dfd4ec5 100644 --- a/webextension/css/index.css +++ b/webextension/css/index.css @@ -442,11 +442,27 @@ body { margin: 5px 2px 10px 2px; } +.login-form div, .login-form input, .login-form button { margin-top: 8px; } +hr.or-line { + margin: 15px 3px 0 3px; + padding-bottom: 7px; + text-align: center; + overflow: visible; +} +hr.or-line:after { + font-size: 12px; + content: 'OR'; + padding: 0 8px; + position: relative; + top: -10px; + background-color: #eee; +} + /* flipping effect */ .flip { @@ -551,4 +567,7 @@ body { background-color: #666; } + hr.or-line:after { + background-color: #2C2C2C; + } } diff --git a/webextension/index.html b/webextension/index.html index 1756425f..3eb87aee 100644 --- a/webextension/index.html +++ b/webextension/index.html @@ -367,6 +367,12 @@

From f73a50785714a7209502e0582ac9047e10d47b5b Mon Sep 17 00:00:00 2001 From: Carl Gorringe Date: Fri, 8 Jul 2022 16:47:00 -0700 Subject: [PATCH 5/7] move login-message and Log In after Enter pressed --- webextension/index.html | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/webextension/index.html b/webextension/index.html index 3eb87aee..3088e74b 100644 --- a/webextension/index.html +++ b/webextension/index.html @@ -365,14 +365,12 @@

- -
From 4effe0dcb3c7639e26fa713a611acb2cfa3a7520 Mon Sep 17 00:00:00 2001 From: Carl Gorringe Date: Thu, 14 Jul 2022 15:37:06 -0700 Subject: [PATCH 6/7] focus email input box --- webextension/scripts/popup.js | 1 + 1 file changed, 1 insertion(+) diff --git a/webextension/scripts/popup.js b/webextension/scripts/popup.js index 676a8aa5..f974584f 100644 --- a/webextension/scripts/popup.js +++ b/webextension/scripts/popup.js @@ -461,6 +461,7 @@ function showLoginPage(e) { $('#setting-page').hide() $('#login-message').hide() $('#login-page').show() + $('#email-input').focus() } function showLoginFromTab(e) { From d485f107db9c0bb20feacb899158ccfe42578f72 Mon Sep 17 00:00:00 2001 From: Carl Gorringe Date: Wed, 10 Aug 2022 18:26:50 -0700 Subject: [PATCH 7/7] using optional permission --- webextension/manifest.json | 4 +++- webextension/scripts/login.js | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/webextension/manifest.json b/webextension/manifest.json index 9e3986bf..114d6f5d 100644 --- a/webextension/manifest.json +++ b/webextension/manifest.json @@ -28,7 +28,6 @@ "activeTab", "cookies", "contextMenus", - "identity", "notifications", "storage", "webRequest", @@ -38,6 +37,9 @@ "https://hypothes.is/*", "" ], + "optional_permissions": [ + "identity" + ], "background": { "scripts": ["scripts/utils.js", "scripts/background.js"], diff --git a/webextension/scripts/login.js b/webextension/scripts/login.js index b80858f2..31007887 100644 --- a/webextension/scripts/login.js +++ b/webextension/scripts/login.js @@ -98,8 +98,16 @@ function doLogout() { function doGoogleLogin(e) { - // temp solution until we can get the OAuth flow working - openByWindowSetting('https://archive.org/account/login', 'tab') + chrome.permissions.request({ permissions: ['identity'] }, (granted) => { + // 'identity' permission shouldn't popup a warning and should be granted automatically + if (granted) { + + // temp solution until we can get the OAuth flow working + openByWindowSetting('https://archive.org/account/login', 'tab') + + // TODO: move code that calls chrome.identity here + } + }) /* const CLIENT_ID = encodeURIComponent('41383750805-slra1gn7ge0bcc8ihpqnkk7hf0fo7dem.apps.googleusercontent.com')