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