aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--db/migrations/20210713174217_add_admin_to_users.js11
-rw-r--r--db/models/users.js9
-rw-r--r--index.js2
-rw-r--r--lib/passport.js8
-rw-r--r--routes/payments.js6
5 files changed, 32 insertions, 4 deletions
diff --git a/db/migrations/20210713174217_add_admin_to_users.js b/db/migrations/20210713174217_add_admin_to_users.js
new file mode 100644
index 00000000..c8e009b1
--- /dev/null
+++ b/db/migrations/20210713174217_add_admin_to_users.js
@@ -0,0 +1,11 @@
+exports.up = async function(knex) {
+ return knex.schema.table("users", function(table) {
+ table.boolean("admin");
+ });
+};
+
+exports.down = async function(knex) {
+ return knex.schema.table("users", function(table) {
+ table.dropColumn("admin");
+ });
+};
diff --git a/db/models/users.js b/db/models/users.js
index e2275229..2abf1c79 100644
--- a/db/models/users.js
+++ b/db/models/users.js
@@ -10,6 +10,15 @@ const attributes = {
comment: null,
field: "id"
},
+ admin: {
+ type: DataTypes.BOOLEAN,
+ allowNull: true,
+ defaultValue: false,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "admin"
+ },
locked: {
type: DataTypes.BOOLEAN,
allowNull: true,
diff --git a/index.js b/index.js
index 5ccf3cc8..44f41103 100644
--- a/index.js
+++ b/index.js
@@ -91,7 +91,7 @@ var referralsRouter = require("./routes/referrals.js");
app.use("/referrals", referralsRouter);
var adminRouter = require("./routes/admin.js");
-app.use("/admin", adminRouter);
+app.use("/admin", adminAuth, adminRouter);
app.use((err, req, res, next) => {
const details = {
diff --git a/lib/passport.js b/lib/passport.js
index 70e002b9..9b88f27c 100644
--- a/lib/passport.js
+++ b/lib/passport.js
@@ -43,4 +43,12 @@ optionalAuth = function(req, res, next) {
})(req, res, next);
};
+adminAuth = (req, res, next) => {
+ passport.authenticate("jwt", { session: false }, function(err, user, info) {
+ if (!(user && user.admin)) throw new Error("restricted");
+ req.user = user;
+ next();
+ })(req, res, next);
+};
+
app.use(passport.initialize());
diff --git a/routes/payments.js b/routes/payments.js
index 960b0d39..2547aa84 100644
--- a/routes/payments.js
+++ b/routes/payments.js
@@ -141,9 +141,9 @@ ah(async () => {
lq = new BitcoinCore(config.liquid);
rare = new BitcoinCore(config.rare);
app.post("/liquid/broadcast", optionalAuth, require("./liquid/broadcast"));
- // app.get("/liquid/generate", auth, require("./liquid/generate"));
- // app.post("/liquid/fee", auth, require("./liquid/fee"));
- // app.post("/liquid/send", auth, require("./liquid/send"));
+ app.get("/liquid/generate", auth, require("./liquid/generate"));
+ app.post("/liquid/fee", auth, require("./liquid/fee"));
+ app.post("/liquid/send", auth, require("./liquid/send"));
require("./liquid/receive");
setTimeout(async () => {