Compare commits

...

2 Commits

Author SHA1 Message Date
adueck e09f3b7d14 cleanup 2024-03-02 23:13:11 -05:00
adueck e0ef03a944 add ntfy 2024-03-02 22:46:48 -05:00
4 changed files with 65 additions and 45 deletions

View File

@ -1,40 +1,45 @@
const names = [
"LINGDOCS_EMAIL_HOST",
"LINGDOCS_EMAIL_USER",
"LINGDOCS_EMAIL_PASS",
"LINGDOCS_COUCHDB",
"LINGDOCS_ACCOUNT_COOKIE_SECRET",
"LINGDOCS_ACCOUNT_GOOGLE_CLIENT_SECRET",
"LINGDOCS_ACCOUNT_TWITTER_CLIENT_SECRET",
"LINGDOCS_ACCOUNT_GITHUB_CLIENT_SECRET",
"LINGDOCS_ACCOUNT_RECAPTCHA_SECRET",
"LINGDOCS_ACCOUNT_UPGRADE_PASSWORD",
"STRIPE_SECRET_KEY",
"STRIPE_WEBHOOK_SECRET",
"LINGDOCS_EMAIL_HOST",
"LINGDOCS_EMAIL_USER",
"LINGDOCS_EMAIL_PASS",
"LINGDOCS_COUCHDB",
"LINGDOCS_ACCOUNT_COOKIE_SECRET",
"LINGDOCS_ACCOUNT_GOOGLE_CLIENT_SECRET",
"LINGDOCS_ACCOUNT_TWITTER_CLIENT_SECRET",
"LINGDOCS_ACCOUNT_GITHUB_CLIENT_SECRET",
"LINGDOCS_ACCOUNT_RECAPTCHA_SECRET",
"LINGDOCS_ACCOUNT_UPGRADE_PASSWORD",
"STRIPE_SECRET_KEY",
"STRIPE_WEBHOOK_SECRET",
"NTFY_TOPIC",
];
const values = names.map((name) => ({
name,
value: process.env[name] || "",
name,
value: process.env[name] || "",
}));
const missing = values.filter((v) => !v.value);
if (missing.length) {
console.error("Missing evironment variable(s):", missing.map((m) => m.name).join(", "));
process.exit(1);
console.error(
"Missing evironment variable(s):",
missing.map((m) => m.name).join(", ")
);
process.exit(1);
}
export default {
emailHost: values[0].value,
emailUser: values[1].value,
emailPass: values[2].value,
couchDbURL: values[3].value,
cookieSecret: values[4].value,
googleClientSecret: values[5].value,
twitterClientSecret: values[6].value,
githubClientSecret: values[7].value,
recaptchaSecret: values[8].value,
upgradePassword: values[9].value,
stripeSecretKey: values[10].value,
stripeWebhookSecret: values[11].value,
emailHost: values[0].value,
emailUser: values[1].value,
emailPass: values[2].value,
couchDbURL: values[3].value,
cookieSecret: values[4].value,
googleClientSecret: values[5].value,
twitterClientSecret: values[6].value,
githubClientSecret: values[7].value,
recaptchaSecret: values[8].value,
upgradePassword: values[9].value,
stripeSecretKey: values[10].value,
stripeWebhookSecret: values[11].value,
ntfyTopic: values[12].value,
};

9
account/src/lib/ntfy.ts Normal file
View File

@ -0,0 +1,9 @@
import fetch from "node-fetch";
import envVars from "./env-vars";
export async function ntfy(message: string) {
fetch(`https://ntfy.sh/${envVars.ntfyTopic}`, {
method: "POST",
body: message,
}).catch(console.error);
}

View File

@ -15,6 +15,7 @@ import { outsideProviders } from "../middleware/setup-passport";
import * as T from "../../../website/src/types/account-types";
import env from "../lib/env-vars";
import Stripe from "stripe";
import { ntfy } from "./ntfy";
const stripe = new Stripe(env.stripeSecretKey, {
apiVersion: "2022-08-01",
@ -163,6 +164,7 @@ export async function createNewUser(
email: input.email || "",
token: email.token,
});
ntfy(`new LingDocs user ${input.name} - ${input.email}`);
const user = await insertLingdocsUser(newUser);
return user;
}

View File

@ -1,12 +1,13 @@
import express, { Response } from "express";
import * as T from "../../../website/src/types/account-types";
import { addFeedback } from "../lib/couch-db";
import { ntfy } from "../lib/ntfy";
// import env from "../lib/env-vars";
// TODO: ADD PROPER ERROR HANDLING THAT WILL RETURN JSON ALWAYS
function sendResponse(res: Response, payload: T.APIResponse) {
return res.send(payload);
return res.send(payload);
}
const feedbackRouter = express.Router();
@ -15,22 +16,25 @@ const feedbackRouter = express.Router();
* receives a piece of feedback
*/
feedbackRouter.put("/", (req, res, next) => {
const { anonymous, ...feedback } = req.body;
const user = anonymous
? "anonymous"
: req.user
? req.user.name
: "not logged in";
addFeedback({
user,
feedback,
}).then(() => {
res.send({ ok: true, message: "feedback received" });
}).catch((e) => {
console.error("error receiving feedback");
console.error("feedback missed", feedback);
console.error(e);
next("error receiving feedback");
const { anonymous, ...feedback } = req.body;
const user = anonymous
? "anonymous"
: req.user
? req.user.name
: "not logged in";
addFeedback({
user,
feedback,
})
.then(() => {
ntfy(JSON.stringify(feedback));
res.send({ ok: true, message: "feedback received" });
})
.catch((e) => {
console.error("error receiving feedback");
console.error("feedback missed", feedback);
console.error(e);
next("error receiving feedback");
});
});