aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.ts2
-rw-r--r--src/index.ts9
-rw-r--r--src/middleware.ts47
-rw-r--r--src/tg.ts4
4 files changed, 16 insertions, 46 deletions
diff --git a/src/config.ts b/src/config.ts
index ca60b97..4e034fa 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -15,6 +15,7 @@ class ConfigError extends Error {
const nodeEnv = process.env.NODE_ENV || "development";
const port = process.env.PORT ? Number(process.env.PORT) : 3000;
+const authToken = process.env.AUTH_TOKEN || "";
const tgWebhookUrl = process.env.TELEGRAM_WEBHOOK_URL || null;
if (!tgWebhookUrl) {
@@ -55,6 +56,7 @@ fs.writeFileSync(googleSaJsonPath, googleSaJsonUtf8);
const config = {
nodeEnv,
port,
+ authToken,
tgWebhookUrl,
tgBotToken,
sheetsSpreadsheetId,
diff --git a/src/index.ts b/src/index.ts
index 773ae3c..b675584 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -2,9 +2,9 @@ import { App } from "@tinyhttp/app";
import { logger } from "@tinyhttp/logger";
import bodyParser from "body-parser";
import config from "./config";
-import { httpMiddleware } from "./middleware";
import { buildSheetsClient } from "./sheets";
import { bot, broadcastMessage } from "./tg";
+import { httpHeaderAuth } from "./middleware";
const main = async () => {
const sheets = await buildSheetsClient();
@@ -27,7 +27,7 @@ const main = async () => {
.get("/", async (_, res) => {
res.send({ service: "hommabot2 API" });
})
- .post("/scheduler/trigger", httpMiddleware.verifyGoogleJWT, async (_req, res) => {
+ .post("/scheduler/trigger", httpHeaderAuth, async (_req, res) => {
try {
const sheetData = await sheets.fetchSheetData();
const entries = sheets.processRows(sheetData);
@@ -38,8 +38,11 @@ const main = async () => {
const taskText = tasks.join("\n");
const msg = `Tällä viikolla tehtävät hommat:\n${taskText}`;
await broadcastMessage(msg);
+ console.log("Broadcasted message:", msg);
} else {
- await broadcastMessage("Tällä viikolla ei toistuvia hommia! 🎉");
+ const msg = "Tällä viikolla ei toistuvia hommia! 🎉";
+ await broadcastMessage(msg);
+ console.log("Broadcasted message:", msg);
}
const newDateStamps = sheets.updatedLastDoneDateStamps(entries);
diff --git a/src/middleware.ts b/src/middleware.ts
index 46d6e00..98d5688 100644
--- a/src/middleware.ts
+++ b/src/middleware.ts
@@ -1,10 +1,8 @@
import { Request, Response } from "@tinyhttp/app";
import { Context } from "telegraf";
-import got from "got";
-import jwt from "jsonwebtoken";
+import config from "./config";
import { getPermittedUsers } from "./db";
-import config from "./config";
const tgAuth = async (ctx: Context, next: () => Promise<void>): Promise<void> => {
const userId = ctx.message?.from.id;
@@ -19,12 +17,7 @@ const tgAuth = async (ctx: Context, next: () => Promise<void>): Promise<void> =>
}
};
-const verifyGoogleJWT = async (req: Request, res: Response, next: () => void): Promise<void> => {
- if (config.nodeEnv !== "production") {
- next();
- return;
- }
-
+const httpHeaderAuth = async (req: Request, res: Response, next: () => void): Promise<void> => {
const authHeader = req.headers.authorization || null;
if (!authHeader) {
res.sendStatus(401);
@@ -32,43 +25,15 @@ const verifyGoogleJWT = async (req: Request, res: Response, next: () => void): P
}
const token = authHeader.split(" ")[1];
- if (!token) {
+ if (!token || token !== config.authToken) {
res.sendStatus(401);
return;
}
- const decoded = jwt.decode(token, { complete: true });
- if (!decoded) {
- res.sendStatus(401);
- return;
- }
-
- const kid: string = decoded.header.kid;
-
- const response = await got("https://www.googleapis.com/oauth2/v1/certs", { json: true });
- const googleCerts: Record<string, string> = response.body;
-
- const cert = googleCerts[kid];
- if (!cert) {
- console.error("KID not found in google certificates");
- res.sendStatus(500);
- return;
- }
-
- try {
- jwt.verify(token, cert);
- } catch (err) {
- res.sendStatus(403);
- return;
- }
-
next();
-};
+}
-export const tgMiddleware = {
+export {
tgAuth,
-};
-
-export const httpMiddleware = {
- verifyGoogleJWT,
+ httpHeaderAuth,
};
diff --git a/src/tg.ts b/src/tg.ts
index 45c60c7..4850c88 100644
--- a/src/tg.ts
+++ b/src/tg.ts
@@ -1,12 +1,12 @@
import { Telegraf } from "telegraf";
import config from "./config";
import { addActiveChat, getActiveChats, removeActiveChat } from "./db";
-import { tgMiddleware } from "./middleware";
+import { tgAuth } from "./middleware";
console.log(`Setting up Telegram bot with token ${config.tgBotToken}`);
const bot = new Telegraf(config.tgBotToken);
-bot.use(tgMiddleware.tgAuth);
+bot.use(tgAuth);
bot.command("/start", async (ctx) => {
await addActiveChat(ctx.chat.id);