1
0
Fork 0
mirror of synced 2024-07-31 02:48:00 +12:00
budibase/packages/server/middleware/controllers/auth.js

41 lines
996 B
JavaScript
Raw Normal View History

const jwt = require("jsonwebtoken");
const CouchDB = require("../../db");
const bcrypt = require("../../utilities/bcrypt");
2020-04-08 07:34:21 +12:00
exports.forgotPassword = async ctx => {
};
2020-04-08 07:34:21 +12:00
exports.setPassword = async ctx => { };
2020-04-08 07:34:21 +12:00
exports.changePassword = async ctx => {
};
2020-04-08 07:34:21 +12:00
exports.authenticate = async ctx => {
const { username, password } = ctx.request.body;
if (!username) ctx.throw(400, "Username Required.");
if (!password) ctx.throw(400, "Password Required");
2020-04-08 07:34:21 +12:00
// query couch for their username
2020-04-25 04:28:32 +12:00
const db = new CouchDB(ctx.params.instanceId);
2020-04-24 04:05:33 +12:00
const dbUser = await db.query("by_username", {
include_docs: true,
key: username
});
if (await bcrypt.compare(password, dbUser.password)) {
const payload = {
userId: dbUser._id,
accessLevel: "",
instanceId: ctx.params.instanceId
};
const token = jwt.sign(payload, ctx.config.secret, {
expiresIn: "1 day"
});
ctx.body = token;
} else {
ctx.throw(401, "Invalid credentials.");
}
}