Auth refactoring
This commit is contained in:
1 parent
f48b596271
commit
6ae61b2763
1 file changed
+27
-15
+27
-15
@@ -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";
|
ctx.cookies.set(JWT_COOKIE, token);
|
||||||
logger.accessWarn(log);
|
ctx.body = JSON.stringify(token);
|
||||||
return;
|
logger.accessInfo(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
let token = jwt.sign(
|
function failure() {
|
||||||
{ username: username, roles: user.roles.split(",") },
|
ctx.status = 400;
|
||||||
JWT_SECRET
|
ctx.body = "Incorrect username or password";
|
||||||
);
|
log.message += " failed";
|
||||||
ctx.cookies.set(JWT_COOKIE, token);
|
logger.accessWarn(log);
|
||||||
ctx.body = JSON.stringify(token);
|
}
|
||||||
|
|
||||||
logger.accessInfo(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 => {
|
||||||
|
|||||||
Reference in new issue
Block a user