UNPKG

@xpresser/events-server

Version:

Xpresser's Official Events Server Plugin.

47 lines (46 loc) 1.77 kB
"use strict"; 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"); } };