archetecture security fix
This commit is contained in:
+361
@@ -0,0 +1,361 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.menuCompanyParamSchema = exports.menuPlanParamSchema = exports.menuItemIdParamSchema = exports.menuAuditLogQuerySchema = exports.menuPreviewSchema = exports.menuCompanyAssignmentsSchema = exports.menuPlanAssignmentsSchema = exports.menuItemStatusSchema = exports.menuItemSchema = exports.promotionIdParamSchema = exports.planFeatureIdParamSchema = exports.promotionUpdateSchema = exports.promotionCreateSchema = exports.planFeatureUpdateSchema = exports.planFeatureCreateSchema = exports.pricingUpdateSchema = exports.homepageUpdateSchema = exports.billingRefundSchema = exports.billingCreditNoteSchema = exports.billingReasonSchema = exports.retryBillingInvoiceSchema = exports.payBillingInvoiceSchema = exports.createBillingInvoiceSchema = exports.billingLineItemInputSchema = exports.billingAccountUpdateSchema = exports.invoiceIdParamSchema = exports.billingAccountIdParamSchema = exports.companyIdParamSchema = exports.idParamSchema = exports.marketplaceHomepageConfigSchema = exports.adminCompanyUpdateSchema = exports.companyStatusSchema = exports.adminPermissionsSchema = exports.adminRoleSchema = exports.updateAdminSchema = exports.createAdminSchema = exports.permissionSchema = exports.invoicesQuerySchema = exports.billingQuerySchema = exports.notificationsQuerySchema = exports.auditLogQuerySchema = exports.rentersQuerySchema = exports.companiesQuerySchema = exports.totpVerifySchema = exports.resetPasswordSchema = exports.forgotPasswordSchema = exports.loginSchema = void 0;
|
||||
const zod_1 = require("zod");
|
||||
exports.loginSchema = zod_1.z.object({
|
||||
email: zod_1.z.string().email().max(255).trim().toLowerCase(),
|
||||
password: zod_1.z.string().max(128),
|
||||
totpCode: zod_1.z.string().length(6).optional(),
|
||||
recoveryCode: zod_1.z.string().min(8).max(32).optional(),
|
||||
});
|
||||
exports.forgotPasswordSchema = zod_1.z.object({
|
||||
email: zod_1.z.string().email().max(255).trim().toLowerCase(),
|
||||
});
|
||||
exports.resetPasswordSchema = zod_1.z.object({
|
||||
token: zod_1.z.string().min(1),
|
||||
password: zod_1.z.string().min(8).max(128),
|
||||
});
|
||||
exports.totpVerifySchema = zod_1.z.object({
|
||||
code: zod_1.z.string().length(6),
|
||||
});
|
||||
exports.companiesQuerySchema = zod_1.z.object({
|
||||
q: zod_1.z.string().optional(),
|
||||
status: zod_1.z.string().optional(),
|
||||
plan: zod_1.z.string().optional(),
|
||||
page: zod_1.z.coerce.number().int().min(1).default(1),
|
||||
pageSize: zod_1.z.coerce.number().int().min(1).max(100).default(20),
|
||||
});
|
||||
exports.rentersQuerySchema = zod_1.z.object({
|
||||
q: zod_1.z.string().optional(),
|
||||
blocked: zod_1.z.string().optional(),
|
||||
page: zod_1.z.coerce.number().int().min(1).default(1),
|
||||
pageSize: zod_1.z.coerce.number().int().min(1).max(100).default(20),
|
||||
});
|
||||
exports.auditLogQuerySchema = zod_1.z.object({
|
||||
adminId: zod_1.z.string().optional(),
|
||||
action: zod_1.z.string().optional(),
|
||||
companyId: zod_1.z.string().optional(),
|
||||
entityId: zod_1.z.string().optional(),
|
||||
page: zod_1.z.coerce.number().int().min(1).default(1),
|
||||
pageSize: zod_1.z.coerce.number().int().min(1).max(100).default(50),
|
||||
});
|
||||
exports.notificationsQuerySchema = zod_1.z.object({
|
||||
channel: zod_1.z.string().optional(),
|
||||
status: zod_1.z.string().optional(),
|
||||
companyId: zod_1.z.string().optional(),
|
||||
page: zod_1.z.coerce.number().int().min(1).default(1),
|
||||
pageSize: zod_1.z.coerce.number().int().min(1).max(200).default(50),
|
||||
});
|
||||
exports.billingQuerySchema = zod_1.z.object({
|
||||
q: zod_1.z.string().optional(),
|
||||
status: zod_1.z.string().optional(),
|
||||
plan: zod_1.z.string().optional(),
|
||||
page: zod_1.z.coerce.number().int().min(1).default(1),
|
||||
pageSize: zod_1.z.coerce.number().int().min(1).max(100).default(20),
|
||||
});
|
||||
exports.invoicesQuerySchema = zod_1.z.object({
|
||||
page: zod_1.z.coerce.number().int().min(1).default(1),
|
||||
pageSize: zod_1.z.coerce.number().int().min(1).max(100).default(20),
|
||||
});
|
||||
exports.permissionSchema = zod_1.z.object({
|
||||
resource: zod_1.z.enum(['COMPANIES', 'COMPANY_EMPLOYEES', 'SUBSCRIPTIONS', 'PAYMENTS', 'OFFERS', 'RENTERS', 'ADMIN_USERS', 'AUDIT_LOGS', 'PLATFORM_METRICS']),
|
||||
actions: zod_1.z.array(zod_1.z.enum(['READ', 'CREATE', 'UPDATE', 'DELETE', 'SUSPEND', 'IMPERSONATE'])).min(1),
|
||||
});
|
||||
exports.createAdminSchema = zod_1.z.object({
|
||||
email: zod_1.z.string().email().trim().toLowerCase(),
|
||||
firstName: zod_1.z.string().min(1).max(100).trim(),
|
||||
lastName: zod_1.z.string().min(1).max(100).trim(),
|
||||
role: zod_1.z.enum(['SUPER_ADMIN', 'ADMIN', 'SUPPORT', 'FINANCE', 'VIEWER']),
|
||||
password: zod_1.z.string().min(8),
|
||||
permissions: zod_1.z.array(exports.permissionSchema).optional(),
|
||||
});
|
||||
exports.updateAdminSchema = zod_1.z.object({
|
||||
email: zod_1.z.string().email().trim().toLowerCase().optional(),
|
||||
firstName: zod_1.z.string().min(1).max(100).trim().optional(),
|
||||
lastName: zod_1.z.string().min(1).max(100).trim().optional(),
|
||||
role: zod_1.z.enum(['SUPER_ADMIN', 'ADMIN', 'SUPPORT', 'FINANCE', 'VIEWER']).optional(),
|
||||
password: zod_1.z.string().min(8).optional(),
|
||||
isActive: zod_1.z.boolean().optional(),
|
||||
});
|
||||
exports.adminRoleSchema = zod_1.z.object({
|
||||
role: zod_1.z.enum(['SUPER_ADMIN', 'ADMIN', 'SUPPORT', 'FINANCE', 'VIEWER']),
|
||||
});
|
||||
exports.adminPermissionsSchema = zod_1.z.object({
|
||||
permissions: zod_1.z.array(exports.permissionSchema),
|
||||
});
|
||||
exports.companyStatusSchema = zod_1.z.object({
|
||||
status: zod_1.z.enum(['ACTIVE', 'SUSPENDED', 'CANCELLED']),
|
||||
reason: zod_1.z.string().optional(),
|
||||
});
|
||||
const nullableString = zod_1.z.union([zod_1.z.string(), zod_1.z.null()]).optional();
|
||||
const nullableEmail = zod_1.z.union([zod_1.z.string().email(), zod_1.z.null()]).optional();
|
||||
const nullableUrl = zod_1.z.union([zod_1.z.string().url(), zod_1.z.null()]).optional();
|
||||
const nullableDate = zod_1.z.union([zod_1.z.string().datetime(), zod_1.z.string().regex(/^\d{4}-\d{2}-\d{2}$/), zod_1.z.null()]).optional();
|
||||
exports.adminCompanyUpdateSchema = zod_1.z.object({
|
||||
company: zod_1.z.object({
|
||||
name: zod_1.z.string().min(1).optional(), slug: zod_1.z.string().min(1).optional(),
|
||||
email: zod_1.z.string().email().optional(), phone: nullableString,
|
||||
status: zod_1.z.enum(['PENDING', 'TRIALING', 'ACTIVE', 'PAST_DUE', 'SUSPENDED', 'CANCELLED']).optional(),
|
||||
subscriptionPaymentRef: nullableString,
|
||||
address: zod_1.z.object({
|
||||
streetAddress: nullableString,
|
||||
city: nullableString,
|
||||
country: nullableString,
|
||||
zipCode: nullableString,
|
||||
legalName: nullableString,
|
||||
legalForm: nullableString,
|
||||
companyEmail: nullableEmail,
|
||||
managerName: nullableString,
|
||||
iceNumber: nullableString,
|
||||
operatingLicenseNumber: nullableString,
|
||||
operatingLicenseIssuedAt: nullableString,
|
||||
operatingLicenseIssuedBy: nullableString,
|
||||
fax: nullableString,
|
||||
yearsActive: nullableString,
|
||||
representativeName: nullableString,
|
||||
representativeTitle: nullableString,
|
||||
responsibleName: nullableString,
|
||||
responsibleRole: nullableString,
|
||||
responsibleIdentityNumber: nullableString,
|
||||
responsibleQualification: nullableString,
|
||||
responsiblePhone: nullableString,
|
||||
responsibleEmail: nullableEmail,
|
||||
}).optional(),
|
||||
}).optional(),
|
||||
subscription: zod_1.z.object({
|
||||
plan: zod_1.z.enum(['STARTER', 'GROWTH', 'PRO']).optional(),
|
||||
billingPeriod: zod_1.z.enum(['MONTHLY', 'ANNUAL']).optional(),
|
||||
status: zod_1.z.enum(['TRIALING', 'ACTIVE', 'PAST_DUE', 'CANCELLED', 'UNPAID']).optional(),
|
||||
currency: zod_1.z.literal('MAD').optional(),
|
||||
trialStartAt: nullableDate, trialEndAt: nullableDate,
|
||||
currentPeriodStart: nullableDate, currentPeriodEnd: nullableDate,
|
||||
cancelledAt: nullableDate, cancelAtPeriodEnd: zod_1.z.boolean().optional(),
|
||||
}).optional(),
|
||||
brand: zod_1.z.object({
|
||||
displayName: zod_1.z.string().min(1).optional(), tagline: nullableString,
|
||||
subdomain: zod_1.z.string().min(1).optional(), customDomain: nullableString,
|
||||
publicEmail: nullableEmail, publicPhone: nullableString, publicAddress: nullableString,
|
||||
publicCity: nullableString, publicCountry: nullableString, websiteUrl: nullableUrl,
|
||||
whatsappNumber: nullableString, defaultLocale: zod_1.z.string().min(2).optional(),
|
||||
defaultCurrency: zod_1.z.literal('MAD').optional(),
|
||||
isListedOnMarketplace: zod_1.z.boolean().optional(),
|
||||
homePageConfig: zod_1.z.any().optional(),
|
||||
menuConfig: zod_1.z.any().optional(),
|
||||
}).optional(),
|
||||
contractSettings: zod_1.z.object({
|
||||
legalName: nullableString, registrationNumber: nullableString, taxId: nullableString,
|
||||
terms: zod_1.z.string().optional(),
|
||||
fuelPolicyType: zod_1.z.enum(['FULL_TO_FULL', 'FULL_TO_EMPTY', 'SAME_TO_SAME', 'PREPAID', 'FREE']).optional(),
|
||||
lateFeePerHour: zod_1.z.number().int().nullable().optional(), taxRate: zod_1.z.number().nullable().optional(),
|
||||
signatureRequired: zod_1.z.boolean().optional(), showTax: zod_1.z.boolean().optional(),
|
||||
}).optional(),
|
||||
accountingSettings: zod_1.z.object({
|
||||
reportingPeriod: zod_1.z.enum(['WEEKLY', 'MONTHLY', 'QUARTERLY', 'ANNUAL']).optional(),
|
||||
fiscalYearStart: zod_1.z.number().int().min(1).max(12).optional(),
|
||||
currency: zod_1.z.literal('MAD').optional(),
|
||||
accountantEmail: nullableEmail, accountantName: nullableString,
|
||||
autoSendReport: zod_1.z.boolean().optional(),
|
||||
reportFormat: zod_1.z.enum(['PDF', 'CSV', 'BOTH']).optional(),
|
||||
}).optional(),
|
||||
});
|
||||
const marketplaceMetricSchema = zod_1.z.object({ value: zod_1.z.string().min(1), label: zod_1.z.string().min(1) });
|
||||
const marketplacePillarSchema = zod_1.z.object({ title: zod_1.z.string().min(1), body: zod_1.z.string().min(1) });
|
||||
const marketplaceStepSchema = zod_1.z.object({ step: zod_1.z.string().min(1), title: zod_1.z.string().min(1), body: zod_1.z.string().min(1) });
|
||||
const marketplaceSectionSchema = zod_1.z.enum(['hero', 'surface', 'pillars', 'audiences', 'features', 'steps', 'closing']);
|
||||
const marketplaceHomepageContentSchema = zod_1.z.object({
|
||||
sections: zod_1.z.array(marketplaceSectionSchema).min(1),
|
||||
heroKicker: zod_1.z.string().min(1), heroTitle: zod_1.z.string().min(1), heroBody: zod_1.z.string().min(1),
|
||||
startTrial: zod_1.z.string().min(1), exploreVehicles: zod_1.z.string().min(1),
|
||||
surfaceLabel: zod_1.z.string().min(1), surfaceTitle: zod_1.z.string().min(1), surfaceBody: zod_1.z.string().min(1),
|
||||
liveLabel: zod_1.z.string().min(1), trustedFleets: zod_1.z.string().min(1), brandedFlows: zod_1.z.string().min(1), multiTenant: zod_1.z.string().min(1),
|
||||
companyKicker: zod_1.z.string().min(1), companyTitle: zod_1.z.string().min(1), companyBody: zod_1.z.string().min(1),
|
||||
renterKicker: zod_1.z.string().min(1), renterTitle: zod_1.z.string().min(1), renterBody: zod_1.z.string().min(1),
|
||||
pillars: zod_1.z.array(marketplacePillarSchema).length(3),
|
||||
metrics: zod_1.z.array(marketplaceMetricSchema).length(3),
|
||||
featureLabel: zod_1.z.string().min(1), features: zod_1.z.array(zod_1.z.string().min(1)).min(1),
|
||||
stepsTitle: zod_1.z.string().min(1), steps: zod_1.z.array(marketplaceStepSchema).length(3), stepLabel: zod_1.z.string().min(1),
|
||||
readyKicker: zod_1.z.string().min(1), readyTitle: zod_1.z.string().min(1), readyBody: zod_1.z.string().min(1),
|
||||
viewPricing: zod_1.z.string().min(1), createWorkspace: zod_1.z.string().min(1),
|
||||
});
|
||||
exports.marketplaceHomepageConfigSchema = zod_1.z.object({
|
||||
en: marketplaceHomepageContentSchema,
|
||||
fr: marketplaceHomepageContentSchema,
|
||||
ar: marketplaceHomepageContentSchema,
|
||||
});
|
||||
exports.idParamSchema = zod_1.z.object({
|
||||
id: zod_1.z.string().min(1),
|
||||
});
|
||||
exports.companyIdParamSchema = zod_1.z.object({
|
||||
companyId: zod_1.z.string().min(1),
|
||||
});
|
||||
exports.billingAccountIdParamSchema = zod_1.z.object({
|
||||
billingAccountId: zod_1.z.string().min(1),
|
||||
});
|
||||
exports.invoiceIdParamSchema = zod_1.z.object({
|
||||
invoiceId: zod_1.z.string().min(1),
|
||||
});
|
||||
exports.billingAccountUpdateSchema = zod_1.z.object({
|
||||
legalName: zod_1.z.string().min(1).max(255).optional(),
|
||||
billingEmail: zod_1.z.string().email().optional(),
|
||||
billingAddress: zod_1.z.any().optional(),
|
||||
taxId: zod_1.z.union([zod_1.z.string().max(120), zod_1.z.null()]).optional(),
|
||||
taxExempt: zod_1.z.boolean().optional(),
|
||||
invoiceTerms: zod_1.z.enum(['DUE_ON_RECEIPT', 'NET_7', 'NET_15', 'NET_30', 'NET_45', 'NET_60']).optional(),
|
||||
netTermsDays: zod_1.z.number().int().min(0).max(365).optional(),
|
||||
});
|
||||
exports.billingLineItemInputSchema = zod_1.z.object({
|
||||
type: zod_1.z.enum([
|
||||
'SUBSCRIPTION_FEE',
|
||||
'SEAT_FEE',
|
||||
'USAGE_FEE',
|
||||
'SETUP_FEE',
|
||||
'DISCOUNT',
|
||||
'TAX',
|
||||
'CREDIT',
|
||||
'PRORATION',
|
||||
'REFUND_ADJUSTMENT',
|
||||
'MANUAL_ADJUSTMENT',
|
||||
'PROFESSIONAL_SERVICES',
|
||||
'CANCELLATION_FEE',
|
||||
]),
|
||||
description: zod_1.z.string().min(1).max(255),
|
||||
quantity: zod_1.z.number().int().positive().max(100000),
|
||||
unitAmount: zod_1.z.number().int(),
|
||||
periodStart: nullableDate,
|
||||
periodEnd: nullableDate,
|
||||
});
|
||||
exports.createBillingInvoiceSchema = zod_1.z.object({
|
||||
subscriptionId: zod_1.z.union([zod_1.z.string(), zod_1.z.null()]).optional(),
|
||||
invoiceType: zod_1.z.enum([
|
||||
'SUBSCRIPTION_INITIAL',
|
||||
'SUBSCRIPTION_RENEWAL',
|
||||
'TRIAL_CONVERSION',
|
||||
'SUBSCRIPTION_UPGRADE',
|
||||
'SUBSCRIPTION_DOWNGRADE_CREDIT',
|
||||
'USAGE_BASED',
|
||||
'ONE_TIME',
|
||||
'MANUAL',
|
||||
'CORRECTION',
|
||||
'CANCELLATION_FEE',
|
||||
]),
|
||||
currency: zod_1.z.string().min(3).max(8).optional(),
|
||||
dueAt: nullableDate,
|
||||
isSubscriptionBlocking: zod_1.z.boolean().optional(),
|
||||
adminReason: zod_1.z.union([zod_1.z.string().max(500), zod_1.z.null()]).optional(),
|
||||
lineItems: zod_1.z.array(exports.billingLineItemInputSchema).min(1),
|
||||
});
|
||||
exports.payBillingInvoiceSchema = zod_1.z.object({
|
||||
amount: zod_1.z.number().int().positive().optional(),
|
||||
paymentMethodId: zod_1.z.union([zod_1.z.string(), zod_1.z.null()]).optional(),
|
||||
providerPaymentId: zod_1.z.union([zod_1.z.string(), zod_1.z.null()]).optional(),
|
||||
});
|
||||
exports.retryBillingInvoiceSchema = zod_1.z.object({
|
||||
paymentMethodId: zod_1.z.union([zod_1.z.string(), zod_1.z.null()]).optional(),
|
||||
});
|
||||
exports.billingReasonSchema = zod_1.z.object({
|
||||
reason: zod_1.z.string().min(1).max(500),
|
||||
});
|
||||
exports.billingCreditNoteSchema = zod_1.z.object({
|
||||
amount: zod_1.z.number().int().positive(),
|
||||
reason: zod_1.z.string().min(1).max(500),
|
||||
});
|
||||
exports.billingRefundSchema = zod_1.z.object({
|
||||
amount: zod_1.z.number().int().positive(),
|
||||
reason: zod_1.z.string().min(1).max(500),
|
||||
});
|
||||
exports.homepageUpdateSchema = zod_1.z.object({
|
||||
homepage: exports.marketplaceHomepageConfigSchema,
|
||||
});
|
||||
exports.pricingUpdateSchema = zod_1.z.object({
|
||||
entries: zod_1.z.array(zod_1.z.object({
|
||||
plan: zod_1.z.enum(['STARTER', 'GROWTH', 'PRO']),
|
||||
billingPeriod: zod_1.z.enum(['MONTHLY', 'ANNUAL']),
|
||||
amount: zod_1.z.number().int().positive(),
|
||||
})).min(1),
|
||||
});
|
||||
const planFeatureSchema = zod_1.z.object({
|
||||
plan: zod_1.z.enum(['STARTER', 'GROWTH', 'PRO']),
|
||||
label: zod_1.z.string().min(1).max(120),
|
||||
sortOrder: zod_1.z.number().int().min(0).default(0),
|
||||
});
|
||||
exports.planFeatureCreateSchema = planFeatureSchema;
|
||||
exports.planFeatureUpdateSchema = planFeatureSchema.partial();
|
||||
exports.promotionCreateSchema = zod_1.z.object({
|
||||
code: zod_1.z.string().min(2).max(30).regex(/^[A-Z0-9_-]+$/, 'Code must be uppercase A-Z, 0-9, _ or -'),
|
||||
name: zod_1.z.string().min(1).max(100),
|
||||
description: zod_1.z.string().max(500).optional(),
|
||||
discountType: zod_1.z.enum(['PERCENTAGE', 'FIXED']),
|
||||
discountValue: zod_1.z.number().int().positive(),
|
||||
plans: zod_1.z.array(zod_1.z.enum(['STARTER', 'GROWTH', 'PRO'])),
|
||||
periods: zod_1.z.array(zod_1.z.enum(['MONTHLY', 'ANNUAL'])),
|
||||
maxUses: zod_1.z.number().int().positive().nullable().optional(),
|
||||
validFrom: zod_1.z.string().datetime(),
|
||||
validUntil: zod_1.z.string().datetime().nullable().optional(),
|
||||
isActive: zod_1.z.boolean().default(true),
|
||||
});
|
||||
exports.promotionUpdateSchema = exports.promotionCreateSchema.partial();
|
||||
exports.planFeatureIdParamSchema = zod_1.z.object({ featureId: zod_1.z.string().min(1) });
|
||||
exports.promotionIdParamSchema = zod_1.z.object({ promotionId: zod_1.z.string().min(1) });
|
||||
const employeeRoleSchema = zod_1.z.enum(['OWNER', 'MANAGER', 'AGENT']);
|
||||
const planSchema = zod_1.z.enum(['STARTER', 'GROWTH', 'PRO']);
|
||||
const menuItemTypeSchema = zod_1.z.enum(['INTERNAL_PAGE', 'EXTERNAL_LINK', 'PARENT_MENU', 'SECTION_LABEL', 'DIVIDER']);
|
||||
exports.menuItemSchema = zod_1.z.object({
|
||||
systemKey: zod_1.z.string().trim().min(1).max(120).optional().nullable(),
|
||||
label: zod_1.z.string().trim().min(1).max(120),
|
||||
itemType: menuItemTypeSchema,
|
||||
routeOrUrl: zod_1.z.string().trim().max(400).optional().nullable(),
|
||||
icon: zod_1.z.string().trim().max(120).optional().nullable(),
|
||||
parentId: zod_1.z.string().trim().min(1).optional().nullable(),
|
||||
displayOrder: zod_1.z.number().int().min(0).default(0),
|
||||
openInNewTab: zod_1.z.boolean().default(false),
|
||||
isRequired: zod_1.z.boolean().default(false),
|
||||
isActive: zod_1.z.boolean().default(true),
|
||||
roles: zod_1.z.array(employeeRoleSchema).default([]),
|
||||
subscriptionPlans: zod_1.z.array(zod_1.z.object({
|
||||
plan: planSchema,
|
||||
displayOrder: zod_1.z.number().int().min(0).optional(),
|
||||
isActive: zod_1.z.boolean().optional(),
|
||||
})).default([]),
|
||||
companyAssignments: zod_1.z.array(zod_1.z.object({
|
||||
companyId: zod_1.z.string().trim().min(1),
|
||||
displayOrder: zod_1.z.number().int().min(0).optional(),
|
||||
isActive: zod_1.z.boolean().optional(),
|
||||
})).default([]),
|
||||
});
|
||||
exports.menuItemStatusSchema = zod_1.z.object({
|
||||
isActive: zod_1.z.boolean(),
|
||||
});
|
||||
exports.menuPlanAssignmentsSchema = zod_1.z.object({
|
||||
assignments: zod_1.z.array(zod_1.z.object({
|
||||
plan: planSchema,
|
||||
displayOrder: zod_1.z.number().int().min(0).optional(),
|
||||
isActive: zod_1.z.boolean().optional(),
|
||||
})).min(1),
|
||||
});
|
||||
exports.menuCompanyAssignmentsSchema = zod_1.z.object({
|
||||
assignments: zod_1.z.array(zod_1.z.object({
|
||||
companyId: zod_1.z.string().trim().min(1),
|
||||
displayOrder: zod_1.z.number().int().min(0).optional(),
|
||||
isActive: zod_1.z.boolean().optional(),
|
||||
})).min(1),
|
||||
});
|
||||
exports.menuPreviewSchema = zod_1.z.object({
|
||||
companyId: zod_1.z.string().trim().min(1),
|
||||
role: employeeRoleSchema,
|
||||
});
|
||||
exports.menuAuditLogQuerySchema = zod_1.z.object({
|
||||
page: zod_1.z.coerce.number().int().min(1).default(1),
|
||||
pageSize: zod_1.z.coerce.number().int().min(1).max(100).default(20),
|
||||
});
|
||||
exports.menuItemIdParamSchema = zod_1.z.object({
|
||||
id: zod_1.z.string().min(1),
|
||||
});
|
||||
exports.menuPlanParamSchema = zod_1.z.object({
|
||||
id: zod_1.z.string().min(1),
|
||||
plan: planSchema,
|
||||
});
|
||||
exports.menuCompanyParamSchema = zod_1.z.object({
|
||||
id: zod_1.z.string().min(1),
|
||||
companyId: zod_1.z.string().min(1),
|
||||
});
|
||||
//# sourceMappingURL=admin.schemas.js.map
|
||||
Reference in New Issue
Block a user