| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- const query = require("../queries");
- const utils = require("../utils");
- const env = require("../env");
- /**
- *
- * PAGES
- *
- **/
- async function homepage(req, res) {
- res.render("homepage", {
- title: "Modern open source URL shortener",
- });
- }
- async function login(req, res) {
- if (req.user) {
- res.redirect("/");
- return;
- }
-
- res.render("login", {
- title: "Log in or sign up"
- });
- }
- function logout(req, res) {
- utils.deleteCurrentToken(res);
- res.render("logout", {
- title: "Logging out.."
- });
- }
- async function createAdmin(req, res) {
- const isThereAUser = await query.user.findAny();
- if (isThereAUser) {
- res.redirect("/login");
- return;
- }
- res.render("create_admin", {
- title: "Create admin account"
- });
- }
- function notFound(req, res) {
- res.render("404", {
- title: "404 - Not found"
- });
- }
- function settings(req, res) {
- res.render("settings", {
- title: "Settings"
- });
- }
- function admin(req, res) {
- res.render("admin", {
- title: "Admin"
- });
- }
- function stats(req, res) {
- res.render("stats", {
- title: "Stats"
- });
- }
- async function banned(req, res) {
- res.render("banned", {
- title: "Banned link",
- });
- }
- async function report(req, res) {
- if (!env.REPORT_EMAIL) {
- res.redirect("/");
- return;
- }
- res.render("report", {
- title: "Report abuse",
- });
- }
- async function resetPassword(req, res) {
- res.render("reset_password", {
- title: "Reset password",
- });
- }
- async function resetPasswordSetNewPassword(req, res) {
- const reset_password_token = req.params.resetPasswordToken;
-
- if (reset_password_token) {
- const user = await query.user.find(
- {
- reset_password_token,
- reset_password_expires: [">", utils.dateToUTC(new Date())]
- }
- );
- if (user) {
- res.locals.token_verified = true;
- }
- }
-
- res.render("reset_password_set_new_password", {
- title: "Reset password",
- ...(res.locals.token_verified && { reset_password_token }),
- });
- }
- async function verifyChangeEmail(req, res) {
- res.render("verify_change_email", {
- title: "Verifying email",
- });
- }
- async function verify(req, res) {
- res.render("verify", {
- title: "Verify",
- });
- }
- async function terms(req, res) {
- res.render("terms", {
- title: "Terms of Service",
- });
- }
- /**
- *
- * PARTIALS
- *
- **/
- async function confirmLinkDelete(req, res) {
- const link = await query.link.find({
- uuid: req.query.id,
- ...(!req.user.admin && { user_id: req.user.id })
- });
- if (!link) {
- return res.render("partials/links/dialog/message", {
- layout: false,
- message: "Could not find the link."
- });
- }
- res.render("partials/links/dialog/delete", {
- layout: false,
- link: utils.getShortURL(link.address, link.domain).link,
- id: link.uuid
- });
- }
- async function confirmLinkBan(req, res) {
- const link = await query.link.find({
- uuid: req.query.id,
- ...(!req.user.admin && { user_id: req.user.id })
- });
- if (!link) {
- return res.render("partials/links/dialog/message", {
- message: "Could not find the link."
- });
- }
- res.render("partials/links/dialog/ban", {
- link: utils.getShortURL(link.address, link.domain).link,
- id: link.uuid
- });
- }
- async function confirmUserDelete(req, res) {
- const user = await query.user.find({ id: req.query.id });
- if (!user) {
- return res.render("partials/admin/dialog/message", {
- layout: false,
- message: "Could not find the user."
- });
- }
- res.render("partials/admin/dialog/delete_user", {
- layout: false,
- email: user.email,
- id: user.id
- });
- }
- async function confirmUserBan(req, res) {
- const user = await query.user.find({ id: req.query.id });
- if (!user) {
- return res.render("partials/admin/dialog/message", {
- layout: false,
- message: "Could not find the user."
- });
- }
- res.render("partials/admin/dialog/ban_user", {
- layout: false,
- email: user.email,
- id: user.id
- });
- }
- async function createUser(req, res) {
- res.render("partials/admin/dialog/create_user", {
- layout: false,
- });
- }
- async function addDomainAdmin(req, res) {
- res.render("partials/admin/dialog/add_domain", {
- layout: false,
- });
- }
- async function addDomainForm(req, res) {
- res.render("partials/settings/domain/add_form");
- }
- async function confirmDomainDelete(req, res) {
- const domain = await query.domain.find({
- uuid: req.query.id,
- user_id: req.user.id
- });
- if (!domain) {
- throw new utils.CustomError("Could not find the domain.", 400);
- }
- res.render("partials/settings/domain/delete", {
- ...utils.sanitize.domain(domain)
- });
- }
- async function confirmDomainBan(req, res) {
- const domain = await query.domain.find({
- id: req.query.id
- });
- if (!domain) {
- throw new utils.CustomError("Could not find the domain.", 400);
- }
- const hasUser = !!domain.user_id;
- const hasLink = await query.link.find({ domain_id: domain.id });
- res.render("partials/admin/dialog/ban_domain", {
- id: domain.id,
- address: domain.address,
- hasUser,
- hasLink,
- });
- }
- async function confirmDomainDeleteAdmin(req, res) {
- const domain = await query.domain.find({
- id: req.query.id
- });
- if (!domain) {
- throw new utils.CustomError("Could not find the domain.", 400);
- }
- const hasLink = await query.link.find({ domain_id: domain.id });
- res.render("partials/admin/dialog/delete_domain", {
- id: domain.id,
- address: domain.address,
- hasLink,
- });
- }
- async function getReportEmail(req, res) {
- if (!env.REPORT_EMAIL) {
- throw new utils.CustomError("No report email is available.", 400);
- }
- res.render("partials/report/email", {
- report_email_address: env.REPORT_EMAIL.replace("@", "[at]")
- });
- }
- async function getSupportEmail(req, res) {
- if (!env.CONTACT_EMAIL) {
- throw new utils.CustomError("No support email is available.", 400);
- }
- await utils.sleep(500);
- res.render("partials/support_email", {
- email: env.CONTACT_EMAIL,
- });
- }
- async function linkEdit(req, res) {
- const link = await query.link.find({
- uuid: req.params.id,
- ...(!req.user.admin && { user_id: req.user.id })
- });
- res.render("partials/links/edit", {
- ...(link && utils.sanitize.link(link)),
- });
- }
- async function linkEditAdmin(req, res) {
- const link = await query.link.find({
- uuid: req.params.id,
- });
- res.render("partials/admin/links/edit", {
- ...(link && utils.sanitize.link(link)),
- });
- }
- module.exports = {
- addDomainAdmin,
- addDomainForm,
- admin,
- banned,
- confirmDomainBan,
- confirmDomainDelete,
- confirmDomainDeleteAdmin,
- confirmLinkBan,
- confirmLinkDelete,
- confirmUserBan,
- confirmUserDelete,
- createAdmin,
- createUser,
- getReportEmail,
- getSupportEmail,
- homepage,
- linkEdit,
- linkEditAdmin,
- login,
- logout,
- notFound,
- report,
- resetPassword,
- resetPasswordSetNewPassword,
- settings,
- stats,
- terms,
- verifyChangeEmail,
- verify,
- }
|