Skip to content

Commit

Permalink
feat(pci.private-registry): add schema folder
Browse files Browse the repository at this point in the history
ref: TAPC-2320
Signed-off-by: Pierre-Philippe <[email protected]>
  • Loading branch information
Pierre-Philippe committed Jan 21, 2025
1 parent f347154 commit e79a2ae
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { useEffect } from 'react';
import { useMutationState } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { useParams } from 'react-router-dom';
import * as z from 'zod';

import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming';
import { useForm, FormProvider } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
Expand All @@ -25,60 +25,8 @@ import { useDatagridColumn } from '@/pages/CIDR/useDatagridColumn';
import Filters from '@/components/CIDR/Filters.component';
import { getRegistryQueyPrefixWithId } from '@/api/hooks/useIpRestrictions';
import useDataGridContext from '@/pages/CIDR/useDatagridContext';
import { FilterRestrictionsEnum } from '@/types';

const schemaAddCidr = (dataCIDR: string[], isUpdating: boolean) =>
z.object({
description: z.string().optional(),
ipBlock: z
.string()
.trim()
.transform((value) => {
try {
z.string()
.cidr()
.parse(value);
} catch (err) {
return `${value}/32`;
}
return value;
})
.superRefine((value, ctx) => {
try {
z.string()
.cidr()
.parse(value);
} catch (err) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: 'private_registry_cidr_validation_ipBlock',
});
}
if (!isUpdating) {
// verify duplication cidr
const existingIpBlocks = dataCIDR.map((item) => item);
if (existingIpBlocks.includes(value)) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: 'private_registry_cidr_already_exist',
});
}
}
}),
authorization: z
.array(
z.enum([
FilterRestrictionsEnum.MANAGEMENT,
FilterRestrictionsEnum.REGISTRY,
]),
)
.default([])
.refine((auth) => auth.length > 0, {
message: 'private_registry_cidr_validation_authorization',
}),
});

export type ConfirmCIDRSchemaType = z.infer<ReturnType<typeof schemaAddCidr>>;
import { ConfirmCIDRSchemaType } from '@/types';
import { schemaAddCidr } from '@/schema/formSchema';

export default function CIDR() {
const { t } = useTranslation(['ip-restrictions', 'common']);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import * as z from 'zod';
import { FilterRestrictionsEnum } from '@/types';

export const schemaAddCidr = (dataCIDR: string[], isUpdating: boolean) =>
z.object({
description: z.string().optional(),
ipBlock: z
.string()
.trim()
.transform((value) => {
try {
z.string()
.cidr()
.parse(value);
} catch (err) {
return `${value}/32`;
}
return value;
})
.superRefine((value, ctx) => {
try {
z.string()
.cidr()
.parse(value);
} catch (err) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: 'private_registry_cidr_validation_ipBlock',
});
}
if (!isUpdating) {
// verify duplication cidr
const existingIpBlocks = dataCIDR.map((item) => item);
if (existingIpBlocks.includes(value)) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: 'private_registry_cidr_already_exist',
});
}
}
}),
authorization: z
.array(
z.enum([
FilterRestrictionsEnum.MANAGEMENT,
FilterRestrictionsEnum.REGISTRY,
]),
)
.default([])
.refine((auth) => auth.length > 0, {
message: 'private_registry_cidr_validation_authorization',
}),
});
5 changes: 5 additions & 0 deletions packages/manager/apps/pci-private-registry/src/types/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import z from 'zod';
import { schemaAddCidr } from '@/schema/formSchema';

export type FilterRestrictionsServer = 'management' | 'registry';

export enum FilterRestrictionsEnum {
Expand Down Expand Up @@ -31,3 +34,5 @@ export type TIPRestrictionsDefault = TIPRestrictions & TIPRestrictionsMethod;
export type TIPRestrictionsData = TIPRestrictions &
TIPRestrictionsDraft &
TIPRestrictionsMethod;

export type ConfirmCIDRSchemaType = z.infer<ReturnType<typeof schemaAddCidr>>;

0 comments on commit e79a2ae

Please sign in to comment.