New: configにoriginを追加 / Chg(Performance): /api以外の場合にトークンの認証をバイパス / New: server-infoエンドポイントにiconを追加 / New: setup/initializationでconfigテーブルにLynqChatロゴをiconとして追加する処理 / New: .content-main用の背景色を追加 / Chg: 背景色を変更 / Chg: .left-menuを更新
This commit is contained in:
@@ -14,9 +14,17 @@ const logger = new Logger("Lib | auth");
|
||||
|
||||
const Authorization: FastifyPluginCallback = (fastify) => {
|
||||
fastify.addHook("onRequest", async (req, res) => {
|
||||
if (!(req.url.startsWith("/api"))) {
|
||||
return req.token = ErrorBase({
|
||||
bad: "client",
|
||||
code: "token_invalid",
|
||||
message: "トークンが不正です。",
|
||||
});
|
||||
}
|
||||
|
||||
let token = req.headers["authorization"];
|
||||
if (typeof token !== "string") {
|
||||
return ErrorBase({
|
||||
return req.token = ErrorBase({
|
||||
bad: "client",
|
||||
code: "token_invalid",
|
||||
message: "トークンが不正です。",
|
||||
@@ -24,13 +32,11 @@ const Authorization: FastifyPluginCallback = (fastify) => {
|
||||
}
|
||||
|
||||
if (!token.startsWith("Bearer ")) {
|
||||
req.token = ErrorBase({
|
||||
return req.token = ErrorBase({
|
||||
bad: "client",
|
||||
code: "token_invalid",
|
||||
message: "トークンが不正です。",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
token = token.replace("Bearer ", "");
|
||||
|
||||
@@ -8,6 +8,7 @@ const logger = new Logger("Lib | config");
|
||||
|
||||
const schema = z.object({
|
||||
server: z.object({
|
||||
origin: z.string().refine(data => data === new URL(data).origin),
|
||||
port: z.number().min(0).max(65535),
|
||||
host: z.string().ip(),
|
||||
trustProxy: z.union([
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import config from "@/lib/config";
|
||||
import { DatabaseError } from "@/errors";
|
||||
import Logger from "@/lib/logger";
|
||||
import { ConfigEntity } from "@/modules/entities/Config";
|
||||
@@ -9,18 +10,20 @@ export default async function ServerInfo(fastify: FastifyInstance) {
|
||||
|
||||
fastify.post("/", async (req, res) => {
|
||||
try {
|
||||
const config = fastify.orm.em.getRepository(ConfigEntity);
|
||||
const user = fastify.orm.em.getRepository(UserEntity);
|
||||
const configCount = await config.count();
|
||||
const userCount = await user.count();
|
||||
const configRepo = fastify.orm.em.getRepository(ConfigEntity);
|
||||
const userRepo = fastify.orm.em.getRepository(UserEntity);
|
||||
const configCount = await configRepo.count();
|
||||
const userCount = await userRepo.count();
|
||||
|
||||
const serverName = await config.findOne({ name: "name" });
|
||||
const serverDescription = await config.findOne({ name: "description" });
|
||||
const serverName = await configRepo.findOne({ name: "name" });
|
||||
const serverDescription = await configRepo.findOne({ name: "description" });
|
||||
const serverIcon = await configRepo.findOne({ name: "icon" });
|
||||
|
||||
return res.send({
|
||||
success: true,
|
||||
name: serverName?.value ?? null,
|
||||
description: serverDescription?.value ?? null,
|
||||
icon: serverIcon?.value ?? `${config.server.origin}/assets/lynqchat.svg`,
|
||||
isInitialized: configCount > 0,
|
||||
isFirstAdminExists: userCount > 0,
|
||||
userCount,
|
||||
|
||||
@@ -4,6 +4,7 @@ import { ConfigEntity } from "@/modules/entities/Config";
|
||||
import type { FastifyInstance } from "fastify";
|
||||
import webpush from "web-push";
|
||||
import z from "zod/v3";
|
||||
import config from "@/lib/config";
|
||||
|
||||
export default function SetupInitialization(fastify: FastifyInstance) {
|
||||
const logger = new Logger("Endpoint | setup/initialization");
|
||||
@@ -48,6 +49,7 @@ export default function SetupInitialization(fastify: FastifyInstance) {
|
||||
try {
|
||||
const entries = Object.entries(result.data).filter(([key]) => key !== "force");
|
||||
|
||||
entries.push(["icon", `${config.server.origin}/assets/lynqchat.svg`]);
|
||||
const vapid = webpush.generateVAPIDKeys();
|
||||
entries.push(["VAPID_PUBLIC", vapid.publicKey]);
|
||||
entries.push(["VAPID_PRIVATE", vapid.privateKey]);
|
||||
|
||||
Reference in New Issue
Block a user