@xpresser/events-server
Version:
Xpresser's Official Events Server Plugin.
47 lines (46 loc) • 1.77 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
const nanoid_1 = require("nanoid");
const xpresser_1 = require("xpresser");
const AccessDb_1 = require("../src/AccessDb");
const moment_1 = __importDefault(require("moment"));
const $ = (0, xpresser_1.getInstance)();
const eServerAdminPass = $.config.get("eventsServer.controlPanel.password");
module.exports = {
// Controller Name
name: "AccessController",
// Controller Default Error Handler.
e: (http, error) => http.status(401).json({ error }),
boot(http) {
http.state.set("title", "");
},
/**
* Example Action.
* @param http - Current Http Instance
*/
login(http) {
if (http.route.method === "get") {
return http.view("events-server::layout", { view: "login" }, false, true);
}
const password = http.body("eServerPassword");
if (!password || (password && password != eServerAdminPass)) {
return http.redirectToRoute("events-server", [], {
error: `Incorrect password. Please try again!`
});
}
const token = (0, nanoid_1.nanoid)(), expiresAt = (0, moment_1.default)().add(30, "minutes").toDate();
AccessDb_1.accessDb.set(`logins.${token}`, expiresAt);
(0, AccessDb_1.saveAccessDb)();
// Set Auth Token
http.res.cookie("at", token);
return http.redirectToRoute("events-server.dashboard");
},
logout(http) {
const token = http.req.cookies["at"];
AccessDb_1.accessDb.unset(`logins.${token}`);
(0, AccessDb_1.saveAccessDb)();
return http.redirectToRoute("events-server");
}
};