web-interface.assets.bb8c8232-9403.5b2c44c82fca60f630f3.js.map Maven / Gradle / Ivy
{"version":3,"file":"bb8c8232-9403.5b2c44c82fca60f630f3.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/common/PageNavigation.tsx","webpack://graylog-web-interface/./src/components/permissions/RolesSelector.tsx","webpack://graylog-web-interface/./src/components/users/UserCreate/EmailFormGroup.tsx","webpack://graylog-web-interface/./src/components/users/UserCreate/FirstNameFormGroup.tsx","webpack://graylog-web-interface/./src/components/users/UserCreate/LastNameFormGroup.tsx","webpack://graylog-web-interface/./src/components/users/UserCreate/PasswordFormGroup.tsx","webpack://graylog-web-interface/./src/components/users/UserCreate/ServiceAccountFormGroup.tsx","webpack://graylog-web-interface/./src/components/users/timeoutConstants.ts","webpack://graylog-web-interface/./src/components/users/TimeoutUnitSelect.tsx","webpack://graylog-web-interface/./src/components/users/TimeoutInput.tsx","webpack://graylog-web-interface/./src/components/users/UserCreate/TimeoutFormGroup.tsx","webpack://graylog-web-interface/./src/components/users/UserCreate/TimezoneFormGroup.tsx","webpack://graylog-web-interface/./src/components/users/navigation/UsersPageNavigation.tsx","webpack://graylog-web-interface/./src/domainActions/roles/AuthzRolesDomain.ts","webpack://graylog-web-interface/./src/hooks/useIsGlobalTimeoutEnabled.ts","webpack://graylog-web-interface/./src/logic/roles/Role.ts","webpack://graylog-web-interface/./src/actions/roles/AuthzRolesActions.ts","webpack://graylog-web-interface/./src/stores/roles/AuthzRolesStore.ts"],"sourcesContent":["/*\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 color: ${theme.colors.variant.darker.default};\n \n &:hover,\n &:focus {\n background: inherit;\n text-decoration: none;\n }\n\n &:hover {\n color: inherit;\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\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 * as Immutable from 'immutable';\nimport compact from 'lodash/compact';\nimport PropTypes from 'prop-types';\nimport { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport type { PaginatedRoles } from 'actions/roles/AuthzRolesActions';\nimport AuthzRolesDomain from 'domainActions/roles/AuthzRolesDomain';\nimport type Role from 'logic/roles/Role';\nimport { Button } from 'components/bootstrap';\nimport { Select, Spinner, ErrorAlert } from 'components/common';\n\ntype Props = {\n assignedRolesIds: Immutable.Set,\n identifier: (role: Role) => string,\n onSubmit: (role: Immutable.Set) => Promise,\n submitOnSelect?: boolean,\n};\n\nconst SubmitButton = styled(Button)`\n margin-left: 15px;\n`;\n\nconst FormElements = styled.div`\n display: flex;\n`;\n\nconst RoleSelectOption = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst StyledSelect = styled(Select)`\n flex: 1;\n`;\n\nconst _renderRoleOption = ({ label }: { label: string }) => (\n {label} \n);\n\nconst _options = (roles, assignedRolesIds, identifier) => roles\n .filter((role) => !assignedRolesIds.includes(identifier(role)))\n .toArray()\n .map((r) => ({ label: r.name, value: r.name, role: r }));\n\nconst _assignRole = (selectedRoleNames, roles, onSubmit, setselectedRoleNames, setIsSubmitting, setError) => {\n if (!selectedRoleNames) {\n return;\n }\n\n const selectedRoleNameList = selectedRoleNames.split(',');\n\n const selectedRoles = Immutable.Set(compact(selectedRoleNameList.map((selection) => roles.find((r) => r.name === selection))));\n\n if (selectedRoles.size <= 0) {\n setError(`Role assignment failed, because the roles ${selectedRoleNames ?? '(undefined)'} does not exist`);\n\n return;\n }\n\n setError();\n setIsSubmitting(true);\n\n onSubmit(selectedRoles).then(() => {\n setselectedRoleNames();\n setIsSubmitting(false);\n });\n};\n\nconst _loadRoles = (setPaginatedRoles) => {\n const getUnlimited = { page: 1, perPage: 0, query: '' };\n\n AuthzRolesDomain.loadRolesPaginated(getUnlimited).then(setPaginatedRoles);\n};\n\nconst RolesSelector = ({ assignedRolesIds, onSubmit, identifier, submitOnSelect }: Props) => {\n const [paginatedRoles, setPaginatedRoles] = useState();\n const [selectedRoleNames, setselectedRoleNames] = useState();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [error, setError] = useState();\n\n useEffect(() => _loadRoles(setPaginatedRoles), []);\n\n const onChange = (items) => {\n const newselectedRoleNameList = items;\n\n if (submitOnSelect) {\n _assignRole(newselectedRoleNameList, paginatedRoles.list, onSubmit, setselectedRoleNames, setIsSubmitting, setError);\n }\n\n setselectedRoleNames(items);\n };\n\n if (!paginatedRoles) {\n return ;\n }\n\n const _onSubmit = () => _assignRole(selectedRoleNames, paginatedRoles.list, onSubmit, setselectedRoleNames, setIsSubmitting, setError);\n const options = _options(paginatedRoles.list, assignedRolesIds, identifier);\n\n return (\n \n \n \n {!submitOnSelect && (\n \n Assign Role\n \n )}\n\n \n \n {error}\n \n \n );\n};\n\nRolesSelector.defaultProps = {\n identifier: (role) => role.id,\n submitOnSelect: false,\n};\n\nRolesSelector.propTypes = {\n identifier: PropTypes.func,\n onSubmit: PropTypes.func.isRequired,\n submitOnSelect: PropTypes.bool,\n};\n\nexport default RolesSelector;\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 { FormikFormGroup } from 'components/common';\n\nconst EmailFormGroup = () => (\n \n);\n\nexport default EmailFormGroup;\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 { FormikFormGroup } from 'components/common';\n\nconst FirstNameFormGroup = () => (\n \n);\n\nexport default FirstNameFormGroup;\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 { FormikFormGroup } from 'components/common';\n\nconst LastNameFormGroup = () => (\n \n);\n\nexport default LastNameFormGroup;\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 { FormikInput } from 'components/common';\nimport { Row, Col, Input } from 'components/bootstrap';\n\nexport const PASSWORD_MIN_LENGTH = 6;\n\nexport const validatePasswords = (errors: { [name: string]: string }, password: string, passwordRepeat: string) => {\n const newErrors = { ...errors };\n\n if (password && password.length < PASSWORD_MIN_LENGTH) {\n newErrors.password = `Password must be at least ${PASSWORD_MIN_LENGTH} characters long`;\n }\n\n if (password && passwordRepeat) {\n const passwordMatches = password === passwordRepeat;\n\n if (!passwordMatches) {\n newErrors.password_repeat = 'Passwords do not match';\n }\n }\n\n return newErrors;\n};\n\ntype Props = {};\n\n// eslint-disable-next-line no-empty-pattern\nconst PasswordFormGroup = ({}: Props) => (\n \n \n \n \n \n \n \n \n
\n \n);\n\nPasswordFormGroup.defaultProps = {\n passwordRef: undefined,\n passwordRepeatRef: undefined,\n};\n\nexport default PasswordFormGroup;\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 { useState } from 'react';\nimport { Field } from 'formik';\n\nimport { Input, BootstrapModalConfirm } from 'components/bootstrap';\nimport { getValueFromInput } from 'util/FormsUtils';\n\nconst ServiceAccountFormGroup = () => {\n const [showModal, setShowModal] = useState(false);\n\n return (\n \n {({ field: { name, value, onChange } }) => {\n const onValueChange = (newValue) => {\n const serviceAccountNewValue = getValueFromInput(newValue.target);\n\n if (serviceAccountNewValue) {\n setShowModal(true);\n } else {\n onChange(newValue);\n }\n };\n\n const handleCheckServiceAccount = () => {\n onChange({ target: { name, value: true } });\n setShowModal(false);\n };\n\n const handleCancel = () => {\n onChange({ target: { name, value: false } });\n setShowModal(false);\n };\n\n return (\n <>\n \n onValueChange(newValue)} />\n \n \n Changing this user to a Service Account prevents the user from logging into the web interface and editing their settings. (e.g., API tokens) Do you wish to proceed?\n \n >\n );\n }}\n\n \n );\n};\n\nexport default ServiceAccountFormGroup;\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 */\nexport const MS_DAY = 24 * 60 * 60 * 1000;\nexport const MS_HOUR = 60 * 60 * 1000;\nexport const MS_MINUTE = 60 * 1000;\nexport const MS_SECOND = 1000;\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 styled from 'styled-components';\n\nimport { Select } from 'components/common';\n\nimport { MS_DAY, MS_HOUR, MS_MINUTE, MS_SECOND } from './timeoutConstants';\n\nconst TimeoutSelect = styled(Select)`\n width: 150px;\n`;\n\nconst OPTIONS = [\n { value: `${MS_SECOND}`, label: 'Seconds' },\n { value: `${MS_MINUTE}`, label: 'Minutes' },\n { value: `${MS_HOUR}`, label: 'Hours' },\n { value: `${MS_DAY}`, label: 'Days' },\n];\n\nconst TimeoutUnitSelect = (props) => (\n \n);\n\nexport default TimeoutUnitSelect;\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 { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Row, Col, HelpBlock, Input, Alert } from 'components/bootstrap';\nimport TimeoutUnitSelect from 'components/users/TimeoutUnitSelect';\n\nimport { MS_DAY, MS_HOUR, MS_MINUTE, MS_SECOND } from './timeoutConstants';\n\ntype Props = {\n value: number,\n onChange: (value: number) => void;\n};\n\nconst _estimateUnit = (value: number): number => {\n if (value === 0) {\n return MS_SECOND;\n }\n\n if (value % MS_DAY === 0) {\n return MS_DAY;\n }\n\n if (value % MS_HOUR === 0) {\n return MS_HOUR;\n }\n\n if (value % MS_MINUTE === 0) {\n return MS_MINUTE;\n }\n\n return MS_SECOND;\n};\n\nconst TimeoutInput = ({ value: propsValue, onChange }: Props) => {\n const [sessionTimeoutNever, setSessionTimeoutNever] = useState(propsValue === -1);\n const [unit, setUnit] = useState(_estimateUnit(propsValue));\n const [value, setValue] = useState(propsValue ? Math.floor(propsValue / Number(unit)) : 0);\n\n const _onClick = (evt: React.ChangeEvent) => {\n setSessionTimeoutNever(evt.target.checked);\n\n if (onChange && evt.target.checked) {\n onChange(-1);\n }\n };\n\n const _onChangeValue = (evt: React.ChangeEvent) => {\n setValue(Number(evt.target.value));\n\n if (onChange) {\n onChange(Number(evt.target.value) * Number(unit));\n }\n };\n\n const _onChangeUnit = (newUnit: number) => {\n setUnit(newUnit);\n\n if (onChange) {\n onChange(value * Number(newUnit));\n }\n };\n\n return (\n \n \n \n \n Changing the timeout setting for sessions will log the user out of Graylog and will invalidate all their\n current sessions. If you are changing the setting for your own user, you will be logged out at the moment\n of saving the setting. In that case, make sure to save any pending changes before changing the timeout.\n \n \n
\n <>\n \n\n \n \n \n \n \n \n \n \n \n \n Session automatically end after this amount of time, unless they are actively used.\n \n \n
\n \n >\n \n );\n};\n\nTimeoutInput.propTypes = {\n value: PropTypes.number,\n onChange: PropTypes.func,\n};\n\nTimeoutInput.defaultProps = {\n value: MS_HOUR,\n onChange: () => {},\n};\n\nexport default TimeoutInput;\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 { Field } from 'formik';\n\nimport TimeoutInput from 'components/users/TimeoutInput';\n\nconst TimeoutFormGroup = () => (\n \n {({ field: { name, value, onChange } }) => (\n onChange({ target: { name, value: newValue } })} />\n )}\n \n);\n\nexport default TimeoutFormGroup;\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 { FastField } from 'formik';\n\nimport { Input } from 'components/bootstrap';\nimport { TimezoneSelect } from 'components/common';\n\nconst TimezoneFormGroup = () => (\n \n {({ field: { name, value, onChange } }) => (\n \n onChange({ target: { name, value: newValue } })} />\n \n )}\n \n);\n\nexport default TimezoneFormGroup;\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 Routes from 'routing/Routes';\nimport PageNavigation from 'components/common/PageNavigation';\nimport { Row } from 'components/bootstrap';\n\nconst UsersPageNavigation = () => {\n const NAV_ITEMS = [\n { title: 'Users Overview', path: Routes.SYSTEM.USERS.OVERVIEW, permissions: 'users:list' },\n { title: 'Teams Overview', path: Routes.getPluginRoute('SYSTEM_TEAMS'), permissions: 'teams:list' },\n ];\n\n return (\n \n \n
\n );\n};\n\nexport default UsersPageNavigation;\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 { AuthzRolesActions } from 'stores/roles/AuthzRolesStore';\n\nimport notifyingAction from '../notifyingAction';\n\nconst load = notifyingAction({\n action: AuthzRolesActions.load,\n error: (error, roleId) => ({\n message: `Loading role with id \"${roleId}\" failed with status: ${error}`,\n }),\n notFoundRedirect: true,\n});\n\nconst deleteAction = notifyingAction({\n action: AuthzRolesActions.delete,\n success: (_roleId, roleName) => ({\n message: `Role \"${roleName}\" was deleted successfully`,\n }),\n error: (error, _roleId, roleName) => ({\n message: `Deleting role \"${roleName}\" failed with status: ${error}`,\n }),\n});\n\nconst addMembers = notifyingAction({\n action: AuthzRolesActions.addMembers,\n success: (_roleId, usernames) => ({\n message: `Users:\"${usernames.join(', ')}\" were assigned successfully`,\n }),\n error: (error, _roleId, usernames) => ({\n message: `Assigning users \"${usernames.join(', ')}\" failed with status: ${error}`,\n }),\n});\n\nconst removeMember = notifyingAction({\n action: AuthzRolesActions.removeMember,\n success: (_roleId, username) => ({\n message: `User \"${username}\" was unassigned successfully`,\n }),\n error: (error, _roleId, username) => ({\n message: `Unassign user \"${username}\" failed with status: ${error}`,\n }),\n});\n\nconst loadUsersForRole = notifyingAction({\n action: AuthzRolesActions.loadUsersForRole,\n error: (error, _roleId, roleName) => ({\n message: `Loading users for role \"${roleName}\" failed with status: ${error}`,\n }),\n});\n\nconst loadRolesForUser = notifyingAction({\n action: AuthzRolesActions.loadRolesForUser,\n error: (error, username) => ({\n message: `Loading roles for user \"${username}\" failed with status: ${error}`,\n }),\n});\n\nconst loadRolesPaginated = notifyingAction({\n action: AuthzRolesActions.loadRolesPaginated,\n error: (error) => ({\n message: `Loading roles failed with status: ${error}`,\n }),\n});\n\nexport default {\n load,\n delete: deleteAction,\n addMembers,\n removeMember,\n loadUsersForRole,\n loadRolesForUser,\n loadRolesPaginated,\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 { useEffect } from 'react';\n\nimport type { UserConfigType } from 'stores/configurations/ConfigurationsStore';\nimport { ConfigurationsStore, ConfigurationsActions } from 'stores/configurations/ConfigurationsStore';\nimport { useStore } from 'stores/connect';\nimport type { Store } from 'stores/StoreTypes';\n\nconst USER_CONFIG = 'org.graylog2.users.UserConfiguration';\n\nconst useIsGlobalTimeoutEnabled = () => {\n const configuration = useStore(ConfigurationsStore as Store>, (state) => state?.configuration[USER_CONFIG] as UserConfigType);\n const isGlobalTimeoutEnabled = configuration?.enable_global_session_timeout || false;\n\n useEffect(() => {\n ConfigurationsActions.list(USER_CONFIG);\n\n return () => {};\n }, []);\n\n return isGlobalTimeoutEnabled;\n};\n\nexport default useIsGlobalTimeoutEnabled;\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 Immutable from 'immutable';\nimport type { $PropertyType } from 'utility-types';\n\ntype InternalState = {\n id: string,\n name: string,\n description: string,\n permissions: Immutable.Set,\n readOnly: boolean,\n};\n\nexport type RoleJSON = {\n id: string,\n name: string,\n description: string,\n permissions: Immutable.Set,\n read_only: boolean,\n};\n\nexport default class Role {\n _value: InternalState;\n\n constructor(\n id: $PropertyType,\n name: $PropertyType,\n description: $PropertyType,\n permissions: $PropertyType,\n readOnly: $PropertyType,\n ) {\n this._value = {\n id,\n name,\n description,\n permissions,\n readOnly,\n };\n }\n\n get id() {\n return this._value.id;\n }\n\n get name() {\n return this._value.name;\n }\n\n get description() {\n return this._value.description;\n }\n\n get permissions() {\n return this._value.permissions;\n }\n\n get readOnly() {\n return this._value.readOnly;\n }\n\n toBuilder() {\n const {\n id,\n name,\n description,\n permissions,\n readOnly,\n } = this._value;\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return new Builder(Immutable.Map({\n id,\n name,\n description,\n permissions,\n readOnly,\n }));\n }\n\n static create(\n id: $PropertyType,\n name: $PropertyType,\n description: $PropertyType,\n permissions: $PropertyType,\n readOnly: $PropertyType,\n ) {\n return new Role(\n id,\n name,\n description,\n permissions,\n readOnly,\n );\n }\n\n toJSON() {\n const {\n id,\n name,\n description,\n permissions,\n readOnly,\n } = this._value;\n\n return {\n id,\n name,\n description,\n permissions,\n read_only: readOnly,\n };\n }\n\n static fromJSON(value: RoleJSON) {\n const {\n id,\n name,\n description,\n permissions,\n read_only: readOnly,\n } = value;\n\n return Role.create(\n id,\n name,\n description,\n permissions,\n readOnly,\n );\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 name(value: $PropertyType) {\n return new Builder(this.value.set('name', value));\n }\n\n description(value: $PropertyType) {\n return new Builder(this.value.set('description', value));\n }\n\n permissions(value: $PropertyType) {\n return new Builder(this.value.set('permissions', value));\n }\n\n readOnly(value: $PropertyType) {\n return new Builder(this.value.set('readOnly', value));\n }\n\n build() {\n const {\n id,\n name,\n description,\n permissions,\n readOnly,\n } = this.value.toObject();\n\n return new Role(\n id,\n name,\n description,\n permissions,\n readOnly,\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 type * as Immutable from 'immutable';\n\nimport type Role from 'logic/roles/Role';\nimport type UserOverview from 'logic/users/UserOverview';\nimport { singletonActions } from 'logic/singleton';\nimport type { PaginatedList, Pagination } from 'stores/PaginationTypes';\n\nexport type UserContext = {\n id: string,\n username: string,\n};\n\nexport type RoleContext = {\n users: { [key: string]: UserContext[] },\n};\n\nexport type PaginatedRoles = PaginatedList & {\n context: RoleContext,\n};\nexport type PaginatedUsers = PaginatedList;\n\nexport type ActionsType = {\n load: (roleId: string) => Promise,\n delete: (roleId: string, roleName: string) => Promise,\n addMembers: (roleId: string, usernames: Immutable.Set) => Promise,\n removeMember: (roleId: string, username: string) => Promise,\n loadUsersForRole: (roleId: string, roleName: string, pagination: Pagination) => Promise,\n loadRolesForUser: (username: string, pagination: Pagination) => Promise,\n loadRolesPaginated: (pagination: Pagination) => Promise,\n};\n\nconst AuthzRolesActions = singletonActions(\n 'AuthzRoles',\n () => Reflux.createActions({\n load: { asyncResult: true },\n delete: { asyncResult: true },\n addMembers: { asyncResult: true },\n removeMember: { asyncResult: true },\n loadUsersForRole: { asyncResult: true },\n loadRolesForUser: { asyncResult: true },\n loadRolesPaginated: { asyncResult: true },\n }),\n);\n\nexport default AuthzRolesActions;\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 type { $PropertyType } from 'utility-types';\n\nimport type { PaginatedUsersResponse } from 'stores/users/UsersStore';\nimport type { Store } from 'stores/StoreTypes';\nimport fetch from 'logic/rest/FetchProvider';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { qualifyUrl } from 'util/URLUtils';\nimport { singletonStore } from 'logic/singleton';\nimport PaginationURL from 'util/PaginationURL';\nimport Role from 'logic/roles/Role';\nimport type { RoleJSON } from 'logic/roles/Role';\nimport type { PaginatedRoles, PaginatedUsers, RoleContext } from 'actions/roles/AuthzRolesActions';\nimport AuthzRolesActions from 'actions/roles/AuthzRolesActions';\nimport UserOverview from 'logic/users/UserOverview';\nimport type { PaginatedListJSON, Pagination } from 'stores/PaginationTypes';\n\nexport type PaginatedRolesResponse = PaginatedListJSON & {\n roles: Array,\n context?: RoleContext,\n};\n\nconst _responseToPaginatedList = ({\n count,\n total,\n page,\n per_page,\n query,\n roles = [],\n context = { users: undefined },\n}: PaginatedRolesResponse) => ({\n list: Immutable.List(roles.map((r) => Role.fromJSON(r))),\n pagination: {\n query,\n page,\n perPage: per_page,\n count,\n total,\n },\n context,\n});\n\nconst _responseToPaginatedUserList = ({ count, total, page, per_page, query, users }: PaginatedUsersResponse) => ({\n list: Immutable.List(users.map((u) => UserOverview.fromJSON(u))),\n pagination: {\n page,\n perPage: per_page,\n query,\n count,\n total,\n },\n});\n\nconst encodeApiUrl = (apiRoute: (...args: Array) => { url: string }, uriParams: Array = []): string => {\n const encodedUriParams = uriParams.map((param) => encodeURIComponent(param));\n\n return apiRoute(...encodedUriParams).url;\n};\n\nconst AuthzRolesStore: Store<{}> = singletonStore(\n 'AuthzRoles',\n () => Reflux.createStore({\n listenables: [AuthzRolesActions],\n\n load(roleId: $PropertyType): Promise {\n const url = qualifyUrl(encodeApiUrl(ApiRoutes.AuthzRolesController.load, [roleId]));\n const promise = fetch('GET', url).then(Role.fromJSON);\n\n AuthzRolesActions.load.promise(promise);\n\n return promise;\n },\n\n delete(roleId: string): Promise {\n const url = qualifyUrl(encodeApiUrl(ApiRoutes.AuthzRolesController.delete, [roleId]));\n const promise = fetch('DELETE', url);\n\n AuthzRolesActions.delete.promise(promise);\n\n return promise;\n },\n\n addMembers(roleId: string, usernames: Immutable.Set): Promise {\n const url = encodeApiUrl(ApiRoutes.AuthzRolesController.addMembers, [roleId]);\n const promise = fetch('PUT', qualifyUrl(url), usernames.toArray());\n\n AuthzRolesActions.addMembers.promise(promise);\n\n return promise;\n },\n\n removeMember(roleId: string, username: string): Promise {\n const url = encodeApiUrl(ApiRoutes.AuthzRolesController.removeMember, [roleId, username]);\n const promise = fetch('DELETE', qualifyUrl(url));\n\n AuthzRolesActions.removeMember.promise(promise);\n\n return promise;\n },\n\n loadUsersForRole(roleId: string, _roleName: string, {\n page,\n perPage,\n query,\n }: Pagination): Promise {\n const apiUrl = encodeApiUrl(ApiRoutes.AuthzRolesController.loadUsersForRole, [roleId]);\n const url = PaginationURL(apiUrl, page, perPage, query);\n\n const promise = fetch('GET', qualifyUrl(url))\n .then(_responseToPaginatedUserList);\n\n AuthzRolesActions.loadUsersForRole.promise(promise);\n\n return promise;\n },\n\n loadRolesForUser(username: string, { page, perPage, query }: Pagination): Promise {\n const apiUrl = encodeApiUrl(ApiRoutes.AuthzRolesController.loadRolesForUser, [username]);\n const url = PaginationURL(apiUrl, page, perPage, query);\n\n const promise = fetch('GET', qualifyUrl(url))\n .then(_responseToPaginatedList);\n\n AuthzRolesActions.loadRolesForUser.promise(promise);\n\n return promise;\n },\n\n loadRolesPaginated({ page, perPage, query }: Pagination): Promise {\n const apiUrl = encodeApiUrl(ApiRoutes.AuthzRolesController.list);\n const url = PaginationURL(apiUrl, page, perPage, query);\n\n const promise = fetch('GET', qualifyUrl(url))\n .then(_responseToPaginatedList);\n\n AuthzRolesActions.loadRolesPaginated.promise(promise);\n\n return promise;\n },\n }),\n);\n\nexport { AuthzRolesActions, AuthzRolesStore };\n"],"names":["Container","StyledButton","theme","items","path","title","permissions","exactPathMatch","SubmitButton","FormElements","RoleSelectOption","StyledSelect","_renderRoleOption","label","_options","roles","assignedRolesIds","identifier","role","r","_assignRole","selectedRoleNames","onSubmit","setselectedRoleNames","setIsSubmitting","setError","selectedRoleNameList","selectedRoles","selection","_loadRoles","setPaginatedRoles","getUnlimited","RolesSelector","submitOnSelect","paginatedRoles","isSubmitting","error","onChange","_onSubmit","options","PASSWORD_MIN_LENGTH","validatePasswords","errors","password","passwordRepeat","newErrors","PasswordFormGroup","showModal","setShowModal","name","value","onValueChange","newValue","handleCheckServiceAccount","handleCancel","MS_DAY","MS_HOUR","MS_MINUTE","MS_SECOND","TimeoutSelect","OPTIONS","props","_estimateUnit","TimeoutInput","propsValue","sessionTimeoutNever","setSessionTimeoutNever","unit","setUnit","setValue","_onClick","evt","_onChangeValue","_onChangeUnit","newUnit","NAV_ITEMS","load","roleId","deleteAction","_roleId","roleName","addMembers","usernames","removeMember","username","loadUsersForRole","loadRolesForUser","loadRolesPaginated","USER_CONFIG","configuration","state","isGlobalTimeoutEnabled","Role","id","description","readOnly","Builder","singleton","_responseToPaginatedList","count","total","page","per_page","query","context","_responseToPaginatedUserList","users","u","UserOverview","encodeApiUrl","apiRoute","uriParams","encodedUriParams","param","AuthzRolesStore","url","ApiRoutes","promise","_roleName","perPage","apiUrl","PaginationURL"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy