1 |
- {"version":3,"sources":["../../../src/app/content/my-resources-page/PermissionRequest.tsx"],"names":["React","Button","Modal","Text","Badge","DataListItem","DataList","TextVariants","DataListItemRow","DataListItemCells","DataListCell","Chip","Split","SplitItem","UserCheckIcon","AccountServiceContext","Msg","ContentAlert","PermissionRequest","Component","constructor","props","context","shareRequest","index","handle","username","scopes","resource","shareRequests","splice","approve","id","_id","handleToggleDialog","permissionsRequest","doGet","permissions","data","foundPermission","find","p","userScopes","push","doPut","success","localize","onClose","e","console","error","setState","isOpen","state","render","name","replace","length","map","i","firstName","lastName","small","email","scope","j","handleApprove","handleDeny","row"],"mappings":"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","sourcesContent":["/*\n * Copyright 2019 Red Hat, Inc. and/or its affiliates.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as React from 'react';\nimport {\n Button,\n Modal,\n Text,\n Badge,\n DataListItem,\n DataList,\n TextVariants,\n DataListItemRow,\n DataListItemCells,\n DataListCell,\n Chip,\n Split,\n SplitItem\n} from '@patternfly/react-core';\nimport { UserCheckIcon } from '@patternfly/react-icons';\n\nimport { HttpResponse } from '../../account-service/account.service';\nimport { AccountServiceContext } from '../../account-service/AccountServiceContext';\nimport { Msg } from '../../widgets/Msg';\nimport { ContentAlert } from '../ContentAlert';\nimport { Resource, Scope, Permission } from './resource-model';\n\n\ninterface PermissionRequestProps {\n resource: Resource;\n onClose: () => void;\n}\n\ninterface PermissionRequestState {\n isOpen: boolean;\n}\n\nexport class PermissionRequest extends React.Component<PermissionRequestProps, PermissionRequestState> {\n protected static defaultProps = { permissions: [], row: 0 };\n static contextType = AccountServiceContext;\n context: React.ContextType<typeof AccountServiceContext>;\n\n public constructor(props: PermissionRequestProps, context: React.ContextType<typeof AccountServiceContext>) {\n super(props);\n this.context = context;\n \n this.state = {\n isOpen: false,\n };\n }\n\n private handleApprove = async (shareRequest: Permission, index: number) => {\n this.handle(shareRequest.username, shareRequest.scopes as Scope[], true);\n this.props.resource.shareRequests.splice(index, 1);\n };\n\n private handleDeny = async (shareRequest: Permission, index: number) => {\n this.handle(shareRequest.username, shareRequest.scopes as Scope[]);\n this.props.resource.shareRequests.splice(index, 1)\n };\n\n private handle = async (username: string, scopes: Scope[], approve: boolean = false) => {\n const id = this.props.resource._id\n this.handleToggleDialog();\n\n const permissionsRequest: HttpResponse<Permission[]> = await this.context!.doGet(`/resources/${id}/permissions`);\n const permissions = permissionsRequest.data || [];\n const foundPermission = permissions.find(p => p.username === username);\n const userScopes = foundPermission ? (foundPermission.scopes as Scope[]): [];\n if (approve) {\n userScopes.push(...scopes);\n }\n try {\n await this.context!.doPut(`/resources/${id}/permissions`, [{ username: username, scopes: userScopes }] )\n ContentAlert.success(Msg.localize('shareSuccess'));\n this.props.onClose();\n } catch (e) {\n console.error('Could not update permissions', e.error);\n }\n };\n\n private handleToggleDialog = () => {\n this.setState({ isOpen: !this.state.isOpen });\n };\n\n public render(): React.ReactNode {\n const id = `shareRequest-${this.props.resource.name.replace(/\\s/, '-')}`;\n return (\n <React.Fragment>\n <Button id={id} variant=\"link\" onClick={this.handleToggleDialog}>\n <UserCheckIcon size=\"lg\" />\n <Badge>{this.props.resource.shareRequests.length}</Badge>\n </Button>\n\n <Modal\n id={`modal-${id}`}\n title={Msg.localize('permissionRequests') + ' - ' + this.props.resource.name}\n isLarge={true}\n isOpen={this.state.isOpen}\n onClose={this.handleToggleDialog}\n actions={[\n <Button id={`close-${id}`} key=\"close\" variant=\"link\" onClick={this.handleToggleDialog}>\n <Msg msgKey=\"close\" />\n </Button>,\n ]}\n >\n <DataList aria-label={Msg.localize('permissionRequests')}>\n <DataListItemRow>\n <DataListItemCells\n dataListCells={[\n <DataListCell key='permissions-name-header' width={5}>\n <strong>Requestor</strong>\n </DataListCell>,\n <DataListCell key='permissions-requested-header' width={5}>\n <strong><Msg msgKey='permissionRequests' /></strong>\n </DataListCell>,\n <DataListCell key='permission-request-header' width={5}>\n </DataListCell>\n ]}\n />\n </DataListItemRow>\n {this.props.resource.shareRequests.map((shareRequest, i) =>\n <DataListItem key={i} aria-labelledby=\"requestor\">\n <DataListItemRow>\n <DataListItemCells\n dataListCells={[\n <DataListCell id={`requestor${i}`} key={`requestor${i}`}>\n <span>\n {shareRequest.firstName} {shareRequest.lastName} {shareRequest.lastName ? '' : shareRequest.username}\n </span><br />\n <Text component={TextVariants.small}>{shareRequest.email}</Text>\n </DataListCell>,\n <DataListCell id={`permissions${i}`} key={`permissions${i}`}>\n {(shareRequest.scopes as Scope[]).map((scope, j) => <Chip key={j} isReadOnly>{scope}</Chip>)}\n </DataListCell>,\n <DataListCell key={`actions${i}`}>\n <Split gutter=\"sm\">\n <SplitItem>\n <Button\n id={`accept-${i}-${id}`}\n onClick={() => this.handleApprove(shareRequest, i)}\n >\n Accept\n </Button>\n </SplitItem>\n <SplitItem>\n <Button\n id={`deny-${i}-${id}`}\n variant=\"danger\"\n onClick={() => this.handleDeny(shareRequest, i)}\n >\n Deny\n </Button>\n </SplitItem>\n </Split>\n </DataListCell>\n ]}\n />\n </DataListItemRow>\n </DataListItem>\n )}\n </DataList>\n </Modal>\n </React.Fragment>\n );\n }\n}"],"file":"PermissionRequest.js"}
|