Auth refactoring

This commit is contained in:
Zaid Abdulla committed 2018-12-26 00:22:07 -08:00
1 parent f48b596271
commit 6ae61b2763
1 file changed
+27 -15
+27 -15
View File
@@ -52,6 +52,15 @@ function getPermissionSets(roles) {
return permissionSets; return permissionSets;
} }
function authSimple(username, password) {
const user = config.auth.simple.users[username];
if (user && user.password === password) {
const roles = user.roles.split(",").map(s => s.trim());
return Promise.resolve(roles);
}
return Promise.resolve(null);
}
koa.on("error", async err => { koa.on("error", async err => {
throw err; throw err;
}); });
@@ -78,30 +87,33 @@ router.post("/login", async ctx => {
const username = ctx.request.body.username; const username = ctx.request.body.username;
const password = ctx.request.body.password; const password = ctx.request.body.password;
const user = config.auth.simple.users[username];
let log = { let log = {
message: "Log in", message: "Log in",
context: ctx, context: ctx,
username: username username: username
}; };
if (!user || user.password !== password) { function success(roles, method) {
ctx.status = 400; log.method = method;
ctx.body = "Incorrect username or password"; const token = jwt.sign({ username, roles }, JWT_SECRET);
log.message += " - invalid credentials";
logger.accessWarn(log);
return;
}
let token = jwt.sign(
{ username: username, roles: user.roles.split(",") },
JWT_SECRET
);
ctx.cookies.set(JWT_COOKIE, token); ctx.cookies.set(JWT_COOKIE, token);
ctx.body = JSON.stringify(token); ctx.body = JSON.stringify(token);
logger.accessInfo(log); logger.accessInfo(log);
}
function failure() {
ctx.status = 400;
ctx.body = "Incorrect username or password";
log.message += " failed";
logger.accessWarn(log);
}
let roles;
roles = await authSimple(username, password);
if (roles) return success(roles, "simple");
failure();
}); });
router.post("/logout", async ctx => { router.post("/logout", async ctx => {