All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.325e2d4b-1862.90e8d4cf6d7b81293265.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.1
Show newest version
{"version":3,"file":"325e2d4b-1862.90e8d4cf6d7b81293265.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/domainActions/roles/AuthzRolesDomain.ts","webpack://graylog-web-interface/./src/logic/users/UserOverview.ts","webpack://graylog-web-interface/./src/components/roles/RolesOverview/ActionsCell.tsx","webpack://graylog-web-interface/./src/components/roles/RolesOverview/UsersCell.tsx","webpack://graylog-web-interface/./src/components/roles/RolesOverview/RolesOverviewItem.tsx","webpack://graylog-web-interface/./src/components/roles/RolesQueryHelper.tsx","webpack://graylog-web-interface/./src/components/roles/RolesOverview/RolesFilter.tsx","webpack://graylog-web-interface/./src/components/roles/RolesOverview/RolesOverview.tsx","webpack://graylog-web-interface/./src/components/roles/RolesOverview/index.ts","webpack://graylog-web-interface/./src/pages/RolesOverviewPage.tsx","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 { 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 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  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  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    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      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 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      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      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    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      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      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      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      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      accountStatus);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\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  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      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      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 * as React from 'react';\nimport { useState } from 'react';\nimport styled from 'styled-components';\nimport type { $PropertyType } from 'utility-types';\n\nimport { LinkContainer } from 'components/common/router';\nimport AuthzRolesDomain from 'domainActions/roles/AuthzRolesDomain';\nimport Routes from 'routing/Routes';\nimport type Role from 'logic/roles/Role';\nimport { Button } from 'components/bootstrap';\nimport { IfPermitted, Spinner } from 'components/common';\n\ntype Props = {\n  readOnly: $PropertyType,\n  roleId: $PropertyType,\n  roleName: $PropertyType,\n};\n\nconst ActionsWrapper = styled.div`\n  display: flex;\n  justify-content: flex-end;\n`;\n\nconst _deleteRole = (roleId: $PropertyType, roleName: $PropertyType, setDeleting: (boolean) => void) => {\n  let confirmMessage = `Do you really want to delete role \"${roleName}\"?`;\n  const getOneUser = { page: 1, perPage: 1, query: '' };\n  setDeleting(true);\n\n  AuthzRolesDomain.loadUsersForRole(roleId, roleName, getOneUser).then((paginatedUsers) => {\n    if (paginatedUsers.pagination.total >= 1) {\n      confirmMessage += `\\n\\nIt is still assigned to ${paginatedUsers.pagination.total} users.`;\n    }\n\n    // eslint-disable-next-line no-alert\n    if (window.confirm(confirmMessage)) {\n      AuthzRolesDomain.delete(roleId, roleName).then(() => {\n        setDeleting(false);\n      });\n    } else {\n      setDeleting(false);\n    }\n  });\n};\n\nconst ActionsCell = ({ roleId, roleName, readOnly }: Props) => {\n  const [deleting, setDeleting] = useState(false);\n\n  return (\n    \n      \n        \n          \n            \n          \n        \n        {!readOnly && (\n          \n            <>\n               \n              \n            \n          \n        )}\n      \n    \n  );\n};\n\nexport default ActionsCell;\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';\n\nimport { Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport { IfPermitted, CountBadge } from 'components/common';\nimport type { UserContext } from 'actions/roles/AuthzRolesActions';\n\ntype Props = {\n  users: Immutable.Set,\n};\n\nconst MAX_USERS = 10;\n\nconst UsersCell = ({ users = Immutable.Set() }: Props) => {\n  const usersLength = users.size;\n  const usersComponents = users.take(MAX_USERS).toArray().map(({ id, username }, index) => {\n    return (\n      \n        <>\n          {username}{index < (usersLength - 1) && ',  '}\n        \n      \n    );\n  });\n\n  if (usersLength > MAX_USERS) {\n    usersComponents.push(...);\n  }\n\n  return (\n    \n      {users.size}\n      {' '}\n      {usersComponents}\n    \n  );\n};\n\nexport default UsersCell;\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 styled from 'styled-components';\n\nimport { Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport type Role from 'logic/roles/Role';\nimport { TextOverflowEllipsis } from 'components/common';\nimport type { UserContext } from 'actions/roles/AuthzRolesActions';\n\nimport ActionsCell from './ActionsCell';\nimport UsersCell from './UsersCell';\n\nconst DescriptionCell = styled.td`\n  max-width: 300px;\n`;\n\ntype Props = {\n  role: Role,\n  users: UserContext[],\n};\n\nconst RolesOverviewItem = ({\n  role: {\n    id,\n    name,\n    description,\n    readOnly,\n  },\n  users,\n}: Props) => {\n  return (\n    \n      \n        \n          {name}\n        \n      \n      \n        \n          {description}\n        \n      \n      \n      \n    \n  );\n};\n\nexport default RolesOverviewItem;\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 { OverlayTrigger, Icon } from 'components/common';\nimport { Popover, Table, Button } from 'components/bootstrap';\n\nconst RolesQueryHelperPopover = (\n  \n    

Available search fields

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldDescription
nameThe name of a role
descriptionThe description of a role
\n

Examples

\n

\n Find role with a name containing manager:
\n name:manager
\n

\n
\n);\n\nconst RolesQueryHelper = () => (\n \n \n \n);\n\nexport default RolesQueryHelper;\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 from 'styled-components';\nimport type { $PropertyType } from 'utility-types';\n\nimport { SearchForm } from 'components/common';\nimport type { Pagination } from 'stores/PaginationTypes';\n\nimport RolesQueryHelper from '../RolesQueryHelper';\n\ntype Props = {\n onSearch: (query: $PropertyType) => void,\n};\n\nconst Container = styled.div`\n margin-bottom: 10px;\n`;\n\nconst RolesFilter = ({ onSearch }: Props) => (\n \n onSearch('')}\n queryHelpComponent={}\n topMargin={0} />\n \n);\n\nexport default RolesFilter;\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 styled from 'styled-components';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport AuthzRolesDomain from 'domainActions/roles/AuthzRolesDomain';\nimport type { PaginatedRoles } from 'actions/roles/AuthzRolesActions';\nimport { AuthzRolesActions } from 'stores/roles/AuthzRolesStore';\nimport { DataTable, Spinner, PaginatedList, EmptyResult } from 'components/common';\nimport { Col, Row } from 'components/bootstrap';\nimport usePaginationQueryParameter from 'hooks/usePaginationQueryParameter';\n\nimport RolesOverviewItem from './RolesOverviewItem';\nimport RolesFilter from './RolesFilter';\n\nconst TABLE_HEADERS = ['Name', 'Description', 'Users', 'Actions'];\n\nconst Container = styled.div`\n .data-table {\n overflow-x: visible;\n }\n`;\n\nconst Header = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst LoadingSpinner = styled(Spinner)(({ theme }) => `\n margin-left: 10px;\n font-size: ${theme.fonts.size.h3};\n`);\n\nconst StyledPaginatedList = styled(PaginatedList)`\n .pagination {\n margin: 0;\n }\n`;\n\nconst _headerCellFormatter = (header) => {\n // eslint-disable-next-line react/destructuring-assignment\n switch (header.toLowerCase()) {\n case 'actions':\n return {header};\n default:\n return {header};\n }\n};\n\nconst _loadRoles = (pagination, setLoading, setPaginatedRoles) => {\n setLoading(true);\n\n AuthzRolesDomain.loadRolesPaginated(pagination).then((paginatedRoles) => {\n setPaginatedRoles(paginatedRoles);\n setLoading(false);\n });\n};\n\nconst _updateListOnRoleDelete = (pagination, setLoading, setPaginatedRoles, callback: () => void) => AuthzRolesActions.delete.completed.listen(() => {\n _loadRoles(pagination, setLoading, setPaginatedRoles);\n callback();\n});\n\nconst getUseTeamMembersHook = () => {\n const defaultHook = () => ({ loading: false, users: [] });\n const teamsPlugin = PluginStore.exports('teams');\n\n return teamsPlugin?.[0]?.useTeamMembersByRole || defaultHook;\n};\n\nconst RolesOverview = () => {\n const { page, pageSize: perPage, resetPage } = usePaginationQueryParameter();\n const [paginatedRoles, setPaginatedRoles] = useState();\n const [loading, setLoading] = useState(false);\n const [query, setQuery] = useState('');\n const { list: roles } = paginatedRoles || {};\n const useTeamMembersByRole = getUseTeamMembersHook();\n const teamMembersByRole = useTeamMembersByRole();\n\n useEffect(() => _loadRoles({ page, perPage, query }, setLoading, setPaginatedRoles), [page, perPage, query]);\n useEffect(() => _updateListOnRoleDelete({ page, perPage, query }, setLoading, setPaginatedRoles, resetPage), [page, perPage, query, resetPage]);\n\n const handleSearch = (newQuery) => {\n resetPage();\n setQuery(newQuery);\n };\n\n const _rolesOverviewItem = useCallback((role) => {\n const { id: roleId } = role;\n const roleUsers = paginatedRoles?.context.users[roleId];\n const users = teamMembersByRole.users[roleId]\n ? [...teamMembersByRole.users[roleId], ...roleUsers]\n : paginatedRoles?.context?.users[roleId];\n\n return ;\n }, [teamMembersByRole, paginatedRoles?.context]);\n\n if (!paginatedRoles) {\n return ;\n }\n\n const searchFilter = ;\n\n return (\n \n \n \n
\n

Roles

\n {loading && }\n
\n

\n Found {paginatedRoles.pagination.total} roles on the system.\n

\n \n No roles have been found.}\n customFilter={searchFilter}\n dataRowFormatter={_rolesOverviewItem}\n filterKeys={[]}\n filterLabel=\"Filter Roles\" />\n \n \n
\n
\n );\n};\n\nexport default RolesOverview;\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 */\n\nimport RolesOverview from './RolesOverview';\n\nexport default RolesOverview;\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 { LinkContainer } from 'components/common/router';\nimport RolesOverview from 'components/roles/RolesOverview';\nimport Routes from 'routing/Routes';\nimport DocsHelper from 'util/DocsHelper';\nimport { Button, Row, Col, Alert } from 'components/bootstrap';\nimport { PageHeader, DocumentTitle, Icon } from 'components/common';\nimport DocumentationLink from 'components/support/DocumentationLink';\n\nconst RolesOverviewPage = () => (\n \n \n \n \n )}>\n Overview of Graylog's roles. Roles allow granting capabilities to users, like creating dashboards or event definitions.\n\n \n\n \n \n \n {' '}Granting Permissions
\n With Graylog 4.0, we've updated the permissions system and changed the purpose of roles.\n The built-in roles still allow granting capabilities to users, like creating dashboards or viewing the archive catalog.\n But they no longer grant permissions for a specific dashboard or stream. It is also not possible to create an own role.\n Granting permissions for a specific entity can now be done by using its Share button. You can find the button e.g. on the entities overview page.\n If you want to grant permissions for an entity to multiple users at once, you can use teams.\n Learn more in the .\n
\n \n
\n\n \n
\n);\n\nexport default RolesOverviewPage;\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":["load","notifyingAction","action","AuthzRolesActions","error","roleId","message","notFoundRedirect","delete","success","_roleId","roleName","addMembers","usernames","join","removeMember","username","loadUsersForRole","loadRolesForUser","loadRolesPaginated","UserOverview","constructor","id","fullName","email","roles","readOnly","external","sessionActive","clientAddress","lastActivity","enabled","authServiceId","authServiceUid","accountStatus","this","_value","name","description","toBuilder","Builder","Immutable","toJSON","full_name","toArray","read_only","external_user","session_active","client_address","last_activity","auth_service_id","auth_service_uid","account_status","value","create","set","build","toObject","ActionsWrapper","styled","deleting","setDeleting","useState","permissions","to","Routes","encodeURIComponent","bsSize","title","type","bsStyle","onClick","confirmMessage","AuthzRolesDomain","page","perPage","query","then","paginatedUsers","pagination","total","window","confirm","_deleteRole","text","delay","users","usersLength","size","usersComponents","take","map","index","key","push","DescriptionCell","role","className","RolesQueryHelperPopover","condensed","trigger","rootClose","placement","overlay","Container","onSearch","onReset","queryHelpComponent","topMargin","TABLE_HEADERS","Header","LoadingSpinner","Spinner","theme","fonts","h3","StyledPaginatedList","PaginatedList","_headerCellFormatter","header","toLowerCase","_loadRoles","setLoading","setPaginatedRoles","paginatedRoles","pageSize","resetPage","usePaginationQueryParameter","loading","setQuery","list","teamMembersByRole","teamsPlugin","PluginStore","useTeamMembersByRole","getUseTeamMembersHook","useEffect","callback","_updateListOnRoleDelete","_rolesOverviewItem","useCallback","roleUsers","context","searchFilter","newQuery","xs","totalItems","rowClassName","headers","headerCellFormatter","sortByKey","rows","toJS","noDataText","customFilter","dataRowFormatter","filterKeys","filterLabel","documentationLink","path","DocsHelper","topActions","DocumentationLink","Role","singletonActions","Reflux","asyncResult","_responseToPaginatedList","count","per_page","undefined","r","fromJSON","_responseToPaginatedUserList","u","encodeApiUrl","apiRoute","uriParams","encodedUriParams","param","url","singletonStore","listenables","qualifyUrl","ApiRoutes","promise","fetch","_roleName","apiUrl","PaginationURL"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy