0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-01-27 21:39:16 -05:00
logto/packages/core/src/oidc/utils.ts

36 lines
1 KiB
TypeScript
Raw Normal View History

import {
ApplicationType,
CustomClientMetadata,
customClientMetadataGuard,
OidcClientMetadata,
} from '@logto/schemas';
import { errors } from 'oidc-provider';
2021-08-18 00:24:00 +08:00
export const getApplicationTypeString = (type: ApplicationType) =>
type === ApplicationType.Native ? 'native' : 'web';
export const buildOidcClientMetadata = (metadata?: OidcClientMetadata): OidcClientMetadata => ({
redirectUris: [],
postLogoutRedirectUris: [],
...metadata,
2021-08-18 00:24:00 +08:00
});
export const validateCustomClientMetadata = (key: string, value: unknown) => {
const result = customClientMetadataGuard.pick({ [key]: true }).safeParse({ [key]: value });
if (!result.success) {
throw new errors.InvalidClientMetadata(key);
}
};
export const isOriginAllowed = (
origin: string,
customClientMetadata: CustomClientMetadata,
redirectUris: string[] = []
) => {
const { corsAllowedOrigins = [] } = customClientMetadata;
const redirectUriOrigins = redirectUris.map((uri) => new URL(uri).origin);
return [...corsAllowedOrigins, ...redirectUriOrigins].includes(origin);
};