mirror of https://github.com/rancher/ui.git
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
import Component from '@ember/component';
|
|
import { get, set, computed } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import ViewNewEdit from 'shared/mixins/view-new-edit';
|
|
import OptionallyNamespaced from 'shared/mixins/optionally-namespaced';
|
|
import layout from './template';
|
|
import { validateCertWeakly, validateKeyWeakly } from 'shared/utils/util';
|
|
|
|
export default Component.extend(ViewNewEdit, OptionallyNamespaced, {
|
|
intl: service(),
|
|
|
|
layout,
|
|
model: null,
|
|
titleKey: 'newCertificate.title',
|
|
scope: 'project',
|
|
namespace: null,
|
|
|
|
projectType: 'certificate',
|
|
namespacedType: 'namespacedCertificate',
|
|
|
|
isEncrypted: computed('model.key', function() {
|
|
var key = get(this, 'model.key') || '';
|
|
|
|
return key.match(/^Proc-Type: 4,ENCRYPTED$/m) || key.match(/^-----BEGIN ENCRYPTED.* KEY-----$/m);
|
|
}),
|
|
|
|
validate() {
|
|
this._super();
|
|
|
|
var errors = get(this, 'errors') || [];
|
|
|
|
if ( get(this, 'scope') !== 'project' ) {
|
|
errors.pushObjects(get(this, 'namespaceErrors') || []);
|
|
}
|
|
|
|
var intl = get(this, 'intl');
|
|
|
|
if (get(this, 'isEncrypted')) {
|
|
errors.push(intl.t('newCertificate.errors.encrypted'));
|
|
}
|
|
|
|
const key = get(this, 'model.key');
|
|
|
|
if ( key ) {
|
|
if ( !validateKeyWeakly(key) ) {
|
|
errors.push(intl.t('newCertificate.errors.key.invalidFormat'));
|
|
}
|
|
} else {
|
|
errors.push(intl.t('newCertificate.errors.key.required'));
|
|
}
|
|
|
|
const certs = get(this, 'model.certs');
|
|
|
|
if ( certs ) {
|
|
if ( !validateCertWeakly(certs) ) {
|
|
errors.push(intl.t('newCertificate.errors.cert.invalidFormat'));
|
|
}
|
|
} else {
|
|
errors.push(intl.t('newCertificate.errors.cert.required'));
|
|
}
|
|
|
|
set(this, 'errors', errors);
|
|
|
|
return get(this, 'errors.length') === 0;
|
|
},
|
|
});
|