dashboard/shell/utils/validators/role-template.js

28 lines
1.3 KiB
JavaScript

import { RBAC } from '@shell/config/types';
import isEmpty from 'lodash/isEmpty';
export function roleTemplateRules(rules = [], getters, errors, validatorArgs = []) {
if (rules.some((rule) => isEmpty(rule.verbs))) {
errors.push(getters['i18n/t']('validation.roleTemplate.roleTemplateRules.missingVerb'));
}
if (rules.some((rule) => rule.resources?.length && rule.nonResourceURLs?.length)) {
errors.push(getters['i18n/t']('validation.roleTemplate.roleTemplateRules.noResourceAndNonResource'));
}
if (validatorArgs[0] === RBAC.ROLE) {
if (rules.some((rule) => isEmpty(rule.resources))) {
errors.push(getters['i18n/t']('validation.roleTemplate.roleTemplateRules.missingResource'));
}
if (rules.some((rule) => isEmpty(rule.apiGroups))) {
errors.push(getters['i18n/t']('validation.roleTemplate.roleTemplateRules.missingApiGroup'));
}
} else if (rules.some((rule) => rule.resources?.length && rule.nonResourceUrls?.length)) {
errors.push(getters['i18n/t']('validation.roleTemplate.roleTemplateRules.noResourceAndNonResource'));
}
if (rules.some((rule) => isEmpty(rule.resources) && isEmpty(rule.nonResourceURLs))) {
errors.push(getters['i18n/t']('validation.roleTemplate.roleTemplateRules.missingOneResource'));
}
}