From ad8bd1bff4c4a8a8b2ad66ef358a46da09aec52b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Rynning-T=C3=B8nnesen?= Date: Sun, 4 Mar 2018 22:29:59 +0100 Subject: [PATCH] Fix for non-selectable API-code - Fixed issue where API-code couldn't be selected - Added view to see if the api-key has been fetched or not - Added option to try again with the same email if the previous link has timed-out after a day --- .../assets/admin/authenticated/js/main.js | 20 ++++-- .../layouts/admin/authenticated.handlebars | 13 +++- server/public/layouts/client/token.handlebars | 2 +- server/routing/client/api.js | 69 ++++++++++--------- server/routing/client/router.js | 2 +- 5 files changed, 65 insertions(+), 41 deletions(-) diff --git a/server/public/assets/admin/authenticated/js/main.js b/server/public/assets/admin/authenticated/js/main.js index f4c28357..5db67276 100644 --- a/server/public/assets/admin/authenticated/js/main.js +++ b/server/public/assets/admin/authenticated/js/main.js @@ -35,11 +35,16 @@ $(document).on("click", "#refresh_all", function(e){ to_add.attr("id", response[i]._id); to_add.find(".api_token_name").text(response[i].name); to_add.find(".api_token_usage").text(response[i].usage); - to_add.find(".api_token_limit").attr("id", response[i]._id + "-limit"); + to_add.find(".update_api_token").attr("id", response[i]._id + "-limit"); to_add.find(".delete_api_token").attr("id", response[i]._id + "-delete"); to_add.find(".delete_api_token").attr("data-id", response[i]._id); to_add.find(".update_api_token").attr("data-id", response[i]._id); - $(".channel_things").append(to_add); + if(response[i].active) { + to_add.find(".check").removeClass("hide"); + } else { + to_add.find(".uncheck").removeClass("hide"); + } + $("#api_keys").append(to_add); } }, error: function(err) { @@ -170,7 +175,7 @@ $(document).on("click", ".delete_api_token", function(e) { $("#" + id + "-limit").toggleClass("disabled"); } }, - }) + }); }); function loaded() { @@ -191,11 +196,16 @@ function loaded() { to_add.attr("id", response[i]._id); to_add.find(".api_token_name").text(response[i].name); to_add.find(".api_token_usage").text(response[i].usage); - to_add.find(".api_token_limit").attr("id", response[i]._id + "-limit"); + to_add.find(".update_api_token").attr("id", response[i]._id + "-limit"); to_add.find(".delete_api_token").attr("id", response[i]._id + "-delete"); to_add.find(".delete_api_token").attr("data-id", response[i]._id); to_add.find(".update_api_token").attr("data-id", response[i]._id); - $(".channel_things").append(to_add); + if(response[i].active) { + to_add.find(".check").removeClass("hide"); + } else { + to_add.find(".uncheck").removeClass("hide"); + } + $("#api_keys").append(to_add); } }, error: function(err) { diff --git a/server/public/layouts/admin/authenticated.handlebars b/server/public/layouts/admin/authenticated.handlebars index c6cab58e..5609859f 100644 --- a/server/public/layouts/admin/authenticated.handlebars +++ b/server/public/layouts/admin/authenticated.handlebars @@ -18,10 +18,11 @@
@@ -110,6 +111,9 @@ GET API
+
+
+
Name @@ -127,10 +131,13 @@
+
+ check + close +
UPDATE X
-
diff --git a/server/public/layouts/client/token.handlebars b/server/public/layouts/client/token.handlebars index c960353c..20a10150 100644 --- a/server/public/layouts/client/token.handlebars +++ b/server/public/layouts/client/token.handlebars @@ -29,7 +29,7 @@
-
+
{{#if activated}}

API-token

Here is your api token

diff --git a/server/routing/client/api.js b/server/routing/client/api.js index 60479c63..6aac41f3 100644 --- a/server/routing/client/api.js +++ b/server/routing/client/api.js @@ -893,43 +893,50 @@ try { var id = crypto.createHash('sha256').update(uniqid()).digest('base64'); var uniqid_link = crypto.createHash('sha256').update(uniqid()).digest('hex'); token_db.collection("api_token").find({name: name}, function(err, results_find) { + var token = ""; if(results_find.length > 0) { - res.send("failed"); - return; + token = results_find[0].token; } - token_db.collection("api_token").insert({name: name, token: id, usage: 0, active: false, limit: 100}, function(err, docs){ - token_db.collection("api_links").insert({id: uniqid_link, token: id, createdAt: new Date()}, function(err, docs) { - let transporter = nodemailer.createTransport(mailconfig); + token_db.collection("api_links").find({token: token}, function(e, d) { + if(results_find.length == 0 || (d.length == 0 && results_find.length > 0 && !results_find[0].active)) { + token_db.collection("api_token").insert({name: name, token: id, usage: 0, active: false, limit: 100}, function(err, docs){ + token_db.collection("api_links").insert({id: uniqid_link, token: id, createdAt: new Date()}, function(err, docs) { + let transporter = nodemailer.createTransport(mailconfig); - transporter.verify(function(error, success) { - if (error) { - token_db.collection("api_links").remove({id: uniqid_link}, function(e,d) { - res.send("failed"); - return; - }) - } else { - var subject = 'ZOFF: API-key'; - var message = "Link to API-key: https://zoff.me/api/apply/" + uniqid_link + "\n\nThis link expires in 1 day."; - var msg = { - from: mailconfig.from, - to: name, - subject: subject, - text: message, - html: message, - } - transporter.sendMail(msg, (error, info) => { + transporter.verify(function(error, success) { if (error) { - res.status(400).send("failed"); - transporter.close(); - return; + token_db.collection("api_links").remove({id: uniqid_link}, function(e,d) { + res.send("failed"); + return; + }) + } else { + var subject = 'ZOFF: API-key'; + var message = "Link to API-key: https://zoff.me/api/apply/" + uniqid_link + "\n\nThis link expires in 1 day."; + var msg = { + from: mailconfig.from, + to: name, + subject: subject, + text: message, + html: message, + } + transporter.sendMail(msg, (error, info) => { + if (error) { + res.status(400).send("failed"); + transporter.close(); + return; + } + res.status(200).send("success"); + transporter.close(); + return; + }); } - res.status(200).send("success"); - transporter.close(); - return; }); - } - }); - }) + }) + }); + } else { + res.send("failed"); + return; + } }); }) } else { diff --git a/server/routing/client/router.js b/server/routing/client/router.js index e83cd624..03dc7574 100644 --- a/server/routing/client/router.js +++ b/server/routing/client/router.js @@ -51,7 +51,7 @@ router.route('/api/apply/:id').get(function(req,res) { token_db.collection('api_links').find({id: id}, function(err, result) { if(result.length == 1) { token_db.collection('api_links').remove({id: id}, function(e,d) { - token_db.collection('api_token').update({id: result[0].token}, {$set: {active: true }}, function(e,d) { + token_db.collection('api_token').update({token: result[0].token}, {$set: {active: true}}, function(e,d) { var data = { year: year, javascript_file: "token.min.js",