UNPKG

create-elysiajs

Version:

Scaffolding your Elysia project with the environment with easy!

55 lines (51 loc) 1.82 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAuthPlugin = getAuthPlugin; const ts_dedent_1 = __importDefault(require("ts-dedent")); function getAuthPlugin() { return (0, ts_dedent_1.default /* ts */) ` import { validateAndParseInitData, signInitData, getBotTokenSecretKey } from "@gramio/init-data"; import { Elysia, t } from "elysia"; import { config } from "../config.ts"; const secretKey = getBotTokenSecretKey(config.BOT_TOKEN); export const authElysia = new Elysia({ name: "auth", }) .guard({ headers: t.Object({ "x-init-data": t.String({ examples: [ signInitData( { user: { id: 1, first_name: "durov", username: "durov", }, }, secretKey ), ], }), }), response: { 401: t.Literal("UNAUTHORIZED"), }, }) .resolve(({ headers, error }) => { const result = validateAndParseInitData( headers["x-init-data"], secretKey ); if (!result || !result.user) return error("Unauthorized", "UNAUTHORIZED"); return { tgId: result.user.id, user: result.user, }; }) .as("plugin");`; }