From 8aa86268dee07106a418d0cd61d99dc0774afb42 Mon Sep 17 00:00:00 2001 From: longdayi <13477510+longdayilongdayi@user.noreply.gitee.com> Date: Tue, 27 May 2025 08:17:40 +0800 Subject: [PATCH] 05270817 --- apps/backend/src/oidc/config.ts | 30 ++++++++++++++++--- apps/backend/src/oidc/provider.ts | 2 +- apps/backend/src/trpc.ts | 5 ++-- .../src/user/{userindex.ts => user.index.ts} | 0 .../src/user/{routes.ts => user.rest.ts} | 10 +++---- apps/web/app/page.tsx | 3 +- apps/web/providers/query-provider.tsx | 2 +- 7 files changed, 37 insertions(+), 15 deletions(-) rename apps/backend/src/user/{userindex.ts => user.index.ts} (100%) rename apps/backend/src/user/{routes.ts => user.rest.ts} (57%) diff --git a/apps/backend/src/oidc/config.ts b/apps/backend/src/oidc/config.ts index 7d4aac6..09c71f6 100644 --- a/apps/backend/src/oidc/config.ts +++ b/apps/backend/src/oidc/config.ts @@ -16,17 +16,17 @@ async function getClients() { : []; // 管理后台client,通过环境变量读取 - const adminClient = { + const defaultClient = { client_id: process.env.OIDC_CLIENT_ID || 'admin-client', client_secret: process.env.OIDC_CLIENT_SECRET || 'admin-secret', grant_types: ['authorization_code', 'refresh_token'], - redirect_uris: [process.env.OIDC_REDIRECT_URI || 'http://localhost:3000/admin/callback'], + redirect_uris: [process.env.OIDC_REDIRECT_URI || 'http://localhost:3000/callback'], response_types: ['code'], scope: 'openid email profile', }; // 检查是否与数据库client_id重复 - const allClients = [adminClient, ...dbClientList.filter(c => c.client_id !== adminClient.client_id)]; + const allClients = [defaultClient, ...dbClientList.filter(c => c.client_id !== defaultClient.client_id)]; return allClients; } @@ -50,7 +50,29 @@ const config: Configuration = { cookies: { keys: [OIDC_COOKIE_KEY], }, - jwks: [], + jwks: { + keys: [ + { + d: 'VEZOsY07JTFzGTqv6cC2Y32vsfChind2I_TTuvV225_-0zrSej3XLRg8iE_u0-3GSgiGi4WImmTwmEgLo4Qp3uEcxCYbt4NMJC7fwT2i3dfRZjtZ4yJwFl0SIj8TgfQ8ptwZbFZUlcHGXZIr4nL8GXyQT0CK8wy4COfmymHrrUoyfZA154ql_OsoiupSUCRcKVvZj2JHL2KILsq_sh_l7g2dqAN8D7jYfJ58MkqlknBMa2-zi5I0-1JUOwztVNml_zGrp27UbEU60RqV3GHjoqwI6m01U7K0a8Q_SQAKYGqgepbAYOA-P4_TLl5KC4-WWBZu_rVfwgSENwWNEhw8oQ', + dp: 'E1Y-SN4bQqX7kP-bNgZ_gEv-pixJ5F_EGocHKfS56jtzRqQdTurrk4jIVpI-ZITA88lWAHxjD-OaoJUh9Jupd_lwD5Si80PyVxOMI2xaGQiF0lbKJfD38Sh8frRpgelZVaK_gm834B6SLfxKdNsP04DsJqGKktODF_fZeaGFPH0', + dq: 'F90JPxevQYOlAgEH0TUt1-3_hyxY6cfPRU2HQBaahyWrtCWpaOzenKZnvGFZdg-BuLVKjCchq3G_70OLE-XDP_ol0UTJmDTT-WyuJQdEMpt_WFF9yJGoeIu8yohfeLatU-67ukjghJ0s9CBzNE_LrGEV6Cup3FXywpSYZAV3iqc', + e: 'AQAB', + kty: 'RSA', + n: 'xwQ72P9z9OYshiQ-ntDYaPnnfwG6u9JAdLMZ5o0dmjlcyrvwQRdoFIKPnO65Q8mh6F_LDSxjxa2Yzo_wdjhbPZLjfUJXgCzm54cClXzT5twzo7lzoAfaJlkTsoZc2HFWqmcri0BuzmTFLZx2Q7wYBm0pXHmQKF0V-C1O6NWfd4mfBhbM-I1tHYSpAMgarSm22WDMDx-WWI7TEzy2QhaBVaENW9BKaKkJklocAZCxk18WhR0fckIGiWiSM5FcU1PY2jfGsTmX505Ub7P5Dz75Ygqrutd5tFrcqyPAtPTFDk8X1InxkkUwpP3nFU5o50DGhwQolGYKPGtQ-ZtmbOfcWQ', + p: '5wC6nY6Ev5FqcLPCqn9fC6R9KUuBej6NaAVOKW7GXiOJAq2WrileGKfMc9kIny20zW3uWkRLm-O-3Yzze1zFpxmqvsvCxZ5ERVZ6leiNXSu3tez71ZZwp0O9gys4knjrI-9w46l_vFuRtjL6XEeFfHEZFaNJpz-lcnb3w0okrbM', + q: '3I1qeEDslZFB8iNfpKAdWtz_Wzm6-jayT_V6aIvhvMj5mnU-Xpj75zLPQSGa9wunMlOoZW9w1wDO1FVuDhwzeOJaTm-Ds0MezeC4U6nVGyyDHb4CUA3ml2tzt4yLrqGYMT7XbADSvuWYADHw79OFjEi4T3s3tJymhaBvy1ulv8M', + qi: 'wSbXte9PcPtr788e713KHQ4waE26CzoXx-JNOgN0iqJMN6C4_XJEX-cSvCZDf4rh7xpXN6SGLVd5ibIyDJi7bbi5EQ5AXjazPbLBjRthcGXsIuZ3AtQyR0CEWNSdM7EyM5TRdyZQ9kftfz9nI03guW3iKKASETqX2vh0Z8XRjyU', + use: 'sig', + }, { + crv: 'P-256', + d: 'K9xfPv773dZR22TVUB80xouzdF7qCg5cWjPjkHyv7Ws', + kty: 'EC', + use: 'sig', + x: 'FWZ9rSkLt6Dx9E3pxLybhdM6xgR5obGsj5_pqmnz5J4', + y: '_n8G69C-A2Xl4xUW2lF0i8ZGZnk_KPYrhv4GbTGu5G4', + }, + ], + }, ttl: { AccessToken: 3600, AuthorizationCode: 600, diff --git a/apps/backend/src/oidc/provider.ts b/apps/backend/src/oidc/provider.ts index cc725b9..aca144d 100644 --- a/apps/backend/src/oidc/provider.ts +++ b/apps/backend/src/oidc/provider.ts @@ -1,6 +1,6 @@ import { Provider } from 'oidc-provider'; import config from './config'; -const oidc = new Provider('http://localhost:4000', config); +const oidc = new Provider('http://localhost:3000', config); export default oidc; \ No newline at end of file diff --git a/apps/backend/src/trpc.ts b/apps/backend/src/trpc.ts index db54440..9e751a2 100644 --- a/apps/backend/src/trpc.ts +++ b/apps/backend/src/trpc.ts @@ -1,5 +1,6 @@ import { z } from 'zod' import { initTRPC } from '@trpc/server' +import { userRouter } from './user/user.trpc' const t = initTRPC.create() @@ -7,9 +8,7 @@ export const publicProcedure = t.procedure export const router = t.router export const appRouter = router({ - hello: publicProcedure.input(z.string().nullish()).query(({ input }) => { - return `Hello ${input ?? 'World'}!` - }), + user: userRouter }) export type AppRouter = typeof appRouter \ No newline at end of file diff --git a/apps/backend/src/user/userindex.ts b/apps/backend/src/user/user.index.ts similarity index 100% rename from apps/backend/src/user/userindex.ts rename to apps/backend/src/user/user.index.ts diff --git a/apps/backend/src/user/routes.ts b/apps/backend/src/user/user.rest.ts similarity index 57% rename from apps/backend/src/user/routes.ts rename to apps/backend/src/user/user.rest.ts index 51031a0..7cfb3ad 100644 --- a/apps/backend/src/user/routes.ts +++ b/apps/backend/src/user/user.rest.ts @@ -1,17 +1,17 @@ import { Hono } from "hono"; -import { createUser, searchUser } from "./userindex"; +import { createUser, searchUser } from "./user.index"; -const userRoute = new Hono(); +const userRest = new Hono(); -userRoute.post('/', async (c) => { +userRest.post('/', async (c) => { const user = await c.req.json(); const result = await createUser(user); return c.json(result); }); -userRoute.get('/search', async (c) => { +userRest.get('/search', async (c) => { const q = c.req.query('q') || ''; const result = await searchUser(q); return c.json(result.hits.hits); }); -export default userRoute; \ No newline at end of file +export default userRest; \ No newline at end of file diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index f089d25..ad497f7 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -1,5 +1,6 @@ export default async function Home() { + return