From 2140a4914304a5bc6fa106afbda672d3f2ca99bc Mon Sep 17 00:00:00 2001 From: Leonardo Viva Date: Fri, 11 Oct 2024 16:19:46 -0300 Subject: [PATCH] feat: info route to serve logo url --- src/imports/auth/info/index.ts | 2 +- src/imports/model/Namespace.ts | 1 + src/server/routes/api/no-auth/index.ts | 30 ++++++++++++++++++++++++++ src/server/routes/index.ts | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/server/routes/api/no-auth/index.ts diff --git a/src/imports/auth/info/index.ts b/src/imports/auth/info/index.ts index 688bad63..b453df07 100644 --- a/src/imports/auth/info/index.ts +++ b/src/imports/auth/info/index.ts @@ -19,7 +19,7 @@ interface UserInfoResponse { name?: string; namespace?: { _id: string; - logoURL: string; + logoURL?: string; siteURL: string; title: string; }; diff --git a/src/imports/model/Namespace.ts b/src/imports/model/Namespace.ts index 6104545a..3967717a 100644 --- a/src/imports/model/Namespace.ts +++ b/src/imports/model/Namespace.ts @@ -33,6 +33,7 @@ export const NamespaceSchema = z trackUserGeolocation: z.boolean().optional(), loginExpiration: z.number().optional(), dateFormat: z.string().optional(), + logoURL: z.string().optional(), storage: z.discriminatedUnion('type', [S3Storage, FSStorage]).optional(), RocketChat: z diff --git a/src/server/routes/api/no-auth/index.ts b/src/server/routes/api/no-auth/index.ts new file mode 100644 index 00000000..96158b23 --- /dev/null +++ b/src/server/routes/api/no-auth/index.ts @@ -0,0 +1,30 @@ +import { FastifyPluginCallback } from 'fastify'; +import fp from 'fastify-plugin'; + +import { MetaObject } from '@imports/model/MetaObject'; +import { logger } from '@imports/utils/logger'; + +const translationApi: FastifyPluginCallback = async fastify => { + fastify.get<{ Querystring: { asImage?: string } }>('/api/info/logo', async (req, reply) => { + const asImage = req.query.asImage != null; + + try { + const { logoURL } = MetaObject.Namespace; + if (logoURL == null) { + return reply.status(404).send('Logo url not found'); + } + + if (asImage) { + const response = await fetch(logoURL); + return reply.send(response.body); + } + + return reply.send({ success: true, data: logoURL }); + } catch (error) { + logger.error(error, `Error getting logo url`); + return reply.status(500).send('Internal server error'); + } + }); +}; + +export default fp(translationApi); diff --git a/src/server/routes/index.ts b/src/server/routes/index.ts index fd454dc5..d13afbb1 100644 --- a/src/server/routes/index.ts +++ b/src/server/routes/index.ts @@ -13,6 +13,7 @@ import formApi from './api/form'; import listViewApi from './api/list-view'; import mainMenuApi from './api/menu/main'; import metasByDocumentApi from './api/metas-by-document'; +import noAuth from './api/no-auth'; import translatioApi from './api/translation'; import authApi from './rest/auth/authApi'; import changeUserApi from './rest/changeUser/changeUserApi'; @@ -68,6 +69,7 @@ fastify.register(file2Api); fastify.register(menuApi); fastify.register(processApi); fastify.register(rocketchatApi); +fastify.register(noAuth); if (process.env.UI_PROXY === 'true') { fastify.register(proxy, { upstream: process.env.UI_PROXY_URL ?? 'http://localhost:3000',