mirror of
https://github.com/dokploy/dokploy.git
synced 2026-06-14 03:19:49 +00:00
51b5af55d0
- Updated the alert block in the HandleForwardAuth component to provide clearer requirements for deploying the authentication proxy. - Added a DnsHelperModal to assist with DNS configuration in the ForwardAuthServers component. - Refined API input schemas for forward authentication operations to improve type safety and clarity. - Removed the obsolete forward-auth SSO design document to streamline documentation. These changes improve the user experience and maintainability of the forward authentication feature across the application.
76 lines
2.1 KiB
TypeScript
76 lines
2.1 KiB
TypeScript
import { relations } from "drizzle-orm";
|
|
import { boolean, pgTable, text } from "drizzle-orm/pg-core";
|
|
import { nanoid } from "nanoid";
|
|
import { z } from "zod";
|
|
import { server } from "./server";
|
|
import { certificateType } from "./shared";
|
|
import { ssoProvider } from "./sso";
|
|
|
|
export const forwardAuthSettings = pgTable("forward_auth_settings", {
|
|
forwardAuthSettingsId: text("forwardAuthSettingsId")
|
|
.notNull()
|
|
.primaryKey()
|
|
.$defaultFn(() => nanoid()),
|
|
authDomain: text("authDomain").notNull(),
|
|
baseDomain: text("baseDomain").notNull(),
|
|
https: boolean("https").notNull().default(true),
|
|
certificateType: certificateType("certificateType")
|
|
.notNull()
|
|
.default("letsencrypt"),
|
|
customCertResolver: text("customCertResolver"),
|
|
providerId: text("providerId").references(() => ssoProvider.providerId, {
|
|
onDelete: "set null",
|
|
}),
|
|
serverId: text("serverId")
|
|
.unique()
|
|
.references(() => server.serverId, {
|
|
onDelete: "cascade",
|
|
}),
|
|
createdAt: text("createdAt")
|
|
.notNull()
|
|
.$defaultFn(() => new Date().toISOString()),
|
|
});
|
|
|
|
export const forwardAuthSettingsRelations = relations(
|
|
forwardAuthSettings,
|
|
({ one }) => ({
|
|
server: one(server, {
|
|
fields: [forwardAuthSettings.serverId],
|
|
references: [server.serverId],
|
|
}),
|
|
provider: one(ssoProvider, {
|
|
fields: [forwardAuthSettings.providerId],
|
|
references: [ssoProvider.providerId],
|
|
}),
|
|
}),
|
|
);
|
|
|
|
const domainRegex = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/;
|
|
|
|
export const apiForwardAuthServerTarget = z.object({
|
|
serverId: z.string().nullable(),
|
|
});
|
|
|
|
export const apiForwardAuthDomainTarget = z.object({
|
|
domainId: z.string().min(1),
|
|
});
|
|
|
|
export const apiSetForwardAuthSettings = z.object({
|
|
serverId: z.string().nullable(),
|
|
authDomain: z
|
|
.string()
|
|
.trim()
|
|
.toLowerCase()
|
|
.refine((v) => domainRegex.test(v), { message: "Invalid auth domain" }),
|
|
https: z.boolean().default(true),
|
|
certificateType: z
|
|
.enum(["none", "letsencrypt", "custom"])
|
|
.default("letsencrypt"),
|
|
customCertResolver: z.string().optional(),
|
|
});
|
|
|
|
export const apiDeployForwardAuthOnServer = z.object({
|
|
serverId: z.string().nullable(),
|
|
providerId: z.string().min(1),
|
|
});
|