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

web-interface.assets.57e33c6c-42.11b9f72925818240e61d.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
{"version":3,"sources":["webpack:///./src/components/common/Section/SectionGrid.tsx","webpack:///./src/components/roles/navigation/RoleActionLinks.tsx","webpack:///./src/components/common/Section/SectionComponent.tsx","webpack:///./src/components/roles/RoleDetails/ProfileSection.tsx","webpack:///./src/components/roles/RoleDetails/TeamsSection.tsx","webpack:///./src/components/roles/RoleDetails/UsersSection.tsx","webpack:///./src/components/roles/RoleDetails/index.tsx","webpack:///./src/components/roles/RoleDetails/RoleDetails.tsx","webpack:///./src/pages/RoleDetailsPage.tsx","webpack:///./src/logic/users/UserOverview.ts","webpack:///./src/logic/roles/Role.ts","webpack:///./src/actions/roles/AuthzRolesActions.ts","webpack:///./src/stores/roles/AuthzRolesStore.ts","webpack:///./src/domainActions/roles/AuthzRolesDomain.tsx"],"names":["SectionGrid","styled","div","$columns","theme","css","breakpoints","max","md","RoleActionLinks","roleId","to","Routes","SYSTEM","AUTHZROLES","show","bsStyle","edit","Header","Headline","h2","LoadingSpinner","Spinner","fonts","size","h3","SectionComponent","children","title","showLoading","headerActions","className","xs","text","delay","defaultProps","undefined","ProfileSection","role","name","description","label","value","TeamsSection","teamsPlugin","PluginStore","exports","RoleTeamsAssignment","readOnly","featureName","UsersSection","id","useState","loading","setLoading","_onLoad","useCallback","pagination","AuthzRolesDomain","loadUsersForRole","then","paginatedRoles","noDataText","onLoad","RoleDetails","PageTitle","fullName","withParams","params","loadedRole","setLoadedRole","useEffect","load","subactions","DocumentationLink","page","DocsHelper","PAGES","USERS_ROLES","OVERVIEW","UserOverview","username","email","roles","external","sessionActive","clientAddress","lastActivity","enabled","authServiceId","authServiceUid","accountStatus","this","_value","Builder","Immutable","full_name","toArray","read_only","external_user","session_active","client_address","last_activity","auth_service_id","auth_service_uid","account_status","create","set","toObject","Role","permissions","AuthzRolesActions","singletonActions","Reflux","createActions","asyncResult","delete","addMembers","removeMember","loadRolesForUser","loadRolesPaginated","_responseToPaginatedList","count","total","per_page","query","context","users","list","map","r","fromJSON","perPage","_responseToPaginatedUserList","u","encodeApiUrl","apiRoute","uriParams","encodedUriParams","param","encodeURIComponent","url","singletonStore","createStore","listenables","qualifyUrl","ApiRoutes","AuthzRolesController","promise","fetch","usernames","roleName","apiUrl","PaginationURL","notifyingAction","action","error","message","notFoundRedirect","deleteAction","success","join"],"mappings":"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","file":"57e33c6c-42.11b9f72925818240e61d.js","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 styled, { css } from 'styled-components';\n\nconst SectionGrid = styled.div<{ $columns?: string } >(({ $columns, theme }) => css`\n  display: grid;\n  grid-template-columns: ${$columns ?? '1fr 1fr'};\n  grid-column-gap: 40px;\n\n  @media (max-width: ${theme.breakpoints.max.md}) {\n    grid-template-columns: 1fr;\n  }\n`);\n\nexport default SectionGrid;\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 { $PropertyType } from 'utility-types';\n\nimport { LinkContainer } from 'components/graylog/router';\nimport Role from 'logic/roles/Role';\nimport Routes from 'routing/Routes';\nimport { ButtonToolbar, Button } from 'components/graylog';\n\ntype Props = {\n  roleId: $PropertyType,\n};\n\nconst RoleActionLinks = ({ roleId }: Props) => (\n  \n    \n      \n    \n    \n      \n    \n  \n);\n\nexport default RoleActionLinks;\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 Spinner from 'components/common/Spinner';\nimport { Row, Col } from 'components/graylog';\n\ntype Props = {\n  children: React.ReactNode,\n  title: string,\n  showLoading?: boolean,\n  headerActions?: React.ReactElement,\n  className?: string,\n};\n\nconst Header = styled.div`\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-start;\n\n  *:not(:first-child) {\n    margin-left: 10px;\n  }\n`;\n\nexport const Headline = styled.h2`\n  margin-bottom: 15px;\n  display: inline;\n`;\n\nconst LoadingSpinner = styled(Spinner)(({ theme }) => css`\n  margin-left: 10px;\n  font-size: ${theme.fonts.size.h3};\n`);\n\nconst SectionComponent = ({ children, title, showLoading = false, headerActions, className }: Props) => (\n  \n    \n      
\n \n {title}\n {showLoading && }\n \n {headerActions}\n
\n {children}\n \n
\n);\n\nSectionComponent.defaultProps = {\n className: '',\n showLoading: false,\n headerActions: undefined,\n};\n\nexport default SectionComponent;\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 Role from 'logic/roles/Role';\nimport SectionComponent from 'components/common/Section/SectionComponent';\nimport { ReadOnlyFormGroup } from 'components/common';\n\ntype Props = {\n role: Role,\n};\n\nconst ProfileSection = ({\n role: {\n name,\n description,\n },\n}: Props) => (\n \n \n \n \n);\n\nexport default ProfileSection;\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 { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport Role from 'logic/roles/Role';\nimport { EnterprisePluginNotFound } from 'components/common';\nimport SectionComponent from 'components/common/Section/SectionComponent';\n\ntype Props = {\n role: Role,\n};\n\nconst TeamsSection = ({ role }: Props) => {\n const teamsPlugin = PluginStore.exports('teams');\n\n const RoleTeamsAssignment = teamsPlugin?.[0]?.RoleTeamsAssignment;\n\n return (\n \n {RoleTeamsAssignment ? : }\n \n );\n};\n\nexport default TeamsSection;\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, useCallback } from 'react';\n\nimport AuthzRolesDomain from 'domainActions/roles/AuthzRolesDomain';\nimport { PaginatedItemOverview } from 'components/common';\nimport SectionComponent from 'components/common/Section/SectionComponent';\nimport Role from 'logic/roles/Role';\n\ntype Props = {\n role: Role,\n};\n\nconst UsersSection = ({ role: { id, name } }: Props) => {\n const [loading, setLoading] = useState(false);\n\n const _onLoad = useCallback((pagination) => {\n setLoading(true);\n\n return AuthzRolesDomain.loadUsersForRole(id, name, pagination).then((paginatedRoles) => {\n setLoading(false);\n\n return paginatedRoles;\n });\n }, [id, name]);\n\n return (\n \n \n \n );\n};\n\nexport default UsersSection;\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 RoleDetails from './RoleDetails';\n\nexport default RoleDetails;\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 { Spinner } from 'components/common';\nimport SectionGrid from 'components/common/Section/SectionGrid';\nimport Role from 'logic/roles/Role';\n\nimport TeamsSection from './TeamsSection';\nimport ProfileSection from './ProfileSection';\nimport UsersSection from './UsersSection';\n\ntype Props = {\n role: Role | null | undefined,\n};\n\nconst RoleDetails = ({ role }: Props) => {\n if (!role) {\n return ;\n }\n\n return (\n \n
\n \n
\n
\n \n \n
\n
\n );\n};\n\nexport default RoleDetails;\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';\n\nimport withParams from 'routing/withParams';\nimport { LinkContainer } from 'components/graylog/router';\nimport AuthzRolesDomain from 'domainActions/roles/AuthzRolesDomain';\nimport RoleDetails from 'components/roles/RoleDetails';\nimport RoleActionLinks from 'components/roles/navigation/RoleActionLinks';\nimport DocsHelper from 'util/DocsHelper';\nimport { PageHeader, DocumentTitle } from 'components/common';\nimport { Button } from 'components/graylog';\nimport DocumentationLink from 'components/support/DocumentationLink';\nimport Routes from 'routing/Routes';\nimport Role from 'logic/roles/Role';\n\ntype Props = {\n params: {\n roleId: string,\n },\n};\n\nconst PageTitle = ({ fullName }: { fullName: string | undefined | null }) => (\n <>\n Role Details {fullName && (\n <>\n - {fullName}\n \n )}\n \n);\n\nconst RoleDetailsPage = ({ params }: Props) => {\n const [loadedRole, setLoadedRole] = useState();\n const roleId = params?.roleId;\n\n useEffect(() => {\n AuthzRolesDomain.load(roleId).then(setLoadedRole);\n }, [roleId]);\n\n return (\n \n }\n subactions={}>\n \n Overview of details like name, description and assigned users.\n \n \n Learn more in the{' '}\n \n \n \n \n \n \n \n \n );\n};\n\nexport default withParams(RoleDetailsPage);\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 { $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 Immutable from 'immutable';\nimport { $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 * as Immutable from 'immutable';\n\nimport Role from 'logic/roles/Role';\nimport UserOverview from 'logic/users/UserOverview';\nimport { singletonActions } from 'views/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 { $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 'views/logic/singleton';\nimport PaginationURL from 'util/PaginationURL';\nimport Role from 'logic/roles/Role';\nimport type { RoleJSON } from 'logic/roles/Role';\nimport AuthzRolesActions, { PaginatedRoles, PaginatedUsers, RoleContext } 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 = ({ count, total, page, per_page, query, roles = [], context = { users: undefined } }: 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, { page, perPage, query }: 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","/*\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, username, 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"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy