adds types for dataset security class. defaults dataset security class to internal with user confirmation

This commit is contained in:
Seyi Adebajo 2018-01-16 16:53:43 -08:00
parent 78413e56c0
commit 680e28045e
3 changed files with 43 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import { run, schedule } from '@ember/runloop';
import { inject } from '@ember/service';
import { classify } from '@ember/string';
import { IFieldIdentifierOption } from 'wherehows-web/constants/dataset-compliance';
import { Classification } from 'wherehows-web/constants/datasets/compliance';
import isTrackingHeaderField from 'wherehows-web/utils/validators/tracking-headers';
import {
@ -52,6 +53,7 @@ import { task } from 'ember-concurrency';
interface IDatasetComplianceActions {
didEditCompliancePolicy: () => Promise<boolean>;
didEditPurgePolicy: () => Promise<{} | void>;
didEditDatasetLevelCompliancePolicy: () => Promise<void>;
[K: string]: (...args: Array<any>) => any;
}
@ -96,7 +98,8 @@ const {
helpText,
successUploading,
invalidPolicyData,
missingPurgePolicy
missingPurgePolicy,
defaultDatasetClassificationMsg
} = compliancePolicyStrings;
/**
@ -1047,6 +1050,39 @@ export default class DatasetCompliance extends ObservableDecorator {
return isConfirmed;
},
/**
* Handles tasks to be processed after the wizard step to edit a datasets pii and security classification is
* completed
* @returns {Promise<void>}
*/
async didEditDatasetLevelCompliancePolicy(this: DatasetCompliance): Promise<void> {
const complianceInfo = get(this, 'complianceInfo');
if (complianceInfo) {
const { confidentiality, containingPersonalData } = complianceInfo;
const dialogActions: { [prop: string]: () => void } = {};
const confirmConfidentialityPromise = new Promise((resolve, reject) => {
dialogActions['didConfirm'] = () => resolve();
dialogActions['didDismiss'] = () => reject();
});
// defaults the containing personal data flag to false if undefined
if (typeof containingPersonalData !== 'undefined') {
set(complianceInfo, 'containingPersonalData', false);
}
if (!confidentiality) {
get(this, 'notifications').notify(NotificationEvent.confirm, {
dialogActions,
header: 'Confirm dataset classification',
content: defaultDatasetClassificationMsg
});
await confirmConfidentialityPromise;
set(complianceInfo, 'confidentiality', Classification.Internal);
}
}
},
/**
* Handles post processing tasks after the purge policy step has been completed
* @returns {(Promise<void | {}>)}

View File

@ -55,7 +55,9 @@ const compliancePolicyStrings = {
'This security classification is from go/dht and should be good enough in most cases. ' +
'You can optionally override it if required by house security.'
},
missingPurgePolicy: 'Please specify a Compliance Purge Policy'
missingPurgePolicy: 'Please specify a Compliance Purge Policy',
defaultDatasetClassificationMsg: `You haven't set this dataset's security classification,
it's value will be set to default of "${Classification.Internal}"`
};
/**

View File

@ -18,7 +18,9 @@ enum SuggestionIntent {
enum Classification {
Confidential = 'CONFIDENTIAL',
LimitedDistribution = 'LIMITED_DISTRIBUTION',
HighlyConfidential = 'HIGHLY_CONFIDENTIAL'
HighlyConfidential = 'HIGHLY_CONFIDENTIAL',
Internal = 'INTERNAL',
Public = 'PUBLIC'
}
/**