mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 10:37:56 +00:00 
			
		
		
		
	 d4766766f2
			
		
	
	d4766766f2
	
	
	
		
			
			* runs ember-cli-update to 4.4.0 * updates yarn.lock * updates dependencies causing runtime errors (#17135) * Inject Store Service When Accessed Implicitly (#17345) * adds codemod for injecting store service * adds custom babylon parser with decorators-legacy plugin for jscodeshift transforms * updates inject-store-service codemod to only look for .extend object expressions and adds recast options * runs inject-store-service codemod on js files * replace query-params helper with hash (#17404) * Updates/removes dependencies throwing errors in Ember 4.4 (#17396) * updates ember-responsive to latest * updates ember-composable-helpers to latest and uses includes helper since contains was removed * updates ember-concurrency to latest * updates ember-cli-clipboard to latest * temporary workaround for toolbar-link component throwing errors for using params arg with LinkTo * adds missing store injection to auth configure route * fixes issue with string-list component throwing error for accessing prop in same computation * fixes non-iterable query params issue in mfa methods controller * refactors field-to-attrs to handle belongsTo rather than fragments * converts mount-config fragment to belongsTo on auth-method model * removes ember-api-actions and adds tune method to auth-method adapter * converts cluster replication attributes from fragment to relationship * updates ember-data, removes ember-data-fragments and updates yarn to latest * removes fragments from secret-engine model * removes fragment from test-form-model * removes commented out code * minor change to inject-store-service codemod and runs again on js files * Remove LinkTo positional params (#17421) * updates ember-cli-page-object to latest version * update toolbar-link to support link-to args and not positional params * adds replace arg to toolbar-link component * Clean up js lint errors (#17426) * replaces assert.equal to assert.strictEqual * update eslint no-console to error and disables invididual intended uses of console * cleans up hbs lint warnings (#17432) * Upgrade bug and test fixes (#17500) * updates inject-service codemod to take arg for service name and runs for flashMessages service * fixes hbs lint error after merging main * fixes flash messages * updates more deps * bug fixes * test fixes * updates ember-cli-content-security-policy and prevents default form submission throwing errors * more bug and test fixes * removes commented out code * fixes issue with code-mirror modifier sending change event on setup causing same computation error * Upgrade Clean Up (#17543) * updates deprecation workflow and filter * cleans up build errors, removes unused ivy-codemirror and sass and updates ember-cli-sass and node-sass to latest * fixes control groups test that was skipped after upgrade * updates control group service tests * addresses review feedback * updates control group service handleError method to use router.currentURL rather that transition.intent.url * adds changelog entry
		
			
				
	
	
		
			128 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { inject as service } from '@ember/service';
 | |
| import { computed, set } from '@ember/object';
 | |
| import Component from '@ember/component';
 | |
| 
 | |
| const MODEL_TYPES = {
 | |
|   'ssh-sign': {
 | |
|     model: 'ssh-sign',
 | |
|   },
 | |
|   'ssh-creds': {
 | |
|     model: 'ssh-otp-credential',
 | |
|     title: 'Generate SSH Credentials',
 | |
|   },
 | |
|   'aws-creds': {
 | |
|     model: 'aws-credential',
 | |
|     title: 'Generate AWS Credentials',
 | |
|     backIsListLink: true,
 | |
|   },
 | |
|   'pki-issue': {
 | |
|     model: 'pki/cert',
 | |
|     title: 'Issue Certificate',
 | |
|   },
 | |
|   'pki-sign': {
 | |
|     model: 'pki-certificate-sign',
 | |
|     title: 'Sign Certificate',
 | |
|   },
 | |
| };
 | |
| 
 | |
| export default Component.extend({
 | |
|   wizard: service(),
 | |
|   store: service(),
 | |
|   router: service(),
 | |
|   // set on the component
 | |
|   backendType: null,
 | |
|   backendPath: null,
 | |
|   roleName: null,
 | |
|   action: null,
 | |
| 
 | |
|   model: null,
 | |
|   loading: false,
 | |
|   emptyData: '{\n}',
 | |
| 
 | |
|   modelForType() {
 | |
|     const type = this.options;
 | |
|     if (type) {
 | |
|       return type.model;
 | |
|     }
 | |
|     // if we don't have a mode for that type then redirect them back to the backend list
 | |
|     this.router.transitionTo('vault.cluster.secrets.backend.list-root', this.backendPath);
 | |
|   },
 | |
| 
 | |
|   options: computed('action', 'backendType', function () {
 | |
|     const action = this.action || 'creds';
 | |
|     return MODEL_TYPES[`${this.backendType}-${action}`];
 | |
|   }),
 | |
| 
 | |
|   init() {
 | |
|     this._super(...arguments);
 | |
|     this.createOrReplaceModel();
 | |
|   },
 | |
| 
 | |
|   didReceiveAttrs() {
 | |
|     this._super();
 | |
|     if (this.wizard.featureState === 'displayRole') {
 | |
|       this.wizard.transitionFeatureMachine(this.wizard.featureState, 'CONTINUE', this.backendType);
 | |
|     }
 | |
|   },
 | |
| 
 | |
|   willDestroy() {
 | |
|     if (!this.model.isDestroyed && !this.model.isDestroying) {
 | |
|       this.model.unloadRecord();
 | |
|     }
 | |
|     this._super(...arguments);
 | |
|   },
 | |
| 
 | |
|   createOrReplaceModel() {
 | |
|     const modelType = this.modelForType();
 | |
|     const model = this.model;
 | |
|     const roleName = this.roleName;
 | |
|     const backendPath = this.backendPath;
 | |
|     if (!modelType) {
 | |
|       return;
 | |
|     }
 | |
|     if (model) {
 | |
|       model.unloadRecord();
 | |
|     }
 | |
|     const attrs = {
 | |
|       role: {
 | |
|         backend: backendPath,
 | |
|         name: roleName,
 | |
|       },
 | |
|       id: `${backendPath}-${roleName}`,
 | |
|     };
 | |
|     const newModel = this.store.createRecord(modelType, attrs);
 | |
|     this.set('model', newModel);
 | |
|   },
 | |
| 
 | |
|   actions: {
 | |
|     create() {
 | |
|       let model = this.model;
 | |
|       this.set('loading', true);
 | |
|       this.model
 | |
|         .save()
 | |
|         .catch(() => {
 | |
|           if (this.wizard.featureState === 'credentials') {
 | |
|             this.wizard.transitionFeatureMachine(this.wizard.featureState, 'ERROR', this.backendType);
 | |
|           }
 | |
|         })
 | |
|         .finally(() => {
 | |
|           model.set('hasGenerated', true);
 | |
|           this.set('loading', false);
 | |
|         });
 | |
|     },
 | |
| 
 | |
|     codemirrorUpdated(attr, val, codemirror) {
 | |
|       codemirror.performLint();
 | |
|       const hasErrors = codemirror.state.lint.marked.length > 0;
 | |
| 
 | |
|       if (!hasErrors) {
 | |
|         set(this.model, attr, JSON.parse(val));
 | |
|       }
 | |
|     },
 | |
| 
 | |
|     newModel() {
 | |
|       this.createOrReplaceModel();
 | |
|     },
 | |
|   },
 | |
| });
 |