mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) HashiCorp, Inc.
 | |
|  * SPDX-License-Identifier: BUSL-1.1
 | |
|  */
 | |
| 
 | |
| import Model, { attr } from '@ember-data/model';
 | |
| import { withExpandedAttributes } from 'vault/decorators/model-expanded-attributes';
 | |
| 
 | |
| const CREDENTIAL_TYPES = [
 | |
|   {
 | |
|     value: 'iam_user',
 | |
|     displayName: 'IAM User',
 | |
|   },
 | |
|   {
 | |
|     value: 'assumed_role',
 | |
|     displayName: 'Assumed Role',
 | |
|   },
 | |
|   {
 | |
|     value: 'federation_token',
 | |
|     displayName: 'Federation Token',
 | |
|   },
 | |
|   {
 | |
|     value: 'session_token',
 | |
|     displayName: 'Session Token',
 | |
|   },
 | |
| ];
 | |
| 
 | |
| @withExpandedAttributes()
 | |
| export default class AwsCredential extends Model {
 | |
|   @attr('object', {
 | |
|     readOnly: true,
 | |
|   })
 | |
|   role;
 | |
| 
 | |
|   @attr('string', {
 | |
|     defaultValue: 'iam_user',
 | |
|     possibleValues: CREDENTIAL_TYPES,
 | |
|     readOnly: true,
 | |
|   })
 | |
|   credentialType;
 | |
| 
 | |
|   @attr('string', {
 | |
|     label: 'Role ARN',
 | |
|     helpText:
 | |
|       'The ARN of the role to assume if credential_type on the Vault role is assumed_role. Optional if the role has a single role ARN; required otherwise.',
 | |
|   })
 | |
|   roleArn;
 | |
| 
 | |
|   @attr({
 | |
|     editType: 'ttl',
 | |
|     defaultValue: '3600s',
 | |
|     setDefault: true,
 | |
|     ttlOffValue: '',
 | |
|     label: 'TTL',
 | |
|     helpText:
 | |
|       'Specifies the TTL for the use of the STS token. Valid only when credential_type is assumed_role, federation_token, or session_token.',
 | |
|   })
 | |
|   ttl;
 | |
| 
 | |
|   @attr('string') leaseId;
 | |
|   @attr('boolean') renewable;
 | |
|   @attr('number') leaseDuration;
 | |
|   @attr('string') accessKey;
 | |
|   @attr('string', { masked: true }) secretKey;
 | |
|   @attr('string', { masked: true }) securityToken;
 | |
| 
 | |
|   get toCreds() {
 | |
|     const props = {
 | |
|       accessKey: this.accessKey,
 | |
|       secretKey: this.secretKey,
 | |
|       securityToken: this.securityToken,
 | |
|       leaseId: this.leaseId,
 | |
|     };
 | |
|     const propsWithVals = Object.keys(props).reduce((ret, prop) => {
 | |
|       if (props[prop]) {
 | |
|         ret[prop] = props[prop];
 | |
|         return ret;
 | |
|       }
 | |
|       return ret;
 | |
|     }, {});
 | |
|     return JSON.stringify(propsWithVals, null, 2);
 | |
|   }
 | |
| }
 | 
