UNPKG

@querc/squidex-client

Version:

NodeJS client for the [Squidex](https://squidex.io/) CMS

78 lines (60 loc) 7.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthenticationManager = void 0; 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; } /** * Handles authentication for Squidex requests */ class AuthenticationManager { constructor(config, httpClient) { this.config = config; this.httpClient = httpClient; _defineProperty(this, "accessToken", void 0); _defineProperty(this, "accessTokenExpiresOn", void 0); } /** * Authenticate with the Squidex server * * Resolves with the access token */ async authenticate() { if (this.requiresAuthentication()) { delete this.accessToken; delete this.accessTokenExpiresOn; const response = await this.httpClient.send({ method: 'POST', path: '/identity-server/connect/token', data: { /* eslint-disable @typescript-eslint/camelcase */ grant_type: 'client_credentials', scope: 'squidex-api', client_secret: this.config.clientSecret, client_id: this.config.clientId /* eslint-enable */ }, contentType: 'application/x-www-form-urlencoded' }); /* eslint-disable @typescript-eslint/camelcase */ this.accessToken = response.access_token; /* eslint-enable */ const now = new Date(); /* eslint-disable @typescript-eslint/camelcase */ now.setTime(now.getTime() + response.expires_in * 1000); /* eslint-enable */ this.accessTokenExpiresOn = new Date(now.toUTCString()); } return this.accessToken; } requiresAuthentication() { if (this.accessToken === undefined || this.accessTokenExpiresOn === undefined) { return true; } // Check 1 day before token expiry, just to be sure const now = new Date(); now.setDate(now.getDate() - 1); return this.accessTokenExpiresOn < new Date(now.toUTCString()); } } exports.AuthenticationManager = AuthenticationManager; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbIkF1dGhlbnRpY2F0aW9uTWFuYWdlciIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwiaHR0cENsaWVudCIsImF1dGhlbnRpY2F0ZSIsInJlcXVpcmVzQXV0aGVudGljYXRpb24iLCJhY2Nlc3NUb2tlbiIsImFjY2Vzc1Rva2VuRXhwaXJlc09uIiwicmVzcG9uc2UiLCJzZW5kIiwibWV0aG9kIiwicGF0aCIsImRhdGEiLCJncmFudF90eXBlIiwic2NvcGUiLCJjbGllbnRfc2VjcmV0IiwiY2xpZW50U2VjcmV0IiwiY2xpZW50X2lkIiwiY2xpZW50SWQiLCJjb250ZW50VHlwZSIsImFjY2Vzc190b2tlbiIsIm5vdyIsIkRhdGUiLCJzZXRUaW1lIiwiZ2V0VGltZSIsImV4cGlyZXNfaW4iLCJ0b1VUQ1N0cmluZyIsInVuZGVmaW5lZCIsInNldERhdGUiLCJnZXREYXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFLQTs7O0FBR08sTUFBTUEscUJBQU4sQ0FBNEI7QUFJL0JDLEVBQUFBLFdBQVcsQ0FBa0JDLE1BQWxCLEVBQXVFQyxVQUF2RSxFQUErRjtBQUFBLFNBQTdFRCxNQUE2RSxHQUE3RUEsTUFBNkU7QUFBQSxTQUF4QkMsVUFBd0IsR0FBeEJBLFVBQXdCOztBQUFBOztBQUFBO0FBQUU7QUFFNUc7Ozs7Ozs7QUFLQSxRQUFhQyxZQUFiLEdBQTZDO0FBQ3pDLFFBQUksS0FBS0Msc0JBQUwsRUFBSixFQUFtQztBQUMvQixhQUFPLEtBQUtDLFdBQVo7QUFDQSxhQUFPLEtBQUtDLG9CQUFaO0FBRUEsWUFBTUMsUUFBUSxHQUFHLE1BQU0sS0FBS0wsVUFBTCxDQUFnQk0sSUFBaEIsQ0FBZ0U7QUFDbkZDLFFBQUFBLE1BQU0sRUFBRSxNQUQyRTtBQUVuRkMsUUFBQUEsSUFBSSxFQUFFLGdDQUY2RTtBQUduRkMsUUFBQUEsSUFBSSxFQUFFO0FBQ0Y7QUFDQUMsVUFBQUEsVUFBVSxFQUFFLG9CQUZWO0FBR0ZDLFVBQUFBLEtBQUssRUFBRSxhQUhMO0FBSUZDLFVBQUFBLGFBQWEsRUFBRSxLQUFLYixNQUFMLENBQVljLFlBSnpCO0FBS0ZDLFVBQUFBLFNBQVMsRUFBRSxLQUFLZixNQUFMLENBQVlnQjtBQUN2Qjs7QUFORSxTQUg2RTtBQVduRkMsUUFBQUEsV0FBVyxFQUFFO0FBWHNFLE9BQWhFLENBQXZCO0FBY0E7O0FBQ0EsV0FBS2IsV0FBTCxHQUFtQkUsUUFBUSxDQUFDWSxZQUE1QjtBQUNBOztBQUVBLFlBQU1DLEdBQUcsR0FBRyxJQUFJQyxJQUFKLEVBQVo7QUFDQTs7QUFDQUQsTUFBQUEsR0FBRyxDQUFDRSxPQUFKLENBQVlGLEdBQUcsQ0FBQ0csT0FBSixLQUFnQmhCLFFBQVEsQ0FBQ2lCLFVBQVQsR0FBc0IsSUFBbEQ7QUFDQTs7QUFDQSxXQUFLbEIsb0JBQUwsR0FBNEIsSUFBSWUsSUFBSixDQUFTRCxHQUFHLENBQUNLLFdBQUosRUFBVCxDQUE1QjtBQUNIOztBQUVELFdBQU8sS0FBS3BCLFdBQVo7QUFDSDs7QUFFT0QsRUFBQUEsc0JBQVIsR0FBMEM7QUFDdEMsUUFBSSxLQUFLQyxXQUFMLEtBQXFCcUIsU0FBckIsSUFBa0MsS0FBS3BCLG9CQUFMLEtBQThCb0IsU0FBcEUsRUFBK0U7QUFDM0UsYUFBTyxJQUFQO0FBQ0gsS0FIcUMsQ0FLdEM7OztBQUNBLFVBQU1OLEdBQUcsR0FBRyxJQUFJQyxJQUFKLEVBQVo7QUFDQUQsSUFBQUEsR0FBRyxDQUFDTyxPQUFKLENBQVlQLEdBQUcsQ0FBQ1EsT0FBSixLQUFnQixDQUE1QjtBQUVBLFdBQU8sS0FBS3RCLG9CQUFMLEdBQTRCLElBQUllLElBQUosQ0FBU0QsR0FBRyxDQUFDSyxXQUFKLEVBQVQsQ0FBbkM7QUFDSDs7QUF0RDhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3F1aWRleENsaWVudENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IFNxdWlkZXhPQXV0aFJlcXVlc3QgfSBmcm9tICcuL3NxdWlkZXgtb2F1dGgtcmVxdWVzdCc7XG5pbXBvcnQgeyBTcXVpZGV4T0F1dGhSZXNwb25zZSB9IGZyb20gJy4vc3F1aWRleC1vYXV0aC1yZXNwb25zZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnLi4vaHR0cCc7XG5cbi8qKlxuICogSGFuZGxlcyBhdXRoZW50aWNhdGlvbiBmb3IgU3F1aWRleCByZXF1ZXN0c1xuICovXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyIHtcbiAgICBwcml2YXRlIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBhY2Nlc3NUb2tlbkV4cGlyZXNPbjogRGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBTcXVpZGV4Q2xpZW50Q29uZmlndXJhdGlvbiwgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7fVxuXG4gICAgLyoqXG4gICAgICogQXV0aGVudGljYXRlIHdpdGggdGhlIFNxdWlkZXggc2VydmVyXG4gICAgICpcbiAgICAgKiBSZXNvbHZlcyB3aXRoIHRoZSBhY2Nlc3MgdG9rZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgYXV0aGVudGljYXRlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVzQXV0aGVudGljYXRpb24oKSkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYWNjZXNzVG9rZW47XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5hY2Nlc3NUb2tlbkV4cGlyZXNPbjtcblxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuc2VuZDxTcXVpZGV4T0F1dGhSZXF1ZXN0LCBTcXVpZGV4T0F1dGhSZXNwb25zZT4oe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvaWRlbnRpdHktc2VydmVyL2Nvbm5lY3QvdG9rZW4nLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuICAgICAgICAgICAgICAgICAgICBncmFudF90eXBlOiAnY2xpZW50X2NyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgICAgICAgICAgc2NvcGU6ICdzcXVpZGV4LWFwaScsXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudF9zZWNyZXQ6IHRoaXMuY29uZmlnLmNsaWVudFNlY3JldCxcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSAgKi9cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2FtZWxjYXNlICovXG4gICAgICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuID0gcmVzcG9uc2UuYWNjZXNzX3Rva2VuO1xuICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG4gICAgICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuICAgICAgICAgICAgbm93LnNldFRpbWUobm93LmdldFRpbWUoKSArIHJlc3BvbnNlLmV4cGlyZXNfaW4gKiAxMDAwKTtcbiAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgICAgICAgIHRoaXMuYWNjZXNzVG9rZW5FeHBpcmVzT24gPSBuZXcgRGF0ZShub3cudG9VVENTdHJpbmcoKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5hY2Nlc3NUb2tlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlcXVpcmVzQXV0aGVudGljYXRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmFjY2Vzc1Rva2VuID09PSB1bmRlZmluZWQgfHwgdGhpcy5hY2Nlc3NUb2tlbkV4cGlyZXNPbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIDEgZGF5IGJlZm9yZSB0b2tlbiBleHBpcnksIGp1c3QgdG8gYmUgc3VyZVxuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBub3cuc2V0RGF0ZShub3cuZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXNzVG9rZW5FeHBpcmVzT24gPCBuZXcgRGF0ZShub3cudG9VVENTdHJpbmcoKSk7XG4gICAgfVxufVxuIl19