diff options
| author | Adam Soltys <[email protected]> | 2021-07-13 11:20:23 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2021-07-13 11:21:33 -0700 |
| commit | 6388e2b98843ad8ee5db855632334174efdaeedc (patch) | |
| tree | 701647d738d0b13cd41bdf9b75180e4923422d76 | |
| parent | fc3e802856d1209ee9e47e3f0a2a073c475bd7ae (diff) | |
| download | coinos-server-6388e2b98843ad8ee5db855632334174efdaeedc.tar.gz coinos-server-6388e2b98843ad8ee5db855632334174efdaeedc.zip | |
user admin field and auth middleware
| -rw-r--r-- | db/migrations/20210713174217_add_admin_to_users.js | 11 | ||||
| -rw-r--r-- | db/models/users.js | 9 | ||||
| -rw-r--r-- | index.js | 2 | ||||
| -rw-r--r-- | lib/passport.js | 8 | ||||
| -rw-r--r-- | routes/payments.js | 6 |
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, @@ -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 () => { |
