mirror of https://github.com/rancher/dashboard.git
28 lines
1.3 KiB
JavaScript
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'));
|
|
}
|
|
}
|