feat(whitelabeling): implement public whitelabeling configuration retrieval

- Added a new service to fetch public whitelabeling configuration for unauthenticated contexts.
- Updated the whitelabeling router to utilize the new service for public requests.
- Enhanced license validation checks to ensure proper access control based on organization licenses.
This commit is contained in:
Mauricio Siu
2026-07-06 16:33:12 -06:00
parent 86f941d606
commit 8f9be1636c
3 changed files with 66 additions and 22 deletions

View File

@@ -1,5 +1,7 @@
import {
getPublicWhitelabelingConfig,
getWebServerSettings,
hasValidLicense,
IS_CLOUD,
updateWebServerSettings,
} from "@dokploy/server";
@@ -13,10 +15,13 @@ import {
} from "../../trpc";
export const whitelabelingRouter = createTRPCRouter({
get: protectedProcedure.query(async () => {
get: protectedProcedure.query(async ({ ctx }) => {
if (IS_CLOUD) {
return null;
}
if (!(await hasValidLicense(ctx.session.activeOrganizationId))) {
return null;
}
const settings = await getWebServerSettings();
return settings?.whitelabelingConfig ?? null;
}),
@@ -82,25 +87,5 @@ export const whitelabelingRouter = createTRPCRouter({
// Public endpoint only for unauthenticated pages (login, register, error)
// Returns only the fields needed for public pages
getPublic: publicProcedure.query(async () => {
if (IS_CLOUD) {
return null;
}
const settings = await getWebServerSettings();
const config = settings?.whitelabelingConfig;
if (!config) return null;
return {
appName: config.appName,
appDescription: config.appDescription,
logoUrl: config.logoUrl,
loginLogoUrl: config.loginLogoUrl,
faviconUrl: config.faviconUrl,
customCss: config.customCss,
metaTitle: config.metaTitle,
errorPageTitle: config.errorPageTitle,
errorPageDescription: config.errorPageDescription,
footerText: config.footerText,
};
}),
getPublic: publicProcedure.query(() => getPublicWhitelabelingConfig()),
});