keycloak/themes/zariot/keycloak-preview/account/resources/app/content/applications-page/ApplicationsPage.js
2025-02-18 15:55:19 +03:00

151 lines
10 KiB
JavaScript

"use strict";
/*
* 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.
*/
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var react_core_1 = require("@patternfly/react-core");
var react_icons_1 = require("@patternfly/react-icons");
var ContentPage_1 = require("../ContentPage");
var ContinueCancelModal_1 = require("../../widgets/ContinueCancelModal");
var account_service_1 = require("../../account-service/account.service");
var Msg_1 = require("../../widgets/Msg");
var ApplicationsPage = /** @class */ (function (_super) {
__extends(ApplicationsPage, _super);
function ApplicationsPage(props) {
var _this = _super.call(this, props) || this;
_this.removeConsent = function (clientId) {
account_service_1.AccountServiceClient.Instance.doDelete("/applications/" + clientId + "/consent")
.then(function () {
_this.fetchApplications();
});
};
_this.onToggle = function (row) {
var newIsRowOpen = _this.state.isRowOpen;
newIsRowOpen[row] = !newIsRowOpen[row];
_this.setState({ isRowOpen: newIsRowOpen });
};
_this.state = {
isRowOpen: [],
applications: []
};
_this.fetchApplications();
return _this;
}
ApplicationsPage.prototype.fetchApplications = function () {
var _this = this;
account_service_1.AccountServiceClient.Instance.doGet("/applications")
.then(function (response) {
var applications = response.data;
_this.setState({
isRowOpen: new Array(applications.length).fill(false),
applications: applications
});
});
};
ApplicationsPage.prototype.elementId = function (item, application) {
return "application-" + item + "-" + application.clientId;
};
ApplicationsPage.prototype.render = function () {
var _this = this;
return (React.createElement(ContentPage_1.ContentPage, { title: Msg_1.Msg.localize('applicationsPageTitle') },
React.createElement(react_core_1.DataList, { id: "applications-list", "aria-label": Msg_1.Msg.localize('applicationsPageTitle') }, this.state.applications.map(function (application, appIndex) {
var appUrl = application.userConsentRequired ? application.baseUrl : '/auth' + application.baseUrl;
return (React.createElement(react_core_1.DataListItem, { id: _this.elementId("client-id", application), key: 'application-' + appIndex, "aria-labelledby": "applications-list", isExpanded: _this.state.isRowOpen[appIndex] },
React.createElement(react_core_1.DataListItemRow, null,
React.createElement(react_core_1.DataListToggle, { onClick: function () { return _this.onToggle(appIndex); }, isExpanded: _this.state.isRowOpen[appIndex], id: _this.elementId('toggle', application), "aria-controls": _this.elementId("expandable", application) }),
React.createElement(react_core_1.DataListItemCells, { dataListCells: [
React.createElement(react_core_1.DataListCell, { id: _this.elementId('name', application), width: 2, key: 'app-' + appIndex },
React.createElement(react_icons_1.BuilderImageIcon, { size: 'sm' }),
" ",
application.clientName ? application.clientName : application.clientId),
React.createElement(react_core_1.DataListCell, { id: _this.elementId('internal', application), width: 2, key: 'internal-' + appIndex },
application.userConsentRequired ? Msg_1.Msg.localize('thirdPartyApp') : Msg_1.Msg.localize('internalApp'),
application.offlineAccess ? ', ' + Msg_1.Msg.localize('offlineAccess') : ''),
React.createElement(react_core_1.DataListCell, { id: _this.elementId('status', application), width: 2, key: 'status-' + appIndex }, application.inUse ? Msg_1.Msg.localize('inUse') : Msg_1.Msg.localize('notInUse')),
React.createElement(react_core_1.DataListCell, { id: _this.elementId('baseurl', application), width: 4, key: 'baseUrl-' + appIndex },
React.createElement("button", { className: "pf-c-button pf-m-link", type: "button", onClick: function () { return window.open(appUrl); } },
React.createElement("span", { className: "pf-c-button__icon" },
React.createElement("i", { className: "fas fa-link", "aria-hidden": "true" })),
application.baseUrl)),
] })),
React.createElement(react_core_1.DataListContent, { noPadding: false, "aria-label": Msg_1.Msg.localize('applicationDetails'), id: _this.elementId("expandable", application), isHidden: !_this.state.isRowOpen[appIndex] },
React.createElement(react_core_1.Grid, { sm: 12, md: 12, lg: 12 },
React.createElement("div", { className: 'pf-c-content' },
React.createElement(react_core_1.GridItem, null,
React.createElement("strong", null, Msg_1.Msg.localize('client') + ': '),
" ",
application.clientId),
application.description &&
React.createElement(react_core_1.GridItem, null,
React.createElement("strong", null, Msg_1.Msg.localize('description') + ': '),
" ",
application.description),
React.createElement(react_core_1.GridItem, null,
React.createElement("strong", null, Msg_1.Msg.localize('baseUrl') + ': '),
" ",
application.baseUrl),
application.consent &&
React.createElement(React.Fragment, null,
React.createElement(react_core_1.GridItem, { span: 12 },
React.createElement("strong", null, "Has access to:")),
application.consent.grantedScopes.map(function (scope, scopeIndex) {
return (React.createElement(React.Fragment, { key: 'scope-' + scopeIndex },
React.createElement(react_core_1.GridItem, { offset: 1 },
React.createElement(react_icons_1.CheckIcon, null),
" ",
scope.name)));
}),
React.createElement(react_core_1.GridItem, null,
React.createElement("strong", null, Msg_1.Msg.localize('accessGrantedOn') + ': '),
new Intl.DateTimeFormat(locale, {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
}).format(application.consent.createDate))))),
React.createElement(react_core_1.Grid, { gutter: 'sm' },
React.createElement("hr", null),
application.consent &&
React.createElement(react_core_1.GridItem, null,
React.createElement(React.Fragment, null,
React.createElement(ContinueCancelModal_1.ContinueCancelModal, { buttonTitle: Msg_1.Msg.localize('removeButton'), buttonVariant: 'secondary' // defaults to 'primary'
, modalTitle: Msg_1.Msg.localize('removeModalTitle'), modalMessage: Msg_1.Msg.localize('removeModalMessage', [application.clientId]), modalContinueButtonLabel: Msg_1.Msg.localize('confirmButton'), onContinue: function () { return _this.removeConsent(application.clientId); } }))),
React.createElement(react_core_1.GridItem, null,
React.createElement(react_icons_1.InfoAltIcon, null),
" ",
Msg_1.Msg.localize('infoMessage'))))));
}))));
};
return ApplicationsPage;
}(React.Component));
exports.ApplicationsPage = ApplicationsPage;
;
//# sourceMappingURL=ApplicationsPage.js.map