web-interface.assets.1255d548-5843.66b1420bce40c1dc2be0.js.map Maven / Gradle / Ivy
{"version":3,"file":"1255d548-5843.66b1420bce40c1dc2be0.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationSummary.css","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationCommonStyles.css","webpack://graylog-web-interface/./src/components/common/PageNavigation.tsx","webpack://graylog-web-interface/./src/components/common/Select/PaginatedSelect.tsx","webpack://graylog-web-interface/./src/components/users/UsersSelectField.tsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationForm.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationFormContainer.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationSummary.css?8d59","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/EmailNotificationSummary.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/HttpNotificationForm.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/HttpNotificationSummary.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationCommonStyles.css?9638","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationForm.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationFormContainer.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationSummary.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/LegacyNotificationSummaryContainer.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-details/EmailNotificationDetails.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-details/HttpNotificationDetails.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-details/LegacyNotificationDetails.jsx","webpack://graylog-web-interface/./src/components/event-notifications/event-notification-types/index.js","webpack://graylog-web-interface/./src/components/events/EventsPageNavigation.tsx","webpack://graylog-web-interface/./src/domainActions/users/UsersDomain.ts","webpack://graylog-web-interface/./src/logic/users/UserOverview.ts","webpack://graylog-web-interface/./src/stores/event-notifications/EventNotificationsStore.ts","webpack://graylog-web-interface/./src/stores/users/UsersStore.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.bN2Fa5FgSGHUh4zYUYzt {\n font-family: \"Roboto Mono\", Menlo, Monaco, Consolas, \"Courier New\", monospace;\n font-size: 1rem; /* theme.fonts.size.body */\n overflow-wrap: break-word;\n white-space: pre-wrap;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-notifications/event-notification-types/EmailNotificationSummary.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,6EAA6E;IAC7E,eAAe,EAAE,0BAA0B;IAC3C,yBAAyB;IACzB,qBAAqB;AACzB\",\"sourcesContent\":[\":local(.bodyPreview) {\\n font-family: \\\"Roboto Mono\\\", Menlo, Monaco, Consolas, \\\"Courier New\\\", monospace;\\n font-size: 1rem; /* theme.fonts.size.body */\\n overflow-wrap: break-word;\\n white-space: pre-wrap;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"bodyPreview\": `bN2Fa5FgSGHUh4zYUYzt`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.rKKIeiSYDcRNaNEaL85y {\n margin-bottom: 15px;\n overflow-wrap: break-word;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/event-notifications/event-notification-types/LegacyNotificationCommonStyles.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,mBAAmB;IACnB,yBAAyB;AAC7B\",\"sourcesContent\":[\":local(.legacyNotificationAlert) {\\n margin-bottom: 15px;\\n overflow-wrap: break-word;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"legacyNotificationAlert\": `rKKIeiSYDcRNaNEaL85y`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { LinkContainer } from 'components/common/router';\nimport { IfPermitted } from 'components/common';\nimport NavItemStateIndicator, {\n hoverIndicatorStyles,\n activeIndicatorStyles,\n} from 'components/common/NavItemStateIndicator';\n\nconst Container = styled(ButtonToolbar)`\n margin-bottom: 10px;\n`;\n\nconst StyledButton = styled(Button)(({ theme }) => css`\n font-family: ${theme.fonts.family.navigation};\n font-size: ${theme.fonts.size.navigation};\n\n &&&& {\n color: ${theme.colors.variant.darker.default};\n \n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > div {\n &:hover,\n &:focus {\n color: ${theme.colors.variant.darker.default};\n }\n }\n\n &:hover {\n ${hoverIndicatorStyles(theme)}\n }\n\n &.active {\n color: ${theme.colors.global.textDefault};\n\n ${activeIndicatorStyles(theme)}\n\n &:hover,\n &:focus {\n ${activeIndicatorStyles(theme)}\n }\n }\n }\n`);\n\nStyledButton.displayName = 'Button';\n\ntype Props = {\n /**\n * List of nav items. Define permissions, if the item should only be displayed for users with specific permissions.\n * By default, an item is active if the current URL starts with the item URL.\n * If you only want to display an item as active only when its path matches exactly, set `exactPathMatch` to true.\n */\n items: Array<{\n title: string,\n path: string,\n permissions?: string | Array\n exactPathMatch?: boolean,\n }>\n}\n\n/**\n * Simple tab navigation to allow navigating to subareas of a page.\n */\nconst PageNavigation = ({ items }: Props) => (\n \n {items.map(({ path, title, permissions, exactPathMatch }) => {\n if (!path) {\n return null;\n }\n\n return (\n \n \n \n \n {title}\n \n \n \n \n );\n })}\n \n);\n\nexport default PageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useRef } from 'react';\n\nimport Select from 'components/common/Select';\n\ntype Props = React.ComponentProps;\n\nconst PaginatedSelect = (props: Props) => {\n const selectRef = useRef();\n\n return (\n \n );\n};\n\nPaginatedSelect.propTypes = Select.propTypes;\n\nexport default PaginatedSelect;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useEffect, useState, useCallback } from 'react';\nimport debounce from 'lodash/debounce';\nimport type { PaginatedUsers } from 'src/stores/users/UsersStore';\n\nimport UsersDomain from 'domainActions/users/UsersDomain';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport { Spinner } from 'components/common';\nimport useCurrentUser from 'hooks/useCurrentUser';\n\nimport PaginatedSelect from '../common/Select/PaginatedSelect';\n\nconst DEFAULT_PAGINATION = { page: 1, perPage: 50, query: '', total: 0 };\n\nconst formatUsers = (users) => users.map((user) => ({ label: `${user.username} (${user.fullName})`, value: user.username }));\n\ntype Props = {\n value: string,\n onChange: (nextValue) => string,\n}\n\nconst UsersSelectField = ({ value, onChange }: Props) => {\n const currentUser = useCurrentUser();\n const [paginatedUsers, setPaginatedUsers] = useState();\n const [isNextPageLoading, setIsNextPageLoading] = useState(false);\n const [isSearching, setIsSearching] = useState(false);\n const loadUsersPaginated = useCallback((pagination = DEFAULT_PAGINATION) => {\n if (isPermitted(currentUser.permissions, 'users:list')) {\n setIsNextPageLoading(true);\n\n return UsersDomain.loadUsersPaginated(pagination).then((newPaginatedUser) => {\n setIsNextPageLoading(false);\n\n return newPaginatedUser;\n });\n }\n\n return undefined;\n }, [currentUser.permissions]);\n\n const loadUsers = (pagination, query = '') => {\n loadUsersPaginated({ ...pagination, page: pagination.page + 1, query }).then((response) => {\n setPaginatedUsers((prevUsers) => {\n const list = prevUsers.list.concat(response.list);\n const newPagination = { ...prevUsers.pagination, ...response.pagination };\n\n return { ...prevUsers, list, pagination: newPagination } as PaginatedUsers;\n });\n });\n };\n\n const loadMoreOptions = debounce(() => {\n const { pagination, pagination: { total }, list } = paginatedUsers;\n\n if (total > list.count()) {\n loadUsers(pagination);\n }\n }, 400);\n\n useEffect(() => {\n if (!paginatedUsers) {\n loadUsersPaginated().then(setPaginatedUsers);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleSearch = debounce((newValue, actionMeta) => {\n if ((actionMeta.action === 'input-change')) {\n setIsSearching(true);\n\n loadUsersPaginated({ ...DEFAULT_PAGINATION, query: newValue }).then((results) => {\n setIsSearching(true);\n setPaginatedUsers(results);\n });\n } else if (actionMeta.action === 'menu-close') {\n loadUsersPaginated().then(setPaginatedUsers);\n }\n }, 400);\n\n if (!paginatedUsers) {\n return
;\n }\n\n const { list, pagination: { total } } = paginatedUsers;\n\n return (\n {} : loadMoreOptions}\n multi\n total={total}\n onChange={onChange} />\n );\n};\n\nUsersSelectField.propTypes = {};\n\nexport default UsersSelectField;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\n\nimport { IfPermitted, MultiSelect, SourceCodeEditor, TimezoneSelect } from 'components/common';\nimport UsersSelectField from 'components/users/UsersSelectField';\nimport { ControlLabel, FormGroup, HelpBlock, Input } from 'components/bootstrap';\nimport { getValueFromInput } from 'util/FormsUtils';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\n\n// TODO: Default body template should come from the server\nconst DEFAULT_BODY_TEMPLATE = `--- [Event Definition] ---------------------------\nTitle: \\${event_definition_title}\nDescription: \\${event_definition_description}\nType: \\${event_definition_type}\n--- [Event] --------------------------------------\nAlert Replay: \\${http_external_uri}alerts/\\${event.id}/replay-search\nTimestamp: \\${event.timestamp}\nMessage: \\${event.message}\nSource: \\${event.source}\nKey: \\${event.key}\nPriority: \\${event.priority}\nAlert: \\${event.alert}\nTimestamp Processing: \\${event.timestamp}\nTimerange Start: \\${event.timerange_start}\nTimerange End: \\${event.timerange_end}\nFields:\n\\${foreach event.fields field} \\${field.key}: \\${field.value}\n\\${end}\n\\${if backlog}\n--- [Backlog] ------------------------------------\nLast messages accounting for this alert:\n\\${foreach backlog message}\n\\${message}\n\\${end}\n\\${end}\n`;\n\nconst DEFAULT_HTML_BODY_TEMPLATE = `\nEvent Definition \nTitle \\${event_definition_title} \nDescription \\${event_definition_description} \nType \\${event_definition_type} \n
\n
\nEvent \nAlert Replay \\${http_external_uri}alerts/\\${event.id}/replay-search \nTimestamp \\${event.timestamp} \nMessage \\${event.message} \nSource \\${event.source} \nKey \\${event.key} \nPriority \\${event.priority} \nAlert \\${event.alert} \nTimestamp Processing \\${event.timestamp} \nTimerange Start \\${event.timerange_start} \nTimerange End \\${event.timerange_end} \nSource Streams \\${event.source_streams} \nFields \\${foreach event.fields field}- \\${field.key}:\\${field.value}
\\${end}
\n
\n\\${if backlog}\n
\nBacklog (Last messages accounting for this alert) \n\\${foreach backlog message}\n\\${message} \n\\${end}\n
\n\\${end}\n`;\n\nclass EmailNotificationForm extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n static defaultConfig = {\n sender: '', // TODO: Default sender should come from the server. The default should be empty or the address configured in the email server settings\n // eslint-disable-next-line no-template-curly-in-string\n subject: 'Graylog event notification: ${event_definition_title}', // TODO: Default subject should come from the server\n reply_to: '',\n body_template: DEFAULT_BODY_TEMPLATE, // TODO: Default body template should come from the server\n html_body_template: DEFAULT_HTML_BODY_TEMPLATE,\n user_recipients: [],\n email_recipients: [],\n time_zone: 'UTC',\n };\n\n propagateChange = (key, value) => {\n const { config, onChange } = this.props;\n const nextConfig = cloneDeep(config);\n\n nextConfig[key] = value;\n onChange(nextConfig);\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n\n this.propagateChange(name, getValueFromInput(event.target));\n };\n\n handleTimeZoneChange = (nextValue) => {\n this.propagateChange('time_zone', nextValue);\n };\n\n handleBodyTemplateChange = (nextValue) => {\n this.propagateChange('body_template', nextValue);\n };\n\n handleHtmlBodyTemplateChange = (nextValue) => {\n this.propagateChange('html_body_template', nextValue);\n };\n\n handleRecipientsChange = (key) => (nextValue) => this.propagateChange(key, nextValue === '' ? [] : nextValue.split(','));\n\n render() {\n const { config, validation } = this.props;\n\n return (\n <>\n \n \n \n Sender (Optional)}\n type=\"text\"\n bsStyle={validation.errors.sender ? 'error' : null}\n help={get(validation, 'errors.sender[0]', 'The email address that should be used as the notification sender. Leave it empty to use the default sender address.')}\n value={config.sender || ''}\n onChange={this.handleChange} />\n \n\n \n \n User recipient(s) (Optional) \n \n \n {get(validation, 'errors.recipients[0]', 'Select Graylog users that will receive this Notification.')}\n \n \n \n\n \n Email recipient(s) (Optional) \n \n \n {get(validation, 'errors.recipients[0]', 'Add email addresses that will receive this Notification.')}\n \n \n Time zone for date/time values (Optional)>}>\n \n \n \n Body Template \n \n \n {get(validation, 'errors.body[0]', 'The template that will be used to generate the email body.')}\n \n \n \n HTML Body Template \n \n \n {get(validation, 'errors.body[0]', 'The template that will be used to generate the email HTML body.')}\n \n \n >\n );\n }\n}\n\nexport default EmailNotificationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport EmailNotificationForm from './EmailNotificationForm';\n\nconst EmailNotificationFormContainer = (props) => ;\n\nEmailNotificationFormContainer.propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default EmailNotificationFormContainer;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./EmailNotificationSummary.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./EmailNotificationSummary.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Well } from 'components/bootstrap';\n\nimport CommonNotificationSummary from './CommonNotificationSummary';\nimport styles from './EmailNotificationSummary.css';\n\nconst EmailNotificationSummary = ({ notification, ...otherProps }) => (\n \n <>\n \n Sender \n {notification.config.sender} \n \n \n Subject \n {notification.config.subject} \n \n \n Reply-To \n {notification.config.reply_to} \n \n \n User recipients \n {notification.config.user_recipients.join(', ') || 'No users will receive this notification.'} \n \n \n Email recipients \n \n {notification.config.email_recipients.join(', ') || 'No email addresses are configured to receive this notification.'}\n \n \n \n Email Body \n \n \n {notification.config.body_template || Empty body}\n \n \n \n \n Email HTML Body \n \n \n {notification.config.html_body_template || Empty HTML body}\n \n \n \n >\n \n);\n\nEmailNotificationSummary.propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object,\n definitionNotification: PropTypes.object.isRequired,\n};\n\nEmailNotificationSummary.defaultProps = {\n notification: {},\n};\n\nexport default EmailNotificationSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport styled from 'styled-components';\n\nimport { URLWhiteListInput } from 'components/common';\nimport { Button, Checkbox, Col, ControlLabel, Input, Row } from 'components/bootstrap';\nimport * as FormsUtils from 'util/FormsUtils';\n\nconst StyledButton = styled(Button)`\n clear: both;\n display: block;\n margin-bottom: 15px;\n`;\n\nclass HttpNotificationForm extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n setIsSubmitEnabled: PropTypes.func,\n };\n\n static defaultConfig = {\n url: '',\n api_key_as_header: false,\n api_key: '',\n api_secret: { keep_value: true },\n basic_auth: { keep_value: true },\n skip_tls_verification: false,\n };\n\n constructor() {\n super();\n\n this.state = {\n api_secret: '',\n basic_auth: '',\n reset: {\n api_secret: false,\n basic_auth: false,\n },\n };\n }\n\n componentDidMount() {\n const { config, onChange } = this.props;\n const nextConfig = cloneDeep(config);\n\n nextConfig.basic_auth = config.basic_auth?.is_set ? { keep_value: true } : null;\n nextConfig.api_secret = config.api_secret?.is_set ? { keep_value: true } : null;\n\n onChange(nextConfig);\n\n this.setState({ basic_auth: config.basic_auth.is_set ? '******' : '' });\n this.setState({ api_secret: config.api_secret.is_set ? '******' : '' });\n }\n\n propagateChange = (key, value) => {\n const { config, onChange } = this.props;\n const nextConfig = cloneDeep(config);\n\n nextConfig[key] = value;\n onChange(nextConfig);\n };\n\n handleChange = (event) => {\n const { name } = event.target;\n const inputValue = FormsUtils.getValueFromInput(event.target);\n\n this.propagateChange(name, inputValue);\n };\n\n handleSecretInputChange = (event) => {\n const { name } = event.target;\n const inputValue = FormsUtils.getValueFromInput(event.target);\n const value = inputValue.length === 0 ? { delete_value: true } : { set_value: inputValue };\n\n this.setState({ [name]: inputValue });\n this.propagateChange(name, value);\n };\n\n onValidationChange = (validationState) => {\n const { setIsSubmitEnabled } = this.props;\n\n setIsSubmitEnabled(validationState !== 'error');\n };\n\n resetSecret = (attribute) => {\n const { reset } = this.state;\n reset[attribute] = true;\n this.setState({ reset });\n\n this.propagateChange(attribute, { delete_value: true });\n this.setState({ [attribute]: '' });\n };\n\n undoResetSecret = (attribute) => {\n const { reset } = this.state;\n reset[attribute] = false;\n this.setState({ reset });\n\n this.propagateChange(attribute, { keep_value: true });\n this.setState({ [attribute]: '******' });\n };\n\n render() {\n const { config, validation } = this.props;\n const { api_secret, basic_auth } = config;\n const { reset } = this.state;\n\n return (\n <>\n \n \n Skip TLS verification\n \n \n \n {basic_auth?.keep_value ? (\n <>\n Basic authentication \n { this.resetSecret('basic_auth'); }}>\n Reset Secret\n \n >\n ) : (\n Basic authentication (Optional)}\n name=\"basic_auth\"\n type=\"password\"\n onChange={this.handleSecretInputChange}\n value={this.state.basic_auth || ''}\n help=\"The Basic authentication string needs to follow this format: ':'.\"\n buttonAfter={reset.basic_auth ? (\n \n ) : undefined} />\n )}\n \n
\n \n \n API Key (Optional)}\n type=\"text\"\n onChange={this.handleChange}\n bsStyle={validation.errors.api_key ? 'error' : null}\n help={get(validation, 'errors.api_key[0]', 'If an API secret is set, an API key must also be set.')}\n value={config.api_key} />\n \n
\n \n \n {api_secret?.keep_value ? (\n <>\n API Secret \n { this.resetSecret('api_secret'); }}>\n Reset Secret\n \n >\n ) : (\n API Secret (Optional)}\n name=\"api_secret\"\n type=\"password\"\n onChange={this.handleSecretInputChange}\n bsStyle={validation.errors.api_secret ? 'error' : null}\n help={get(validation, 'errors.api_secret[0]', 'If an API key is set, an API secret must also be set.')}\n value={this.state.api_secret || ''}\n buttonAfter={reset.api_secret ? (\n \n ) : undefined} />\n )}\n \n Send API Key/Secret as Header\n \n \n
\n >\n );\n }\n}\n\nHttpNotificationForm.defaultProps = {\n setIsSubmitEnabled: () => {},\n};\n\nexport default HttpNotificationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport CommonNotificationSummary from './CommonNotificationSummary';\n\nclass HttpNotificationSummary extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object,\n definitionNotification: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n notification: {},\n };\n\n render() {\n const { notification } = this.props;\n\n return (\n \n <>\n \n URL \n {notification.config.url}
\n \n >\n \n );\n }\n}\n\nexport default HttpNotificationSummary;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./LegacyNotificationCommonStyles.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./LegacyNotificationCommonStyles.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\n\nimport { Alert, ControlLabel, FormGroup, HelpBlock } from 'components/bootstrap';\nimport { Select } from 'components/common';\nimport { ConfigurationFormField } from 'components/configurationforms';\n\nimport commonStyles from './LegacyNotificationCommonStyles.css';\n\nconst formatLegacyTypes = (legacyTypes) => Object.keys(legacyTypes)\n .map((typeName) => ({ label: `Legacy ${legacyTypes[typeName].name}`, value: typeName }));\n\nclass LegacyNotificationForm extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n legacyTypes: PropTypes.object.isRequired,\n };\n\n static defaultConfig = {\n callback_type: '',\n configuration: {},\n };\n\n propagateMultiChange = (newValues) => {\n const { config, onChange } = this.props;\n const nextConfig = { ...config, ...newValues };\n\n onChange(nextConfig);\n };\n\n propagateChange = (key, value) => {\n const { config } = this.props;\n const nextConfiguration = { ...config.configuration, [key]: value };\n\n this.propagateMultiChange({ configuration: nextConfiguration });\n };\n\n getDefaultConfiguration = (legacyNotificationType) => {\n const { legacyTypes } = this.props;\n const { configuration } = legacyTypes[legacyNotificationType];\n const defaultConfiguration = {};\n\n Object.keys(configuration).forEach((configKey) => {\n defaultConfiguration[configKey] = configuration[configKey].default_value;\n });\n\n return defaultConfiguration;\n };\n\n handleSelectNotificationChange = (nextLegacyNotificationType) => {\n this.propagateMultiChange({\n callback_type: nextLegacyNotificationType,\n configuration: this.getDefaultConfiguration(nextLegacyNotificationType),\n });\n };\n\n handleFormFieldChange = (key, value) => {\n this.propagateChange(key, value);\n };\n\n renderNotificationForm(config, legacyType) {\n const { configuration } = legacyType;\n\n const configFields = Object.keys(configuration).map((configKey) => {\n const configField = configuration[configKey];\n const configValue = config.configuration[configKey];\n\n return (\n \n );\n });\n\n return (\n \n );\n }\n\n render() {\n const { config, legacyTypes, validation } = this.props;\n const callbackType = config.callback_type;\n const typeData = legacyTypes[callbackType];\n\n let content;\n\n if (typeData) {\n content = this.renderNotificationForm(config, typeData);\n } else if (callbackType) {\n content = (\n \n Unknown legacy alarm callback type: {callbackType} Please make sure the plugin is installed.\n \n );\n }\n\n return (\n <>\n \n\n \n Legacy alarm callbacks are deprecated and will be removed with the next major release. Please switch to the new notification types as soon as possible!\n \n\n {content}\n >\n );\n }\n}\n\nexport default LegacyNotificationForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Spinner } from 'components/common';\nimport connect from 'stores/connect';\nimport { EventNotificationsActions, EventNotificationsStore } from 'stores/event-notifications/EventNotificationsStore';\n\nimport LegacyNotificationForm from './LegacyNotificationForm';\n\nclass LegacyNotificationFormContainer extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n validation: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n notifications: PropTypes.object.isRequired,\n };\n\n componentDidMount() {\n const { notifications } = this.props;\n\n if (!notifications.allLegacyTypes) {\n EventNotificationsActions.listAllLegacyTypes();\n }\n }\n\n render() {\n const { notifications } = this.props;\n const { allLegacyTypes } = notifications;\n\n if (!allLegacyTypes) {\n return
;\n }\n\n return ;\n }\n}\n\nexport default connect(LegacyNotificationFormContainer, {\n notifications: EventNotificationsStore,\n});\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Alert } from 'components/bootstrap';\n\nimport CommonNotificationSummary from './CommonNotificationSummary';\nimport commonStyles from './LegacyNotificationCommonStyles.css';\n\nclass LegacyNotificationSummary extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object.isRequired,\n definitionNotification: PropTypes.object.isRequired,\n legacyTypes: PropTypes.object.isRequired,\n };\n\n render() {\n const { notification, legacyTypes } = this.props;\n const configurationValues = notification.config.configuration;\n const callbackType = notification.config.callback_type;\n const typeData = legacyTypes[callbackType];\n\n let content;\n\n if (typeData) {\n const typeConfiguration = typeData.configuration;\n\n content = Object.entries(typeConfiguration)\n .map(([key, value]) => (\n \n {value.human_name} \n {configurationValues[key]} \n \n ));\n } else {\n content = (\n \n Type \n \n Unknown legacy alarm callback type: {callbackType}
.\n Please make sure the plugin is installed.\n \n \n );\n }\n\n return (\n <>\n {!typeData && (\n \n Error in {notification.title || 'Legacy Alarm Callback'}: Unknown type {callbackType}
,\n please ensure the plugin is installed.\n \n )}\n \n <>\n {content}\n >\n \n >\n );\n }\n}\n\nexport default LegacyNotificationSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Spinner } from 'components/common';\nimport connect from 'stores/connect';\nimport { EventNotificationsActions, EventNotificationsStore } from 'stores/event-notifications/EventNotificationsStore';\n\nimport LegacyNotificationSummary from './LegacyNotificationSummary';\n\nclass LegacyNotificationSummaryContainer extends React.Component {\n static propTypes = {\n type: PropTypes.string.isRequired,\n notification: PropTypes.object,\n notifications: PropTypes.object.isRequired,\n definitionNotification: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n notification: {},\n };\n\n componentDidMount() {\n EventNotificationsActions.listAllLegacyTypes();\n }\n\n render() {\n const { notifications } = this.props;\n const { allLegacyTypes } = notifications;\n\n if (!allLegacyTypes) {\n return
;\n }\n\n return ;\n }\n}\n\nexport default connect(LegacyNotificationSummaryContainer, {\n notifications: EventNotificationsStore,\n});\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ReadOnlyFormGroup } from 'components/common';\nimport { Well } from 'components/bootstrap';\n\nimport styles from '../event-notification-types/EmailNotificationSummary.css';\n\nconst EmailNotificationDetails = ({ notification }) => (\n <>\n \n \n \n \n \n \n \n {notification.config.body_template || Empty body}\n \n )} />\n \n {notification.config.html_body_template || Empty body}\n \n )} />\n >\n);\n\nEmailNotificationDetails.propTypes = {\n notification: PropTypes.object.isRequired,\n};\n\nexport default EmailNotificationDetails;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ReadOnlyFormGroup } from 'components/common';\n\nconst HttpNotificationDetails = ({ notification }) => {\n const apiKeySet = notification.config.api_secret?.is_set;\n const apiSentAs = notification.config.api_key_as_header ? 'Header' : 'Query Parameter';\n\n return (\n <>\n \n \n \n \n \n >\n );\n};\n\nHttpNotificationDetails.propTypes = {\n notification: PropTypes.object.isRequired,\n};\n\nexport default HttpNotificationDetails;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ReadOnlyFormGroup, Spinner } from 'components/common';\nimport { Alert, Well } from 'components/bootstrap';\nimport { EventNotificationsActions } from 'stores/event-notifications/EventNotificationsStore';\n\nimport emailStyles from '../event-notification-types/EmailNotificationSummary.css';\nimport notificationStyles from '../event-notification-types/LegacyNotificationCommonStyles.css';\n\nconst LegacyNotificationDetails = ({ notification }) => {\n const [legacyTypes, setLegacyTypes] = useState();\n const configurationValues = notification.config.configuration;\n const callbackType = notification.config.callback_type;\n const typeData = legacyTypes?.[callbackType];\n\n useEffect(() => {\n EventNotificationsActions.listAllLegacyTypes().then((result) => setLegacyTypes(result.types));\n }, []);\n\n if (!legacyTypes) {\n return
;\n }\n\n return (\n <>\n {!typeData && (\n \n Error in {notification.title || 'Legacy Alarm Callback'}: Unknown type {callbackType}
,\n please ensure the plugin is installed.\n \n )}\n {typeData && Object.entries(typeData.configuration).map(([key, value]) => {\n if (key === 'body' || key === 'script_args') {\n return (\n \n {configurationValues[key] || Empty body}\n \n )} />\n );\n }\n\n return ;\n })}\n >\n );\n};\n\nLegacyNotificationDetails.propTypes = {\n notification: PropTypes.object.isRequired,\n};\n\nexport default LegacyNotificationDetails;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport EmailNotificationFormContainer from './EmailNotificationFormContainer';\nimport EmailNotificationForm from './EmailNotificationForm';\nimport EmailNotificationSummary from './EmailNotificationSummary';\nimport HttpNotificationForm from './HttpNotificationForm';\nimport HttpNotificationSummary from './HttpNotificationSummary';\nimport LegacyNotificationForm from './LegacyNotificationForm';\nimport LegacyNotificationFormContainer from './LegacyNotificationFormContainer';\nimport LegacyNotificationSummaryContainer from './LegacyNotificationSummaryContainer';\n\nimport EmailNotificationDetails from '../event-notification-details/EmailNotificationDetails';\nimport HttpNotificationDetails from '../event-notification-details/HttpNotificationDetails';\nimport LegacyNotificationDetails from '../event-notification-details/LegacyNotificationDetails';\n\nPluginStore.register(new PluginManifest({}, {\n eventNotificationTypes: [\n {\n type: 'email-notification-v1',\n displayName: 'Email Notification',\n formComponent: EmailNotificationFormContainer,\n summaryComponent: EmailNotificationSummary,\n detailsComponent: EmailNotificationDetails,\n defaultConfig: EmailNotificationForm.defaultConfig,\n },\n {\n type: 'http-notification-v1',\n displayName: 'HTTP Notification',\n formComponent: HttpNotificationForm,\n summaryComponent: HttpNotificationSummary,\n detailsComponent: HttpNotificationDetails,\n defaultConfig: HttpNotificationForm.defaultConfig,\n },\n {\n type: 'legacy-alarm-callback-notification-v1',\n displayName: 'Legacy Alarm Callbacks',\n formComponent: LegacyNotificationFormContainer,\n summaryComponent: LegacyNotificationSummaryContainer,\n detailsComponent: LegacyNotificationDetails,\n defaultConfig: LegacyNotificationForm.defaultConfig,\n },\n ],\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport PageNavigation from 'components/common/PageNavigation';\nimport Routes from 'routing/Routes';\nimport { Row } from 'components/bootstrap';\n\nconst NAV_ITEMS = [\n { title: 'Alerts & Events', path: Routes.ALERTS.LIST, exactPathMatch: true },\n { title: 'Event Definitions', path: Routes.ALERTS.DEFINITIONS.LIST },\n { title: 'Notifications', path: Routes.ALERTS.NOTIFICATIONS.LIST },\n];\n\nconst EventsPageNavigation = () => (\n \n \n
\n);\n\nexport default EventsPageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { UsersActions } from 'stores/users/UsersStore';\n\nimport notifyingAction from '../notifyingAction';\n\nconst create = notifyingAction({\n action: UsersActions.create,\n success: (user) => ({\n message: `User \"${user?.first_name} ${user?.last_name}\" was created successfully`,\n }),\n error: (error, user) => ({\n message: `Creating user \"${user?.first_name} ${user?.last_name}\" failed with status: ${error}`,\n }),\n});\n\nconst load = notifyingAction({\n action: UsersActions.load,\n error: (error, userId) => ({\n message: `Loading user with id \"${userId}\" failed with status: ${error}`,\n }),\n notFoundRedirect: true,\n});\n\nconst loadByUsername = notifyingAction({\n action: UsersActions.loadByUsername,\n error: (error, username) => ({\n message: `Loading user with username \"${username}\" failed with status: ${error}`,\n }),\n notFoundRedirect: true,\n});\n\nconst update = notifyingAction({\n action: UsersActions.update,\n success: (_userId, _payload, fullName) => ({\n message: `User \"${fullName}\" was updated successfully`,\n }),\n error: (error, _userId, _payload, fullName) => ({\n message: `Updating user \"${fullName}\" failed with status: ${error}`,\n }),\n});\n\nconst deleteAction = notifyingAction({\n action: UsersActions.delete,\n success: (_userId, fullName) => ({\n message: `User \"${fullName}\" was deleted successfully`,\n }),\n error: (error, _userId, fullName) => ({\n message: `Deleting user \"${fullName}\" failed with status: ${error}`,\n }),\n});\n\nconst changePassword = notifyingAction({\n action: UsersActions.changePassword,\n success: () => ({\n message: 'Password was changed successfully ',\n }),\n error: (error, userId) => ({\n message: `Changing password for user with id \"${userId}\" failed with status: ${error}`,\n }),\n});\n\nconst createToken = notifyingAction({\n action: UsersActions.createToken,\n success: (_userId, tokenName) => ({\n message: `Token \"${tokenName}\" created successfully`,\n }),\n error: (error, userId, tokenName) => ({\n message: `Creating token \"${tokenName}\" for user with id \"${userId}\" failed with status: ${error}`,\n }),\n});\n\nconst loadTokens = notifyingAction({\n action: UsersActions.loadTokens,\n error: (error, userId) => ({\n message: `Loading tokens for user with id \"${userId}\" failed with status: ${error}`,\n }),\n});\n\nconst deleteToken = notifyingAction({\n action: UsersActions.deleteToken,\n success: (_userId, _tokenId, tokenName) => ({\n message: `Token \"${tokenName}\" deleted successfully`,\n }),\n error: (error, userId, _tokenId, tokenName) => ({\n message: `Deleting token \"${tokenName}\" for user with id \"${userId}\" failed with status: ${error}`,\n }),\n});\n\nconst loadUsers = notifyingAction({\n action: UsersActions.loadUsers,\n error: (error) => ({\n message: `Loading users failed with status: ${error}`,\n }),\n});\n\nconst loadUsersPaginated = notifyingAction({\n action: UsersActions.loadUsersPaginated,\n error: (error) => ({\n message: `Loading users failed with status: ${error}`,\n }),\n});\n\nconst setStatus = notifyingAction({\n action: UsersActions.setStatus,\n success: (userId, accountStatus) => ({\n message: `User \"${userId}\" was set to ${accountStatus}`,\n }),\n error: (error, userId, accountStatus) => ({\n message: `Updating user (\"${userId}\") to ${accountStatus} failed with status: ${error}`,\n }),\n});\n\nexport default {\n create,\n load,\n loadByUsername,\n update,\n delete: deleteAction,\n changePassword,\n createToken,\n loadTokens,\n deleteToken,\n loadUsers,\n loadUsersPaginated,\n setStatus,\n};\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport type { $PropertyType } from 'utility-types';\nimport * as Immutable from 'immutable';\n\nexport type AccountStatus = 'enabled' | 'disabled' | 'deleted';\n\nexport type UserOverviewJSON = {\n id: string;\n username: string;\n full_name: string;\n email: string;\n external_user: boolean | null | undefined;\n roles: Array;\n read_only: boolean | null | undefined;\n session_active: boolean | null | undefined;\n client_address: string;\n last_activity: string | null | undefined;\n enabled: boolean;\n auth_service_id: string;\n auth_service_uid: string;\n auth_service_enabled: boolean;\n account_status: AccountStatus;\n};\n\ntype InternalState = {\n id: string;\n username: string;\n fullName: string;\n email: string;\n roles: Immutable.Set;\n readOnly: boolean;\n external: boolean;\n sessionActive: boolean;\n clientAddress: string;\n lastActivity: string | null | undefined;\n enabled: boolean;\n authServiceId: string;\n authServiceUid: string;\n authServiceEnabled: boolean;\n accountStatus: AccountStatus;\n};\n\nexport default class UserOverview {\n _value: InternalState;\n\n constructor(\n id: $PropertyType,\n username: $PropertyType,\n fullName: $PropertyType,\n email: $PropertyType,\n roles: $PropertyType,\n readOnly: $PropertyType,\n external: $PropertyType,\n sessionActive: $PropertyType,\n clientAddress: $PropertyType,\n lastActivity: $PropertyType,\n enabled: $PropertyType,\n authServiceId: $PropertyType,\n authServiceUid: $PropertyType,\n authServiceEnabled: $PropertyType,\n accountStatus: $PropertyType,\n ) {\n this._value = {\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n authServiceEnabled,\n accountStatus,\n };\n }\n\n get id() {\n return this._value.id;\n }\n\n get username() {\n return this._value.username;\n }\n\n get name() {\n return this._value.username;\n }\n\n get fullName() {\n return this._value.fullName;\n }\n\n get description() {\n return this._value.fullName;\n }\n\n get email() {\n return this._value.email;\n }\n\n get roles() {\n return this._value.roles;\n }\n\n get readOnly() {\n return this._value.readOnly;\n }\n\n get external() {\n return this._value.external;\n }\n\n get sessionActive() {\n return this._value.sessionActive;\n }\n\n get clientAddress() {\n return this._value.clientAddress;\n }\n\n get lastActivity() {\n return this._value.lastActivity;\n }\n\n get enabled() {\n return this._value.enabled;\n }\n\n get authServiceId() {\n return this._value.authServiceId;\n }\n\n get authServiceUid() {\n return this._value.authServiceUid;\n }\n\n get authServiceEnabled() {\n return this._value.authServiceEnabled;\n }\n\n get accountStatus() {\n return this._value.accountStatus;\n }\n\n toBuilder() {\n const {\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n authServiceEnabled,\n accountStatus,\n } = this._value;\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return new Builder(Immutable.Map({\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n authServiceEnabled,\n accountStatus,\n }));\n }\n\n static create(\n id: $PropertyType,\n username: $PropertyType,\n fullName: $PropertyType,\n email: $PropertyType,\n roles: $PropertyType,\n readOnly: $PropertyType,\n external: $PropertyType,\n sessionActive: $PropertyType,\n clientAddress: $PropertyType,\n lastActivity: $PropertyType,\n enabled: $PropertyType,\n authServiceId: $PropertyType,\n authServiceUid: $PropertyType,\n authServiceEnabled: $PropertyType,\n accountStatus: $PropertyType,\n ) {\n return new UserOverview(\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n authServiceEnabled,\n accountStatus,\n );\n }\n\n toJSON(): UserOverviewJSON {\n const {\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n authServiceEnabled,\n accountStatus,\n } = this._value;\n\n return {\n id,\n username,\n full_name: fullName,\n email,\n roles: roles.toArray(),\n read_only: readOnly,\n external_user: external,\n session_active: sessionActive,\n client_address: clientAddress,\n last_activity: lastActivity,\n enabled,\n auth_service_id: authServiceId,\n auth_service_uid: authServiceUid,\n auth_service_enabled: authServiceEnabled,\n account_status: accountStatus,\n };\n }\n\n static fromJSON(value: UserOverviewJSON) {\n const {\n id,\n username,\n full_name: fullName,\n email,\n roles,\n read_only: readOnly,\n external_user: external,\n session_active: sessionActive,\n client_address: clientAddress,\n last_activity: lastActivity,\n enabled,\n auth_service_id: authServiceId,\n auth_service_uid: authServiceUid,\n auth_service_enabled: authServiceEnabled,\n account_status: accountStatus,\n } = value;\n\n return UserOverview.create(id,\n username,\n fullName,\n email,\n Immutable.Set(roles),\n readOnly ?? false,\n external ?? false,\n sessionActive ?? false,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n authServiceEnabled,\n accountStatus);\n }\n\n static builder(): Builder {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return new Builder();\n }\n}\n\ntype BuilderState = Immutable.Map;\n\nclass Builder {\n value: BuilderState;\n\n constructor(value: BuilderState = Immutable.Map()) {\n this.value = value;\n }\n\n id(value: $PropertyType) {\n return new Builder(this.value.set('id', value));\n }\n\n username(value: $PropertyType) {\n return new Builder(this.value.set('username', value));\n }\n\n fullName(value: $PropertyType) {\n return new Builder(this.value.set('fullName', value));\n }\n\n email(value: $PropertyType) {\n return new Builder(this.value.set('email', value));\n }\n\n roles(value: $PropertyType) {\n return new Builder(this.value.set('roles', value));\n }\n\n readOnly(value: $PropertyType) {\n return new Builder(this.value.set('readOnly', value));\n }\n\n external(value: $PropertyType) {\n return new Builder(this.value.set('external', value));\n }\n\n sessionActive(value: $PropertyType) {\n return new Builder(this.value.set('sessionActive', value));\n }\n\n clientAddress(value: $PropertyType) {\n return new Builder(this.value.set('clientAddress', value));\n }\n\n lastActivity(value: $PropertyType) {\n return new Builder(this.value.set('lastActivity', value));\n }\n\n enabled(value: $PropertyType) {\n return new Builder(this.value.set('enabled', value));\n }\n\n authServiceId(value: $PropertyType) {\n return new Builder(this.value.set('authServiceId', value));\n }\n\n authServiceUid(value: $PropertyType) {\n return new Builder(this.value.set('authServiceUid', value));\n }\n\n authServiceEnabled(value: $PropertyType) {\n return new Builder(this.value.set('authServiceEnabled', value));\n }\n\n accountStatus(value: $PropertyType) {\n return new Builder(this.value.set('accountStatus', value));\n }\n\n build() {\n const {\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n authServiceEnabled,\n accountStatus,\n } = this.value.toObject();\n\n return new UserOverview(\n id,\n username,\n fullName,\n email,\n roles,\n readOnly,\n external,\n sessionActive,\n clientAddress,\n lastActivity,\n enabled,\n authServiceId,\n authServiceUid,\n authServiceEnabled,\n accountStatus,\n );\n }\n}\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport URI from 'urijs';\nimport concat from 'lodash/concat';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\nimport PaginationURL from 'util/PaginationURL';\n\nexport type TestResult = {\n isLoading: boolean,\n id?: string,\n error?: boolean,\n message?: string,\n};\nexport type TestResults ={\n [key: string]: TestResult\n};\nexport type EventNotification = {\n id: string,\n title: string,\n description: string,\n config: {\n type?: string\n },\n}\n\nexport type LegacyEventNotification = {\n name: string,\n configuration: {}\n}\n\ntype EventNotificationsActionsType = {\n listAll: () => Promise<{ notifications: Array }>,\n listAllLegacyTypes: () => Promise<{ types: { [key: string]: LegacyEventNotification } }>,\n listPaginated: () => Promise<{ notifications: Array }>,\n searchPaginated: () => Promise<{ elements: Array }>,\n get: (id: string) => Promise,\n create: (eventNotification: EventNotification) => Promise,\n update: (id: string, eventNotification: EventNotification) => Promise,\n delete: (eventNotification: EventNotification) => Promise,\n test: (eventNotification: EventNotification) => Promise,\n testPersisted: (eventNotification: EventNotification) => Promise,\n}\nexport const EventNotificationsActions = singletonActions(\n 'core.EventNotifications',\n () => Reflux.createActions({\n listAll: { asyncResult: true },\n listAllLegacyTypes: { asyncResult: true },\n listPaginated: { asyncResult: true },\n searchPaginated: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n update: { asyncResult: true },\n delete: { asyncResult: true },\n test: { asyncResult: true },\n testPersisted: { asyncResult: true },\n }),\n);\n\ntype EventNotificationsStoreState = {\n all: Array,\n allLegacyTypes: { [key: string]: LegacyEventNotification },\n notifications: Array,\n query: string,\n pagination: {\n count: number,\n page: number,\n pageSize: number,\n total: number,\n grandTotal: number,\n }\n}\nexport const EventNotificationsStore = singletonStore(\n 'core.EventNotifications',\n () => Reflux.createStore({\n listenables: [EventNotificationsActions],\n sourceUrl: '/events/notifications',\n all: undefined,\n allLegacyTypes: undefined,\n notifications: undefined,\n query: undefined,\n pagination: {\n count: undefined,\n page: undefined,\n pageSize: undefined,\n total: undefined,\n grandTotal: undefined,\n },\n\n getInitialState() {\n return this.getState();\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n getState() {\n return {\n all: this.all,\n allLegacyTypes: this.allLegacyTypes,\n notifications: this.notifications,\n query: this.query,\n pagination: this.pagination,\n };\n },\n\n eventNotificationsUrl({ segments = [], query = {} }) {\n const uri = new URI(this.sourceUrl);\n const nextSegments = concat(uri.segment(), segments);\n\n uri.segmentCoded(nextSegments);\n uri.query(query);\n\n return URLUtils.qualifyUrl(uri.resource());\n },\n\n refresh() {\n if (this.all) {\n this.listAll();\n }\n\n if (this.pagination.page) {\n this.listPaginated({\n query: this.query,\n page: this.pagination.page,\n pageSize: this.pagination.pageSize,\n });\n }\n },\n\n listAll() {\n const promise = fetch('GET', this.eventNotificationsUrl({ query: { per_page: 0 } }));\n\n promise.then((response) => {\n this.all = response.notifications;\n this.propagateChanges();\n\n return response;\n });\n\n EventNotificationsActions.listAll.promise(promise);\n },\n\n listPaginated({ query = '', page = 1, pageSize = 10 }) {\n const promise = fetch('GET', this.eventNotificationsUrl({\n query: {\n query: query,\n page: page,\n per_page: pageSize,\n },\n }));\n\n promise.then((response) => {\n this.notifications = response.notifications;\n this.query = response.query;\n\n this.pagination = {\n count: response.count,\n page: response.page,\n pageSize: response.per_page,\n total: response.total,\n grandTotal: response.grand_total,\n };\n\n this.propagateChanges();\n\n return response;\n });\n\n EventNotificationsActions.listPaginated.promise(promise);\n },\n searchPaginated(newPage, newPerPage, newQuery, additional) {\n const url = PaginationURL(`${this.sourceUrl}/paginated`, newPage, newPerPage, newQuery, additional);\n\n const promise = fetch('GET', URLUtils.qualifyUrl(url))\n .then((response) => {\n const {\n elements,\n query,\n attributes,\n pagination: {\n count,\n total,\n page,\n per_page: perPage,\n },\n } = response;\n\n return {\n elements,\n attributes,\n pagination: {\n count,\n total,\n page,\n perPage,\n query,\n },\n };\n });\n\n EventNotificationsActions.searchPaginated.promise(promise);\n\n return promise;\n },\n get(notificationId) {\n const promise = fetch('GET', this.eventNotificationsUrl({ segments: [notificationId] }));\n\n promise.catch((error) => {\n if (error.status === 404) {\n UserNotification.error(`Unable to find Event Notification with id <${notificationId}>, please ensure it wasn't deleted.`,\n 'Could not retrieve Event Notification');\n }\n });\n\n EventNotificationsActions.get.promise(promise);\n },\n\n create(notification) {\n const promise = fetch('POST', this.eventNotificationsUrl({}), notification);\n\n promise.then(\n (response) => {\n UserNotification.success('Notification created successfully', `Notification \"${notification.title}\" was created successfully.`);\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Creating Notification \"${notification.title}\" failed with status: ${error}`,\n 'Could not save Notification');\n }\n },\n );\n\n EventNotificationsActions.create.promise(promise);\n },\n\n update(notificationId, notification) {\n const promise = fetch('PUT', this.eventNotificationsUrl({ segments: [notificationId] }), notification);\n\n promise.then(\n (response) => {\n UserNotification.success('Notification updated successfully', `Notification \"${notification.title}\" was updated successfully.`);\n this.refresh();\n\n return response;\n },\n (error) => {\n if (error.status !== 400 || !error.additional.body || !error.additional.body.failed) {\n UserNotification.error(`Updating Notification \"${notification.title}\" failed with status: ${error}`,\n 'Could not update Notification');\n }\n },\n );\n\n EventNotificationsActions.update.promise(promise);\n },\n\n delete(notification) {\n const promise = fetch('DELETE', this.eventNotificationsUrl({ segments: [notification.id] }));\n\n promise.then(\n () => {\n UserNotification.success('Notification deleted successfully', `Notification \"${notification.title}\" was deleted successfully.`);\n this.refresh();\n },\n (error) => {\n UserNotification.error(`Deleting Notification \"${notification.title}\" failed with status: ${error}`,\n 'Could not delete Notification');\n },\n );\n\n EventNotificationsActions.delete.promise(promise);\n },\n\n test(notification) {\n const promise = fetch('POST', this.eventNotificationsUrl({ segments: ['test'] }), notification);\n\n EventNotificationsActions.test.promise(promise);\n },\n\n testPersisted(notification) {\n const promise = fetch('POST', this.eventNotificationsUrl({ segments: [notification.id, 'test'] }));\n\n EventNotificationsActions.testPersisted.promise(promise);\n },\n\n listAllLegacyTypes() {\n const promise = fetch('GET', this.eventNotificationsUrl({ segments: ['legacy', 'types'] }));\n\n promise.then((response) => {\n this.allLegacyTypes = response.types;\n this.propagateChanges();\n\n return response;\n });\n\n EventNotificationsActions.listAllLegacyTypes.promise(promise);\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport * as Immutable from 'immutable';\nimport URI from 'urijs';\n\nimport type { UserOverviewJSON, AccountStatus } from 'logic/users/UserOverview';\nimport UserOverview from 'logic/users/UserOverview';\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { singletonStore, singletonActions } from 'logic/singleton';\nimport { qualifyUrl } from 'util/URLUtils';\nimport PaginationURL from 'util/PaginationURL';\nimport type { UserJSON } from 'logic/users/User';\nimport User from 'logic/users/User';\nimport type { PaginatedListJSON, Pagination, PaginatedList } from 'stores/PaginationTypes';\n\nexport type PaginatedUsersResponse = PaginatedListJSON & {\n users: Array;\n context: {\n admin_user: UserOverviewJSON;\n };\n};\n\nexport type UserCreate = {\n email: UserJSON['email'];\n full_name: UserJSON['full_name'];\n first_name: UserJSON['first_name'];\n last_name: UserJSON['last_name'];\n password: string;\n permissions: UserJSON['permissions'];\n roles: UserJSON['roles'];\n session_timeout_ms: UserJSON['session_timeout_ms'];\n timezone: UserJSON['timezone'];\n username: UserJSON['username'];\n};\n\nexport type UserUpdate = Partial;\n\nexport type Token = {\n id: string;\n name: string;\n token: string;\n last_access: string;\n};\n\nexport type TokenSummary = {\n id: string,\n name: string,\n last_access: string,\n};\n\nexport type ChangePasswordRequest = {\n old_password: string;\n password: string;\n};\n\nexport type PaginatedUsers = PaginatedList & {\n adminUser: UserOverview | null | undefined,\n};\n\nexport type Query = {\n include_permissions?: boolean;\n include_sessions?: boolean;\n};\n\nexport type ActionsType = {\n create: (user: UserCreate) => Promise;\n load: (userId: string) => Promise;\n loadByUsername: (username: string) => Promise;\n update: (userId: string, request: UserUpdate, fullName: string) => Promise;\n delete: (userId: string, fullName: string) => Promise;\n changePassword: (userId: string, request: ChangePasswordRequest) => Promise;\n createToken: (userId: string, tokenName: string) => Promise;\n loadTokens: (userId: string) => Promise;\n deleteToken: (userId: string, tokenId: string, tokenName: string) => Promise;\n loadUsers: (query?: Query) => Promise>;\n loadUsersPaginated: (pagination: Pagination) => Promise;\n setStatus: (userId: string, newStatus: AccountStatus) => Promise;\n};\n\nconst usersUrl = ({ url = '', query = {} }) => {\n const uri = new URI(url);\n\n uri.query(query);\n\n return qualifyUrl(uri.resource());\n};\n\nexport const UsersActions = singletonActions(\n 'core.Users',\n () => Reflux.createActions({\n create: { asyncResult: true },\n load: { asyncResult: true },\n loadByUsername: { asyncResult: true },\n update: { asyncResult: true },\n delete: { asyncResult: true },\n changePassword: { asyncResult: true },\n createToken: { asyncResult: true },\n loadTokens: { asyncResult: true },\n deleteToken: { asyncResult: true },\n loadUsersPaginated: { asyncResult: true },\n loadUsers: { asyncResult: true },\n setStatus: { asyncResult: true },\n }),\n);\n\nexport const UsersStore = singletonStore('core.Users', () => Reflux.createStore({\n listenables: [UsersActions],\n\n create(user: UserCreate): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.create().url);\n const promise = fetch('POST', url, user);\n UsersActions.create.promise(promise);\n\n return promise;\n },\n\n load(id: string): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.load(encodeURIComponent(id)).url);\n const promise = fetch('GET', url).then(User.fromJSON);\n\n UsersActions.load.promise(promise);\n\n return promise;\n },\n\n loadByUsername(userId: string): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.loadByUsername(encodeURIComponent(userId)).url);\n const promise = fetch('GET', url).then(User.fromJSON);\n\n UsersActions.loadByUsername.promise(promise);\n\n return promise;\n },\n\n update(userId: string, user: UserUpdate): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.update(encodeURIComponent(userId)).url);\n const promise = fetch('PUT', url, user);\n UsersActions.update.promise(promise);\n\n return promise;\n },\n\n delete(userId: string): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.delete(encodeURIComponent(userId)).url);\n const promise = fetch('DELETE', url);\n\n UsersActions.delete.promise(promise);\n\n return promise;\n },\n\n changePassword(userId: string, request: ChangePasswordRequest): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.changePassword(encodeURIComponent(userId)).url);\n const promise = fetch('PUT', url, request);\n UsersActions.changePassword.promise(promise);\n\n return promise;\n },\n\n createToken(userId: string, tokenName: string): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.create_token(encodeURIComponent(userId), encodeURIComponent(tokenName)).url);\n const promise = fetch('POST', url);\n UsersActions.createToken.promise(promise);\n\n return promise;\n },\n\n loadTokens(userId: string): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.list_tokens(encodeURIComponent(userId)).url);\n const promise = fetch('GET', url).then((response) => response.tokens);\n UsersActions.loadTokens.promise(promise);\n\n return promise;\n },\n\n deleteToken(userId: string, tokenId: string): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.delete_token(encodeURIComponent(userId), encodeURIComponent(tokenId)).url);\n const promise = fetch('DELETE', url);\n UsersActions.deleteToken.promise(promise);\n\n return promise;\n },\n\n loadUsers(query: Query = {}): Promise> {\n const url = usersUrl({ url: ApiRoutes.UsersApiController.list().url, query });\n const promise = fetch('GET', url).then(({\n users,\n }) => Immutable.List(users.map((user) => UserOverview.fromJSON(user))));\n UsersActions.loadUsers.promise(promise);\n\n return promise;\n },\n\n loadUsersPaginated({\n page,\n perPage,\n query,\n }: Pagination): Promise {\n const url = PaginationURL(ApiRoutes.UsersApiController.paginated().url, page, perPage, query);\n\n const promise = fetch('GET', qualifyUrl(url)).then((response: PaginatedUsersResponse) => ({\n adminUser: response.context.admin_user ? UserOverview.fromJSON(response.context.admin_user) : undefined,\n list: Immutable.List(response.users.map((user) => UserOverview.fromJSON(user))),\n pagination: {\n page: response.page,\n perPage: response.per_page,\n query: response.query,\n count: response.count,\n total: response.total,\n },\n }));\n\n UsersActions.loadUsersPaginated.promise(promise);\n\n return promise;\n },\n\n setStatus(userId: string, accountStatus: AccountStatus): Promise {\n const url = qualifyUrl(ApiRoutes.UsersApiController.setStatus(userId, accountStatus).url);\n const promise = fetch('PUT', url);\n UsersActions.setStatus.promise(promise);\n\n return promise;\n },\n}));\n"],"names":["___CSS_LOADER_EXPORT___","module","Container","StyledButton","theme","items","path","title","permissions","exactPathMatch","PaginatedSelect","props","selectRef","Select","DEFAULT_PAGINATION","formatUsers","users","user","UsersSelectField","value","onChange","currentUser","useCurrentUser","paginatedUsers","setPaginatedUsers","isNextPageLoading","setIsNextPageLoading","isSearching","setIsSearching","loadUsersPaginated","pagination","UsersDomain","newPaginatedUser","loadUsers","query","response","prevUsers","list","newPagination","loadMoreOptions","total","handleSearch","newValue","actionMeta","results","DEFAULT_BODY_TEMPLATE","DEFAULT_HTML_BODY_TEMPLATE","EmailNotificationForm","key","config","nextConfig","event","name","nextValue","validation","HideOnCloud","EmailNotificationFormContainer","options","update","notification","otherProps","CommonNotificationSummary","HttpNotificationForm","inputValue","FormsUtils","validationState","setIsSubmitEnabled","attribute","reset","api_secret","basic_auth","HttpNotificationSummary","formatLegacyTypes","legacyTypes","typeName","LegacyNotificationForm","newValues","nextConfiguration","legacyNotificationType","configuration","defaultConfiguration","configKey","nextLegacyNotificationType","legacyType","configFields","configField","configValue","callbackType","typeData","content","LegacyNotificationFormContainer","notifications","allLegacyTypes","connect","EventNotificationsStore","LegacyNotificationSummary","configurationValues","typeConfiguration","LegacyNotificationSummaryContainer","EmailNotificationDetails","HttpNotificationDetails","apiKeySet","apiSentAs","LegacyNotificationDetails","setLegacyTypes","result","NAV_ITEMS","create","error","load","userId","loadByUsername","username","_userId","_payload","fullName","deleteAction","changePassword","createToken","tokenName","loadTokens","deleteToken","_tokenId","setStatus","accountStatus","UserOverview","id","email","roles","readOnly","external","sessionActive","clientAddress","lastActivity","enabled","authServiceId","authServiceUid","authServiceEnabled","Builder","EventNotificationsActions","segments","uri","nextSegments","promise","page","pageSize","newPage","newPerPage","newQuery","additional","url","elements","attributes","count","perPage","notificationId","usersUrl","UsersActions","UsersStore","request","tokenId"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy