From 473a59258c135e90ca6b2c2ce7166962df82a61c Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sat, 3 Aug 2019 10:08:50 -0700 Subject: [PATCH] Request permission to access captcha service. #2375 --- src/Posting/Captcha.service.coffee | 5 ++++- src/meta/eventPage.coffee | 16 ++++++++-------- src/platform/CrossOrigin.coffee | 15 ++++++++++----- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/Posting/Captcha.service.coffee b/src/Posting/Captcha.service.coffee index e4f21e0b7..c094d9980 100644 --- a/src/Posting/Captcha.service.coffee +++ b/src/Posting/Captcha.service.coffee @@ -24,6 +24,9 @@ Captcha.service = @pending = true @aborted = false e.preventDefault() + CrossOrigin.permission @requestCaptcha2.bind(@), @noCaptcha.bind(@, 'Permission denied'), ["#{Conf['captchaServiceDomain']}/*"] + + requestCaptcha2: -> key = Conf['captchaServiceKey'][Conf['captchaServiceDomain']] return @noCaptcha 'API key not set' unless key and /\S/.test(key) url = "#{Conf['captchaServiceDomain']}/in.php?key=#{encodeURIComponent key}&method=userrecaptcha&googlekey=<%= meta.recaptchaKey %>&pageurl=https://boards.4channel.org/v/" @@ -60,7 +63,7 @@ Captcha.service = noCaptcha: (error) -> @pending = false return if @aborted - error = if @req.status is 200 + error or= if @req.status is 200 @req.response else if @req.status "#{@req.statusText} (#{@req.status})" diff --git a/src/meta/eventPage.coffee b/src/meta/eventPage.coffee index 8a849b7fd..a0e0055fd 100644 --- a/src/meta/eventPage.coffee +++ b/src/meta/eventPage.coffee @@ -9,16 +9,16 @@ chrome.runtime.onMessage.addListener (request, sender, sendResponse) -> handlers = permission: (request, cb) -> - chrome.permissions.contains - origins: ['*://*/'] - , (result) -> + origins = request.origins or ['*://*/'] + chrome.permissions.contains {origins}, (result) -> if result - cb() + cb result else - chrome.permissions.request - origins: ['*://*/'] - , -> - cb() + chrome.permissions.request {origins}, (result) -> + if chrome.runtime.lastError + cb false + else + cb result ajax: (request, cb) -> xhr = new XMLHttpRequest() diff --git a/src/platform/CrossOrigin.coffee b/src/platform/CrossOrigin.coffee index f0cd2738e..2063d5f1f 100644 --- a/src/platform/CrossOrigin.coffee +++ b/src/platform/CrossOrigin.coffee @@ -168,10 +168,15 @@ CrossOrigin = $.cache url, cb, ajax: CrossOrigin.ajax + <% if (type === 'crx') { %> + permission: (cb, cbFail, origins) -> + eventPageRequest {type: 'permission', origins}, (result) -> + if result + cb() + else + cbFail() + <% } %> + <% if (type === 'userscript') { %> permission: (cb) -> - <% if (type === 'crx') { %> - eventPageRequest {type: 'permission'}, -> cb() - <% } %> - <% if (type === 'userscript') { %> cb() - <% } %> + <% } %>