27bb03bbc0
* adding copyright header * fix fmt and a test
63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Model, { attr } from '@ember-data/model';
|
|
import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities';
|
|
import { expandAttributeMeta } from 'vault/utils/field-to-attrs';
|
|
import { withModelValidations } from 'vault/decorators/model-validations';
|
|
|
|
const validations = {
|
|
name: [
|
|
{ type: 'presence', message: 'Name is required.' },
|
|
{
|
|
type: 'containsWhiteSpace',
|
|
message: 'Name cannot contain whitespace.',
|
|
},
|
|
],
|
|
};
|
|
|
|
@withModelValidations(validations)
|
|
export default class OidcKeyModel extends Model {
|
|
@attr('string', { editDisabled: true }) name;
|
|
@attr('string', {
|
|
defaultValue: 'RS256',
|
|
possibleValues: ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'EdDSA'],
|
|
})
|
|
algorithm;
|
|
|
|
@attr({ editType: 'ttl', defaultValue: '24h' }) rotationPeriod;
|
|
@attr({ label: 'Verification TTL', editType: 'ttl', defaultValue: '24h' }) verificationTtl;
|
|
@attr('array', { label: 'Allowed applications' }) allowedClientIds; // no editType because does not use form-field component
|
|
|
|
// TODO refactor when field-to-attrs is refactored as decorator
|
|
_attributeMeta = null; // cache initial result of expandAttributeMeta in getter and return
|
|
get formFields() {
|
|
if (!this._attributeMeta) {
|
|
this._attributeMeta = expandAttributeMeta(this, [
|
|
'name',
|
|
'algorithm',
|
|
'rotationPeriod',
|
|
'verificationTtl',
|
|
]);
|
|
}
|
|
return this._attributeMeta;
|
|
}
|
|
|
|
@lazyCapabilities(apiPath`identity/oidc/key/${'name'}`, 'name') keyPath;
|
|
@lazyCapabilities(apiPath`identity/oidc/key/${'name'}/rotate`, 'name') rotatePath;
|
|
get canRead() {
|
|
return this.keyPath.get('canRead');
|
|
}
|
|
get canEdit() {
|
|
return this.keyPath.get('canUpdate');
|
|
}
|
|
get canRotate() {
|
|
return this.rotatePath.get('canUpdate');
|
|
}
|
|
get canDelete() {
|
|
return this.keyPath.get('canDelete');
|
|
}
|
|
}
|