47 lines
1.2 KiB
JavaScript
47 lines
1.2 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 { withModelValidations } from 'vault/decorators/model-validations';
|
|
import { isPresent } from '@ember/utils';
|
|
|
|
const validations = {
|
|
name: [
|
|
{ type: 'presence', message: 'Name is required.' },
|
|
{
|
|
type: 'containsWhiteSpace',
|
|
message: 'Name cannot contain whitespace.',
|
|
},
|
|
],
|
|
targets: [
|
|
{
|
|
validator(model) {
|
|
return isPresent(model.entityIds) || isPresent(model.groupIds);
|
|
},
|
|
message: 'At least one entity or group is required.',
|
|
},
|
|
],
|
|
};
|
|
|
|
@withModelValidations(validations)
|
|
export default class OidcAssignmentModel extends Model {
|
|
@attr('string') name;
|
|
@attr('array') entityIds;
|
|
@attr('array') groupIds;
|
|
|
|
// CAPABILITIES
|
|
@lazyCapabilities(apiPath`identity/oidc/assignment/${'name'}`, 'name') assignmentPath;
|
|
get canRead() {
|
|
return this.assignmentPath.get('canRead');
|
|
}
|
|
get canEdit() {
|
|
return this.assignmentPath.get('canUpdate');
|
|
}
|
|
get canDelete() {
|
|
return this.assignmentPath.get('canDelete');
|
|
}
|
|
}
|