diff --git a/res/static/script/Toolbar.js b/res/static/script/Toolbar.js
index 92a236f..857438a 100644
--- a/res/static/script/Toolbar.js
+++ b/res/static/script/Toolbar.js
@@ -49,19 +49,30 @@ var Toolbar = {
triggerDL();
}
}).fail(function(data){
- console.log(data);
if(data.responseJSON.success === false) {
var popupDiv = document.getElementById("captcha_popup");
+ var popupTitle = document.getElementById("captcha_popup_title");
+ var popupContent = document.getElementById("captcha_popup_content");
+ var popupCaptcha = document.getElementById("captcha_popup_captcha");
if(data.responseJSON.value === "file_rate_limited_captcha_required") {
- popupDiv.innerHTML = '

diff --git a/webcontroller/file_viewer.go b/webcontroller/file_viewer.go
index 712e97e..7c9b848 100644
--- a/webcontroller/file_viewer.go
+++ b/webcontroller/file_viewer.go
@@ -54,7 +54,7 @@ func (wc *WebController) serveFileViewer(w http.ResponseWriter, r *http.Request,
templateData.Title = fmt.Sprintf("%d files in Pixeldrain", len(finfo))
templateData.Other = viewerData{
Type: "list",
- CaptchaKey: wc.captchaSiteKey,
+ CaptchaKey: wc.captchaKey(),
APIResponse: map[string]interface{}{
"data": finfo,
"date_created": "now",
@@ -67,7 +67,7 @@ func (wc *WebController) serveFileViewer(w http.ResponseWriter, r *http.Request,
templateData.Title = fmt.Sprintf("%s ~ Pixeldrain file", finfo[0].Name)
templateData.Other = viewerData{
Type: "file",
- CaptchaKey: wc.captchaSiteKey,
+ CaptchaKey: wc.captchaKey(),
APIResponse: finfo[0],
}
}
diff --git a/webcontroller/user_account.go b/webcontroller/user_account.go
index f83b4eb..f1bdaf1 100644
--- a/webcontroller/user_account.go
+++ b/webcontroller/user_account.go
@@ -14,24 +14,7 @@ func (wc *WebController) serveRegister(
p httprouter.Params,
) {
var tpld = wc.newTemplateData(w, r)
-
- // This only runs on the first request
- if wc.captchaSiteKey == "" {
- var api = pixelapi.New(wc.conf.APIURLInternal, "")
- capt, err := api.GetRecaptcha()
- if err != nil {
- log.Error("Error getting recaptcha key: %s", err)
- w.WriteHeader(http.StatusInternalServerError)
- return
- }
- if capt.SiteKey == "" {
- wc.captchaSiteKey = "none"
- } else {
- wc.captchaSiteKey = capt.SiteKey
- }
- }
-
- tpld.Other = wc.captchaSiteKey
+ tpld.Other = wc.captchaKey()
err := wc.templates.Get().ExecuteTemplate(w, "register", tpld)
if err != nil {
diff --git a/webcontroller/web_controller.go b/webcontroller/web_controller.go
index e55469f..b5cbfe4 100644
--- a/webcontroller/web_controller.go
+++ b/webcontroller/web_controller.go
@@ -7,6 +7,7 @@ import (
"github.com/google/uuid"
"fornaxian.com/pixeldrain-web/init/conf"
+ "fornaxian.com/pixeldrain-web/pixelapi"
"github.com/Fornaxian/log"
"github.com/julienschmidt/httprouter"
)
@@ -118,3 +119,22 @@ func (wc *WebController) getAPIKey(r *http.Request) (key string, err error) {
}
return "", errors.New("not a valid pixeldrain authentication cookie")
}
+
+func (wc *WebController) captchaKey() string {
+ // This only runs on the first request
+ if wc.captchaSiteKey == "" {
+ var api = pixelapi.New(wc.conf.APIURLInternal, "")
+ capt, err := api.GetRecaptcha()
+ if err != nil {
+ log.Error("Error getting recaptcha key: %s", err)
+ return ""
+ }
+ if capt.SiteKey == "" {
+ wc.captchaSiteKey = "none"
+ } else {
+ wc.captchaSiteKey = capt.SiteKey
+ }
+ }
+
+ return wc.captchaSiteKey
+}