Files
EMS-ESP32/interface/src/validators/ap.ts
2024-03-20 23:57:19 +01:00

31 lines
1.4 KiB
TypeScript

import Schema from 'async-validator';
import { IP_ADDRESS_VALIDATOR } from './shared';
import type { APSettingsType } from 'types';
import { isAPEnabled } from 'framework/ap/APSettings';
export const createAPSettingsValidator = (apSettings: APSettingsType) =>
new Schema({
provision_mode: { required: true, message: 'Please provide a provision mode' },
...(isAPEnabled(apSettings) && {
ssid: [
{ required: true, message: 'Please provide an SSID' },
{ type: 'string', max: 32, message: 'SSID must be 32 characters or less' }
],
password: [
{ required: true, message: 'Please provide an access point password' },
{ type: 'string', min: 8, max: 64, message: 'Password must be 8-64 characters' }
],
channel: [
{ required: true, message: 'Please provide a network channel' },
{ type: 'number', message: 'Channel must be between 1 and 14' }
],
max_clients: [
{ required: true, message: 'Please specify a value for max clients' },
{ type: 'number', min: 1, max: 9, message: 'Max clients must be between 1 and 9' }
],
local_ip: [{ required: true, message: 'Local IP address is required' }, IP_ADDRESS_VALIDATOR],
gateway_ip: [{ required: true, message: 'Gateway IP address is required' }, IP_ADDRESS_VALIDATOR],
subnet_mask: [{ required: true, message: 'Subnet mask is required' }, IP_ADDRESS_VALIDATOR]
})
});