UNPKG

@alfresco/js-api

Version:

JavaScript client library for the Alfresco REST API

150 lines 5.65 kB
"use strict"; /*! * @license * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved. * * 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. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.ContentAuth = void 0; const tslib_1 = require("tslib"); const event_emitter_1 = tslib_1.__importDefault(require("event-emitter")); const auth_rest_api_1 = require("../api/auth-rest-api"); const alfrescoApiClient_1 = require("../alfrescoApiClient"); const storage_1 = require("../storage"); class ContentAuth extends alfrescoApiClient_1.AlfrescoApiClient { constructor(config, alfrescoApi, httpClient) { super(undefined, httpClient); this.className = 'ContentAuth'; this.storage = storage_1.Storage.getInstance(); this.storage.setDomainPrefix(config.domainPrefix); this.setConfig(config); this.authApi = new auth_rest_api_1.AuthenticationApi(alfrescoApi); } setConfig(config) { this.config = config; this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; this.ticketStorageLabel = 'ticket-ECM'; if (this.config.ticketEcm) { this.setTicket(config.ticketEcm); } else if (this.storage.getItem(this.ticketStorageLabel)) { this.setTicket(this.storage.getItem(this.ticketStorageLabel)); } } changeHost() { this.basePath = this.config.hostEcm + '/' + this.config.contextRoot + '/api/-default-/public/authentication/versions/1'; this.ticket = undefined; } saveUsername(username) { if (this.storage.supportsStorage()) { this.storage.setItem('ACS_USERNAME', username); } } login(username, password) { this.authentications.basicAuth.username = username; this.authentications.basicAuth.password = password; const loginRequest = new auth_rest_api_1.TicketBody({ userId: this.authentications.basicAuth.username, password: this.authentications.basicAuth.password }); const promise = new Promise((resolve, reject) => { this.authApi .createTicket(loginRequest) .then((data) => { this.saveUsername(username); this.setTicket(data.entry.id); promise.emit('success'); this.emit('logged-in'); resolve(data.entry.id); }) .catch((error) => { this.saveUsername(''); if (error.status === 401) { promise.emit('unauthorized'); } else if (error.status === 403) { promise.emit('forbidden'); } else { promise.emit('error'); } reject(error); }); }); (0, event_emitter_1.default)(promise); return promise; } validateTicket() { this.setTicket(this.config.ticketEcm); const promise = new Promise((resolve, reject) => { this.authApi.validateTicket().then((data) => { this.setTicket(data.entry.id); promise.emit('success'); this.emit('logged-in'); resolve(data.entry.id); }, (error) => { if (error.status === 401) { promise.emit('unauthorized'); } promise.emit('error'); reject(error); }); }); (0, event_emitter_1.default)(promise); return promise; } logout() { this.saveUsername(''); const promise = new Promise((resolve, reject) => { this.authApi.deleteTicket().then(() => { promise.emit('logout'); this.invalidateSession(); resolve(); }, (error) => { if (error.status === 401) { promise.emit('unauthorized'); } promise.emit('error'); reject(error); }); }); (0, event_emitter_1.default)(promise); return promise; } setTicket(ticket) { this.authentications.basicAuth.username = 'ROLE_TICKET'; this.authentications.basicAuth.password = ticket; this.config.ticketEcm = ticket; this.storage.setItem(this.ticketStorageLabel, ticket); this.ticket = ticket; } getTicket() { return this.ticket; } invalidateSession() { this.storage.removeItem(this.ticketStorageLabel); this.authentications.basicAuth.username = null; this.authentications.basicAuth.password = null; this.config.ticketEcm = null; this.ticket = null; } isLoggedIn() { return !!this.ticket; } getAuthentication() { return this.authentications; } } exports.ContentAuth = ContentAuth; //# sourceMappingURL=../../../../../lib/js-api/src/authentication/contentAuth.js.map