mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			59 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
import { KubernetesSecretTypeOptions } from '@/kubernetes/models/configuration/models';
 | 
						|
import { KubernetesConfigurationKinds } from '@/kubernetes/models/configuration/models';
 | 
						|
 | 
						|
export function isConfigurationFormValid(alreadyExist, isDataValid, formValues) {
 | 
						|
  const uniqueCheck = !alreadyExist && isDataValid;
 | 
						|
  let secretWarningMessage = '';
 | 
						|
  let isFormValid = false;
 | 
						|
 | 
						|
  if (formValues.IsSimple) {
 | 
						|
    if (formValues.Kind === KubernetesConfigurationKinds.SECRET) {
 | 
						|
      let isSecretDataValid = true;
 | 
						|
 | 
						|
      switch (formValues.Type) {
 | 
						|
        case KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value:
 | 
						|
          // data isn't required for service account tokens
 | 
						|
          isFormValid = uniqueCheck && formValues.ResourcePool;
 | 
						|
          return [isFormValid, ''];
 | 
						|
        case KubernetesSecretTypeOptions.DOCKERCFG.value:
 | 
						|
          // needs to contain a .dockercfg key
 | 
						|
          isSecretDataValid = formValues.Data.some((entry) => entry.Key === '.dockercfg');
 | 
						|
          secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a .dockercfg key is required.';
 | 
						|
          break;
 | 
						|
        case KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:
 | 
						|
          // needs to contain a .dockerconfigjson key
 | 
						|
          isSecretDataValid = formValues.Data.some((entry) => entry.Key === '.dockerconfigjson');
 | 
						|
          secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a .dockerconfigjson key. is required.';
 | 
						|
          break;
 | 
						|
        case KubernetesSecretTypeOptions.BASICAUTH.value:
 | 
						|
          isSecretDataValid = formValues.Data.some((entry) => entry.Key === 'username' || entry.Key === 'password');
 | 
						|
          secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a username or password key is required.';
 | 
						|
          break;
 | 
						|
        case KubernetesSecretTypeOptions.SSHAUTH.value:
 | 
						|
          isSecretDataValid = formValues.Data.some((entry) => entry.Key === 'ssh-privatekey');
 | 
						|
          secretWarningMessage = isSecretDataValid ? '' : `A data entry with a 'ssh-privatekey' key is required.`;
 | 
						|
          break;
 | 
						|
        case KubernetesSecretTypeOptions.TLS.value:
 | 
						|
          isSecretDataValid = formValues.Data.some((entry) => entry.Key === 'tls.crt') && formValues.Data.some((entry) => entry.Key === 'tls.key');
 | 
						|
          secretWarningMessage = isSecretDataValid ? '' : `Data entries containing a 'tls.crt' key and a 'tls.key' key are required.`;
 | 
						|
          break;
 | 
						|
        case KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:
 | 
						|
          isSecretDataValid = formValues.Data.some((entry) => entry.Key === 'token-id') && formValues.Data.some((entry) => entry.Key === 'token-secret');
 | 
						|
          secretWarningMessage = isSecretDataValid ? '' : `Data entries containing a 'token-id' key and a 'token-secret' key are required.`;
 | 
						|
          break;
 | 
						|
        default:
 | 
						|
          break;
 | 
						|
      }
 | 
						|
 | 
						|
      isFormValid = uniqueCheck && formValues.ResourcePool && formValues.Data.length >= 1 && isSecretDataValid;
 | 
						|
      return [isFormValid, secretWarningMessage];
 | 
						|
    }
 | 
						|
 | 
						|
    isFormValid = formValues.Data.length > 0 && uniqueCheck && formValues.ResourcePool;
 | 
						|
    return [isFormValid, secretWarningMessage];
 | 
						|
  }
 | 
						|
 | 
						|
  isFormValid = uniqueCheck && formValues.ResourcePool;
 | 
						|
  return [isFormValid, secretWarningMessage];
 | 
						|
}
 |