mirror of
https://github.com/fleetdm/fleet
synced 2026-05-24 09:28:54 +00:00
78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
import { flatMap, kebabCase, pick } from 'lodash';
|
|
import md5 from 'js-md5';
|
|
|
|
const ORG_INFO_ATTRS = ['org_name', 'org_logo_url'];
|
|
const ADMIN_ATTRS = ['email', 'name', 'password', 'password_confirmation', 'username'];
|
|
|
|
export const addGravatarUrlToResource = (resource) => {
|
|
const { email } = resource;
|
|
|
|
const emailHash = md5(email.toLowerCase());
|
|
const gravatarURL = `https://www.gravatar.com/avatar/${emailHash}?d=blank&size=200`;
|
|
|
|
return {
|
|
...resource,
|
|
gravatarURL,
|
|
};
|
|
};
|
|
|
|
const labelSlug = (label) => {
|
|
const { display_text: displayText } = label;
|
|
|
|
if (!displayText) return undefined;
|
|
|
|
const lowerDisplayText = displayText.toLowerCase();
|
|
|
|
return kebabCase(lowerDisplayText);
|
|
};
|
|
|
|
const filterTarget = (targetType) => {
|
|
return (target) => {
|
|
return target.target_type === targetType ? [target.id] : [];
|
|
};
|
|
};
|
|
|
|
export const formatConfigDataForServer = (config) => {
|
|
const orgInfoAttrs = ['org_logo_url', 'org_name'];
|
|
const serverSettingsAttrs = ['kolide_server_url'];
|
|
const smtpSettingsAttrs = [
|
|
'authentication_method', 'authentication_type', 'email_enabled', 'enable_ssl_tls',
|
|
'enable_start_tls', 'password', 'port', 'sender_address', 'server', 'user_name', 'verify_ssl_certs',
|
|
];
|
|
|
|
return {
|
|
org_info: pick(config, orgInfoAttrs),
|
|
server_settings: pick(config, serverSettingsAttrs),
|
|
smtp_settings: pick(config, smtpSettingsAttrs),
|
|
};
|
|
};
|
|
|
|
export const formatSelectedTargetsForApi = (selectedTargets, appendID = false) => {
|
|
const targets = selectedTargets || [];
|
|
const hosts = flatMap(targets, filterTarget('hosts'));
|
|
const labels = flatMap(targets, filterTarget('labels'));
|
|
|
|
if (appendID) {
|
|
return { host_ids: hosts, label_ids: labels };
|
|
}
|
|
|
|
return { hosts, labels };
|
|
};
|
|
|
|
const setupData = (formData) => {
|
|
const orgInfo = pick(formData, ORG_INFO_ATTRS);
|
|
const adminInfo = pick(formData, ADMIN_ATTRS);
|
|
|
|
return {
|
|
kolide_server_url: formData.kolide_server_url,
|
|
org_info: {
|
|
...orgInfo,
|
|
},
|
|
admin: {
|
|
admin: true,
|
|
...adminInfo,
|
|
},
|
|
};
|
|
};
|
|
|
|
export default { addGravatarUrlToResource, formatConfigDataForServer, formatSelectedTargetsForApi, labelSlug, setupData };
|