create-elysiajs
Version:
Scaffolding your Elysia project with the environment with easy!
55 lines (51 loc) • 1.82 kB
JavaScript
"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");`;
}