@a11ywatch/core
Version:
a11ywatch central API
139 lines • 5.77 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.retreiveUserByTokenWrapper = exports.retreiveUserByToken = exports.getUserFromApiScan = exports.allowedNext = exports.getUserFromApi = exports.getUserFromId = void 0;
const controllers_1 = require("../controllers");
const strings_1 = require("../strings");
const get_user_1 = require("./get-user");
const config_1 = require("../../config/config");
const is_client_1 = require("./is-client");
const message_1 = require("../../web/messages/message");
const extracter_1 = require("../../web/params/extracter");
const getUserFromId = (user, keyid) => __awaiter(void 0, void 0, void 0, function* () {
if (!(0, extracter_1.validateUID)(keyid)) {
return [null, null];
}
return yield (0, controllers_1.UsersController)({
user,
}).getUser({ id: keyid });
});
exports.getUserFromId = getUserFromId;
const getUserFromApi = (token, _req, res) => __awaiter(void 0, void 0, void 0, function* () {
var _a;
const jwt = (0, get_user_1.extractTokenKey)(token ? String(token).trim() : "");
const user = (0, get_user_1.getUserFromToken)(jwt);
const { keyid } = (_a = user === null || user === void 0 ? void 0 : user.payload) !== null && _a !== void 0 ? _a : {};
if (config_1.config.SUPER_MODE) {
const [userData] = yield (0, exports.getUserFromId)(user, keyid);
return userData;
}
if (!(0, extracter_1.validateUID)(keyid)) {
res.send({
data: null,
message: "Authentication required. Add your authentication header and try again.",
success: false,
});
return;
}
const [userData] = yield (0, exports.getUserFromId)(user, keyid);
return userData;
});
exports.getUserFromApi = getUserFromApi;
const allowedNext = (token, req, res, mediaType) => {
var _a;
const jwt = (0, get_user_1.extractTokenKey)(token ? String(token).trim() : "");
const user = (0, get_user_1.getUserFromToken)(jwt);
const { keyid } = (_a = user === null || user === void 0 ? void 0 : user.payload) !== null && _a !== void 0 ? _a : {};
if (config_1.config.SUPER_MODE || (0, extracter_1.validateUID)(keyid)) {
return {
id: keyid,
};
}
const isClient = (0, is_client_1.frontendClientOrigin)(req.headers["origin"]) ||
(0, is_client_1.frontendClientOrigin)(req.headers["host"]) ||
(0, is_client_1.frontendClientOrigin)(req.headers["referer"]);
if (!isClient) {
if (mediaType === "html") {
res.type("text/html").send(`
<html>
<body>
<h1>${strings_1.GENERAL_ERROR}</h1>
</body>
</html>
`);
}
else {
res.send({
data: null,
message: "Authentication required. Add your authentication header and try again.",
success: false,
});
}
return;
}
return {
id: keyid,
};
};
exports.allowedNext = allowedNext;
const getUserFromApiScan = (token = "", _req, res) => __awaiter(void 0, void 0, void 0, function* () {
if (!token && !config_1.config.SUPER_MODE) {
res.status(message_1.StatusCode.Unauthorized);
res.send({
data: null,
message: "Authentication required. Add your Authorization header and try again.",
success: false,
});
return;
}
const [user, collection] = yield (0, exports.retreiveUserByToken)(token);
if (config_1.config.SUPER_MODE) {
return user || {};
}
if (!user || (user && !user.emailConfirmed)) {
res.status(message_1.StatusCode.Unauthorized);
res.send({
data: null,
message: !user ? "User not found." : "Email confirmation required.",
success: false,
});
return;
}
const [canScan, u] = yield (0, controllers_1.UsersController)({
user,
}).updateScanAttempt({ id: user.id, user: user, collection });
if (!canScan) {
res.send({
data: null,
message: u.emailConfirmed
? strings_1.RATE_EXCEEDED_ERROR
: strings_1.EMAIL_NEEDS_CONFIRMATION,
success: false,
});
return;
}
return user;
});
exports.getUserFromApiScan = getUserFromApiScan;
const retreiveUserByToken = (token) => __awaiter(void 0, void 0, void 0, function* () {
var _b;
const user = (0, get_user_1.getUserFromToken)(token);
const { keyid } = (_b = user === null || user === void 0 ? void 0 : user.payload) !== null && _b !== void 0 ? _b : {};
const [u, c] = yield (0, exports.getUserFromId)(user, keyid);
return [u, c];
});
exports.retreiveUserByToken = retreiveUserByToken;
const retreiveUserByTokenWrapper = (token) => __awaiter(void 0, void 0, void 0, function* () {
const [user] = yield (0, exports.retreiveUserByToken)(token);
return user;
});
exports.retreiveUserByTokenWrapper = retreiveUserByTokenWrapper;
//# sourceMappingURL=get-user-data.js.map