UNPKG

@defra/wls-eps-web-service

Version:

The web service for wildlife licencing of European Protected Species

35 lines (31 loc) 1.48 kB
// The organisation allows language characters, numbers, hyphens spaces and the full-stop import pageRoute from '../../../../routes/page-route.js' import Joi from 'joi' import { cacheDirect } from '../../../../session-cache/cache-decorator.js' import { APIRequests } from '../../../../services/api-requests.js' // Allow the current organisation name if set export const getValidator = accountRole => async (payload, context) => { const cd = cacheDirect(context) const { userId, applicationId } = await cd.getData() const accounts = await APIRequests.ACCOUNT.role(accountRole).findByUser(userId) const account = await APIRequests.ACCOUNT.role(accountRole).getByApplicationId(applicationId) const names = accounts.map(c => c.name).filter(name => name !== account?.name) const schema = Joi.object({ 'is-organisation': Joi.any().valid('yes', 'no').required(), 'organisation-name': Joi.alternatives().conditional('is-organisation', { is: 'yes', then: Joi.string().trim().replace(/((\s+){2,})/gm, '$2').invalid(...names).insensitive().required(), otherwise: Joi.any().optional() }) }).options({ abortEarly: false, allowUnknown: true }) Joi.assert(payload, schema, 'name', { abortEarly: false, allowUnknown: true }) } export const isOrganisation = ({ page, uri, checkData, getData, completion, setData }, accountRole) => pageRoute({ page, uri, checkData, getData, setData, completion, validator: getValidator(accountRole) })