diff --git a/config/example.yaml b/config/example.yaml index 824facf..0268955 100755 --- a/config/example.yaml +++ b/config/example.yaml @@ -1,5 +1,10 @@ # サーバー設定 server: + # Origin + # string + # 最終的にユーザーがリクエストするOrigin + origin: http://lynqchat.example.com + # 配信ポート # number # 0から65535が使用できます。 diff --git a/packages/backend/src/lib/auth.ts b/packages/backend/src/lib/auth.ts index 511c86e..a2b16b7 100644 --- a/packages/backend/src/lib/auth.ts +++ b/packages/backend/src/lib/auth.ts @@ -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 ", ""); diff --git a/packages/backend/src/lib/config.ts b/packages/backend/src/lib/config.ts index 963e9e2..2e68b81 100755 --- a/packages/backend/src/lib/config.ts +++ b/packages/backend/src/lib/config.ts @@ -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([ diff --git a/packages/backend/src/routes/server-info.ts b/packages/backend/src/routes/server-info.ts index 4b9abda..f889eca 100644 --- a/packages/backend/src/routes/server-info.ts +++ b/packages/backend/src/routes/server-info.ts @@ -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, diff --git a/packages/backend/src/routes/setup/initialization.ts b/packages/backend/src/routes/setup/initialization.ts index ec38b26..ad3803a 100644 --- a/packages/backend/src/routes/setup/initialization.ts +++ b/packages/backend/src/routes/setup/initialization.ts @@ -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]); diff --git a/packages/frontend/src/Layout.vue b/packages/frontend/src/Layout.vue index a7aab11..39977c1 100755 --- a/packages/frontend/src/Layout.vue +++ b/packages/frontend/src/Layout.vue @@ -7,10 +7,14 @@
-
+
-
- ホーム +
+ +
+ +
+
@@ -37,10 +41,10 @@