mirror of
https://github.com/logto-io/logto.git
synced 2025-03-10 22:22:45 -05:00
feat(core,schemas): prepare schemas for protected app custom domain (#5247)
This commit is contained in:
parent
ad0a83ae03
commit
ea407f19fa
3 changed files with 29 additions and 0 deletions
|
@ -20,6 +20,7 @@ export default class SystemContext {
|
|||
public storageProviderConfig?: StorageProviderData;
|
||||
public hostnameProviderConfig?: HostnameProviderData;
|
||||
public protectedAppConfigProviderConfig?: ProtectedAppConfigProviderData;
|
||||
public protectedAppHostnameProviderConfig?: HostnameProviderData;
|
||||
|
||||
async loadProviderConfigs(pool: CommonQueryMethods) {
|
||||
await Promise.all([
|
||||
|
@ -44,6 +45,13 @@ export default class SystemContext {
|
|||
protectedAppConfigProviderDataGuard
|
||||
);
|
||||
})(),
|
||||
(async () => {
|
||||
this.protectedAppHostnameProviderConfig = await this.loadConfig(
|
||||
pool,
|
||||
CloudflareKey.ProtectedAppHostnameProvider,
|
||||
hostnameProviderDataGuard
|
||||
);
|
||||
})(),
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import { z } from 'zod';
|
||||
|
||||
import { cloudflareDataGuard, domainDnsRecordsGuard, domainStatusGuard } from './custom-domain.js';
|
||||
|
||||
export const protectedAppMetadataGuard = z.object({
|
||||
/* The host of the site */
|
||||
host: z.string(),
|
||||
|
@ -13,6 +15,22 @@ export const protectedAppMetadataGuard = z.object({
|
|||
path: z.string(),
|
||||
})
|
||||
),
|
||||
/* Custom domain */
|
||||
customDomains: z
|
||||
.object({
|
||||
/* The domain name, e.g app.example.com */
|
||||
domain: z.string(),
|
||||
/* The status of the domain in Cloudflare */
|
||||
status: domainStatusGuard,
|
||||
/* The error message if any */
|
||||
error: z.string().nullable(),
|
||||
/* The DNS records of the domain */
|
||||
dnsRecords: domainDnsRecordsGuard,
|
||||
/* The remote Cloudflare data */
|
||||
cloudflareData: cloudflareDataGuard.nullable(),
|
||||
})
|
||||
.array()
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export type ProtectedAppMetadata = z.infer<typeof protectedAppMetadataGuard>;
|
||||
|
|
|
@ -168,11 +168,13 @@ export type ProtectedAppConfigProviderData = z.infer<typeof protectedAppConfigPr
|
|||
export enum CloudflareKey {
|
||||
HostnameProvider = 'cloudflareHostnameProvider',
|
||||
ProtectedAppConfigProvider = 'cloudflareProtectedAppConfigProvider',
|
||||
ProtectedAppHostnameProvider = 'cloudflareProtectedAppHostnameProvider',
|
||||
}
|
||||
|
||||
export type CloudflareType = {
|
||||
[CloudflareKey.HostnameProvider]: HostnameProviderData;
|
||||
[CloudflareKey.ProtectedAppConfigProvider]: ProtectedAppConfigProviderData;
|
||||
[CloudflareKey.ProtectedAppHostnameProvider]: HostnameProviderData;
|
||||
};
|
||||
|
||||
export const cloudflareGuard: Readonly<{
|
||||
|
@ -180,6 +182,7 @@ export const cloudflareGuard: Readonly<{
|
|||
}> = Object.freeze({
|
||||
[CloudflareKey.HostnameProvider]: hostnameProviderDataGuard,
|
||||
[CloudflareKey.ProtectedAppConfigProvider]: protectedAppConfigProviderDataGuard,
|
||||
[CloudflareKey.ProtectedAppHostnameProvider]: hostnameProviderDataGuard,
|
||||
});
|
||||
|
||||
// Summary
|
||||
|
|
Loading…
Add table
Reference in a new issue