123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- 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 2018 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 { DataList, DataListItem, DataListItemRow, DataListCell, DataListToggle, DataListContent, DataListItemCells, Grid, GridItem, Button } from "../../../../common/keycloak/web_modules/@patternfly/react-core.js";
- import { InfoAltIcon, CheckIcon, ExternalLinkAltIcon } from "../../../../common/keycloak/web_modules/@patternfly/react-icons.js";
- import { ContentPage } from "../ContentPage.js";
- import { ContinueCancelModal } from "../../widgets/ContinueCancelModal.js";
- import { AccountServiceContext } from "../../account-service/AccountServiceContext.js";
- import { Msg } from "../../widgets/Msg.js";
- export class ApplicationsPage extends React.Component {
- constructor(props, context) {
- super(props);
- _defineProperty(this, "context", void 0);
- _defineProperty(this, "removeConsent", clientId => {
- this.context.doDelete("/applications/" + clientId + "/consent").then(() => {
- this.fetchApplications();
- });
- });
- _defineProperty(this, "onToggle", row => {
- const newIsRowOpen = this.state.isRowOpen;
- newIsRowOpen[row] = !newIsRowOpen[row];
- this.setState({
- isRowOpen: newIsRowOpen
- });
- });
- this.context = context;
- this.state = {
- isRowOpen: [],
- applications: []
- };
- this.fetchApplications();
- }
- fetchApplications() {
- this.context.doGet("/applications").then(response => {
- const applications = response.data || [];
- this.setState({
- isRowOpen: new Array(applications.length).fill(false),
- applications: applications
- });
- });
- }
- elementId(item, application) {
- return `application-${item}-${application.clientId}`;
- }
- render() {
- return React.createElement(ContentPage, {
- title: Msg.localize('applicationsPageTitle')
- }, React.createElement(DataList, {
- id: "applications-list",
- "aria-label": Msg.localize('applicationsPageTitle'),
- isCompact: true
- }, React.createElement(DataListItem, {
- id: "applications-list-header",
- "aria-labelledby": "Columns names"
- }, React.createElement(DataListItemRow, null, "// invisible toggle allows headings to line up properly", React.createElement("span", {
- style: {
- visibility: 'hidden'
- }
- }, React.createElement(DataListToggle, {
- isExpanded: false,
- id: "applications-list-header-invisible-toggle",
- "aria-controls": "hidden"
- })), React.createElement(DataListItemCells, {
- dataListCells: [React.createElement(DataListCell, {
- key: "applications-list-client-id-header",
- width: 2
- }, React.createElement("strong", null, React.createElement(Msg, {
- msgKey: "applicationName"
- }))), React.createElement(DataListCell, {
- key: "applications-list-app-type-header",
- width: 2
- }, React.createElement("strong", null, React.createElement(Msg, {
- msgKey: "applicationType"
- }))), React.createElement(DataListCell, {
- key: "applications-list-status",
- width: 2
- }, React.createElement("strong", null, React.createElement(Msg, {
- msgKey: "status"
- })))]
- }))), this.state.applications.map((application, appIndex) => {
- return React.createElement(DataListItem, {
- id: this.elementId("client-id", application),
- key: 'application-' + appIndex,
- "aria-labelledby": "applications-list",
- isExpanded: this.state.isRowOpen[appIndex]
- }, React.createElement(DataListItemRow, null, React.createElement(DataListToggle, {
- onClick: () => this.onToggle(appIndex),
- isExpanded: this.state.isRowOpen[appIndex],
- id: this.elementId('toggle', application),
- "aria-controls": this.elementId("expandable", application)
- }), React.createElement(DataListItemCells, {
- dataListCells: [React.createElement(DataListCell, {
- id: this.elementId('name', application),
- width: 2,
- key: 'app-' + appIndex
- }, React.createElement(Button, {
- component: "a",
- variant: "link",
- onClick: () => window.open(application.effectiveUrl)
- }, application.clientName || application.clientId, " ", React.createElement(ExternalLinkAltIcon, null))), React.createElement(DataListCell, {
- id: this.elementId('internal', application),
- width: 2,
- key: 'internal-' + appIndex
- }, application.userConsentRequired ? Msg.localize('thirdPartyApp') : Msg.localize('internalApp'), application.offlineAccess ? ', ' + Msg.localize('offlineAccess') : ''), React.createElement(DataListCell, {
- id: this.elementId('status', application),
- width: 2,
- key: 'status-' + appIndex
- }, application.inUse ? Msg.localize('inUse') : Msg.localize('notInUse'))]
- })), React.createElement(DataListContent, {
- noPadding: false,
- "aria-label": Msg.localize('applicationDetails'),
- id: this.elementId("expandable", application),
- isHidden: !this.state.isRowOpen[appIndex]
- }, React.createElement(Grid, {
- sm: 6,
- md: 6,
- lg: 6
- }, React.createElement("div", {
- className: "pf-c-content"
- }, React.createElement(GridItem, null, React.createElement("strong", null, Msg.localize('client') + ': '), " ", application.clientId), application.description && React.createElement(GridItem, null, React.createElement("strong", null, Msg.localize('description') + ': '), " ", application.description), application.effectiveUrl && React.createElement(GridItem, null, React.createElement("strong", null, "URL: "), " ", React.createElement("span", {
- id: this.elementId('effectiveurl', application)
- }, application.effectiveUrl.split('"'))), application.consent && React.createElement(React.Fragment, null, React.createElement(GridItem, {
- span: 12
- }, React.createElement("strong", null, "Has access to:")), application.consent.grantedScopes.map((scope, scopeIndex) => {
- return React.createElement(React.Fragment, {
- key: 'scope-' + scopeIndex
- }, React.createElement(GridItem, {
- offset: 1
- }, React.createElement(CheckIcon, null), " ", scope.name));
- }), application.tosUri && React.createElement(GridItem, null, React.createElement("strong", null, Msg.localize('termsOfService') + ': '), application.tosUri), application.policyUri && React.createElement(GridItem, null, React.createElement("strong", null, Msg.localize('policy') + ': '), application.policyUri), React.createElement(GridItem, null, React.createElement("strong", null, Msg.localize('accessGrantedOn') + ': '), new Intl.DateTimeFormat(locale, {
- year: 'numeric',
- month: 'long',
- day: 'numeric',
- hour: 'numeric',
- minute: 'numeric',
- second: 'numeric'
- }).format(application.consent.createDate)))), application.logoUri && React.createElement("div", {
- className: "pf-c-content"
- }, React.createElement("img", {
- src: application.logoUri
- }))), (application.consent || application.offlineAccess) && React.createElement(Grid, {
- gutter: "sm"
- }, React.createElement("hr", null), React.createElement(GridItem, null, React.createElement(React.Fragment, null, React.createElement(ContinueCancelModal, {
- buttonTitle: Msg.localize('removeButton') // required
- ,
- buttonVariant: "secondary" // defaults to 'primary'
- ,
- modalTitle: Msg.localize('removeModalTitle') // required
- ,
- modalMessage: Msg.localize('removeModalMessage', [application.clientId]),
- modalContinueButtonLabel: Msg.localize('confirmButton') // defaults to 'Continue'
- ,
- onContinue: () => this.removeConsent(application.clientId) // required
- }))), React.createElement(GridItem, null, React.createElement(InfoAltIcon, null), " ", Msg.localize('infoMessage')))));
- })));
- }
- }
- _defineProperty(ApplicationsPage, "contextType", AccountServiceContext);
- ;
- //# sourceMappingURL=ApplicationsPage.js.map
|