fix api crash on username missing from lcoaldb
This commit is contained in:
parent
c8c42d3b95
commit
7e7f9b2b55
7
db.js
7
db.js
@ -24,5 +24,10 @@ export function getResourceConfig() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getUserConfig(username) {
|
export function getUserConfig(username) {
|
||||||
return db.users[username];
|
if (db.users[username]) {
|
||||||
|
return db.users[username];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
4
main.js
4
main.js
@ -6,8 +6,8 @@ import morgan from "morgan";
|
|||||||
import api from "./package.json" assert {type: "json"};
|
import api from "./package.json" assert {type: "json"};
|
||||||
|
|
||||||
import { pveAPIToken, listenPort, hostname, domain } from "./vars.js";
|
import { pveAPIToken, listenPort, hostname, domain } from "./vars.js";
|
||||||
import { checkAuth, requestPVE, handleResponse, getDiskInfo } from "./pve.js";
|
import { requestPVE, handleResponse, getDiskInfo } from "./pve.js";
|
||||||
import { getAllocatedResources, approveResources } from "./utils.js";
|
import { checkAuth, getAllocatedResources, approveResources } from "./utils.js";
|
||||||
import { getUserConfig } from "./db.js";
|
import { getUserConfig } from "./db.js";
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
17
pve.js
17
pve.js
@ -1,23 +1,6 @@
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { pveAPI, pveAPIToken } from "./vars.js";
|
import { pveAPI, pveAPIToken } from "./vars.js";
|
||||||
|
|
||||||
export async function checkAuth(cookies, res, vmpath = null) {
|
|
||||||
let auth = false;
|
|
||||||
if (vmpath) {
|
|
||||||
let result = await requestPVE(`/${vmpath}/config`, "GET", cookies);
|
|
||||||
auth = result.status === 200;
|
|
||||||
}
|
|
||||||
else { // if no path is specified, then do a simple authentication
|
|
||||||
let result = await requestPVE("/version", "GET", cookies);
|
|
||||||
auth = result.status === 200;
|
|
||||||
}
|
|
||||||
if (!auth) {
|
|
||||||
res.status(401).send({ auth: auth, path: vmpath ? `${vmpath}/config` : "/version" });
|
|
||||||
res.end();
|
|
||||||
}
|
|
||||||
return auth;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function requestPVE(path, method, cookies, body = null, token = null) {
|
export async function requestPVE(path, method, cookies, body = null, token = null) {
|
||||||
let url = `${pveAPI}${path}`;
|
let url = `${pveAPI}${path}`;
|
||||||
let content = {
|
let content = {
|
||||||
|
28
utils.js
28
utils.js
@ -1,6 +1,32 @@
|
|||||||
import { getUsedResources } from "./pve.js";
|
import { getUsedResources, requestPVE } from "./pve.js";
|
||||||
import { getUserConfig, getResourceConfig } from "./db.js";
|
import { getUserConfig, getResourceConfig } from "./db.js";
|
||||||
|
|
||||||
|
export async function checkAuth(cookies, res, vmpath = null) {
|
||||||
|
let auth = false;
|
||||||
|
|
||||||
|
if (getUserConfig(cookies.username) === null) {
|
||||||
|
auth = false;
|
||||||
|
res.status(401).send({ auth: auth, path: vmpath ? `${vmpath}/config` : "/version", error: `user ${cookies.username} not found in localdb` });
|
||||||
|
res.end();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vmpath) {
|
||||||
|
let result = await requestPVE(`/${vmpath}/config`, "GET", cookies);
|
||||||
|
auth = result.status === 200;
|
||||||
|
}
|
||||||
|
else { // if no path is specified, then do a simple authentication
|
||||||
|
let result = await requestPVE("/version", "GET", cookies);
|
||||||
|
auth = result.status === 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!auth) {
|
||||||
|
res.status(401).send({ auth: auth, path: vmpath ? `${vmpath}/config` : "/version", error: `user token did not pass authentication check` });
|
||||||
|
res.end();
|
||||||
|
}
|
||||||
|
return auth;
|
||||||
|
}
|
||||||
|
|
||||||
export async function getAllocatedResources(req, username) {
|
export async function getAllocatedResources(req, username) {
|
||||||
let dbResources = getResourceConfig();
|
let dbResources = getResourceConfig();
|
||||||
let used = await getUsedResources(req, dbResources);
|
let used = await getUsedResources(req, dbResources);
|
||||||
|
Loading…
Reference in New Issue
Block a user