mirror of
https://github.com/fleetdm/fleet
synced 2026-05-14 20:48:35 +00:00
For #27581, #27584, #27612 contains a couple of fixes with editing CAs in UI: - fix for only removing API token, password, or challenge inputs when the user has not yet made a change to those fields. - fix for sending empty array when UPN input is empty - fix for error for private key - fix when editing a digicert CA when UPN is set from gitops and is null - [x] Manual QA for all new/changed functionality
154 lines
4.1 KiB
TypeScript
154 lines
4.1 KiB
TypeScript
export type IIntegrationType = "jira" | "zendesk";
|
||
export interface IJiraIntegration {
|
||
url: string;
|
||
username: string;
|
||
api_token: string;
|
||
project_key: string;
|
||
enable_failing_policies?: boolean;
|
||
enable_software_vulnerabilities?: boolean;
|
||
}
|
||
|
||
export interface IZendeskIntegration {
|
||
url: string;
|
||
email: string;
|
||
api_token: string;
|
||
group_id: number;
|
||
enable_failing_policies?: boolean;
|
||
enable_software_vulnerabilities?: boolean;
|
||
}
|
||
|
||
export interface ICertificatesIntegrationNDES {
|
||
url: string;
|
||
admin_url: string;
|
||
username: string;
|
||
password: string;
|
||
}
|
||
|
||
export interface ICertificatesIntegrationDigicert {
|
||
name: string;
|
||
url: string;
|
||
api_token: string;
|
||
profile_id: string;
|
||
certificate_common_name: string;
|
||
certificate_user_principal_names: string[] | null;
|
||
certificate_seat_id: string;
|
||
}
|
||
|
||
export interface ICertificatesIntegrationCustomSCEP {
|
||
name: string;
|
||
url: string;
|
||
challenge: string;
|
||
}
|
||
|
||
export const isNDESCertIntegration = (
|
||
integration: ICertificateIntegration
|
||
): integration is ICertificatesIntegrationNDES => {
|
||
return (
|
||
"admin_url" in integration &&
|
||
"username" in integration &&
|
||
"password" in integration
|
||
);
|
||
};
|
||
|
||
export const isDigicertCertIntegration = (
|
||
integration: ICertificateIntegration
|
||
): integration is ICertificatesIntegrationDigicert => {
|
||
return (
|
||
"profile_id" in integration &&
|
||
"certificate_common_name" in integration &&
|
||
"certificate_user_principal_names" in integration &&
|
||
"certificate_seat_id" in integration
|
||
);
|
||
};
|
||
|
||
export const isCustomSCEPCertIntegration = (
|
||
integration: ICertificateIntegration
|
||
): integration is ICertificatesIntegrationCustomSCEP => {
|
||
return (
|
||
"name" in integration && "url" in integration && "challenge" in integration
|
||
);
|
||
};
|
||
|
||
export type ICertificateAuthorityType = "ndes" | "digicert" | "custom";
|
||
|
||
/** all the types of certificate integrations */
|
||
export type ICertificateIntegration =
|
||
| ICertificatesIntegrationNDES
|
||
| ICertificatesIntegrationDigicert
|
||
| ICertificatesIntegrationCustomSCEP;
|
||
|
||
export interface IIntegration {
|
||
url: string;
|
||
username?: string;
|
||
email?: string;
|
||
api_token: string;
|
||
project_key?: string;
|
||
group_id?: number;
|
||
enable_failing_policies?: boolean;
|
||
enable_software_vulnerabilities?: boolean;
|
||
originalIndex?: number;
|
||
type?: IIntegrationType;
|
||
tableIndex?: number;
|
||
dropdownIndex?: number;
|
||
name?: string;
|
||
}
|
||
|
||
export interface IIntegrationFormData {
|
||
url: string;
|
||
username?: string;
|
||
email?: string;
|
||
apiToken: string;
|
||
projectKey?: string;
|
||
groupId?: number;
|
||
enableSoftwareVulnerabilities?: boolean;
|
||
}
|
||
|
||
export interface IIntegrationTableData extends IIntegrationFormData {
|
||
originalIndex: number;
|
||
type: IIntegrationType;
|
||
tableIndex?: number;
|
||
name: string;
|
||
}
|
||
|
||
export interface IIntegrationFormErrors {
|
||
url?: string | null;
|
||
email?: string | null;
|
||
username?: string | null;
|
||
apiToken?: string | null;
|
||
groupId?: number | null;
|
||
projectKey?: string | null;
|
||
enableSoftwareVulnerabilities?: boolean;
|
||
}
|
||
|
||
export interface IGlobalCalendarIntegration {
|
||
domain: string;
|
||
api_key_json: string;
|
||
}
|
||
|
||
interface ITeamCalendarSettings {
|
||
enable_calendar_events: boolean;
|
||
webhook_url: string;
|
||
}
|
||
|
||
// zendesk and jira fields are coupled – if one is present, the other needs to be present. If
|
||
// one is present and the other is null/missing, the other will be nullified. google_calendar is
|
||
// separated – it can be present without the other 2 without nullifying them.
|
||
// TODO: Update these types to reflect this.
|
||
|
||
export interface IZendeskJiraIntegrations {
|
||
zendesk: IZendeskIntegration[];
|
||
jira: IJiraIntegration[];
|
||
}
|
||
|
||
// reality is that IZendeskJiraIntegrations are optional – should be something like `extends
|
||
// Partial<IZendeskJiraIntegrations>`, but that leads to a mess of types to resolve.
|
||
export interface IGlobalIntegrations extends IZendeskJiraIntegrations {
|
||
google_calendar?: IGlobalCalendarIntegration[] | null;
|
||
ndes_scep_proxy?: ICertificatesIntegrationNDES | null;
|
||
digicert?: ICertificatesIntegrationDigicert[];
|
||
custom_scep_proxy?: ICertificatesIntegrationCustomSCEP[];
|
||
}
|
||
|
||
export interface ITeamIntegrations extends IZendeskJiraIntegrations {
|
||
google_calendar?: ITeamCalendarSettings | null;
|
||
}
|