From efc2bbb85673fb269e75d64655e433bed90a995a Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Sun, 10 Oct 2021 10:16:18 +0200 Subject: [PATCH] Allow any service to override the credentials option --- docs/configuration.md | 2 +- src/mixins/service.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index b1cce56..0dd0a85 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -26,7 +26,7 @@ connectivityCheck: true # whether you want to display a message when the apps ar # Optional: Proxy / hosting option proxy: - useCredentials: false # send cookies & authorization headers when fetching service specific data. Set to `true` if you use an authentication proxy. + useCredentials: false # send cookies & authorization headers when fetching service specific data. Set to `true` if you use an authentication proxy. Can be overrided on service level. # Optional theming theme: default # 'default' or one of the themes available in 'src/assets/themes'. diff --git a/src/mixins/service.js b/src/mixins/service.js index 99d8c01..ae23a27 100644 --- a/src/mixins/service.js +++ b/src/mixins/service.js @@ -6,6 +6,10 @@ export default { // custom service often consume info from an API using the item link (url) as a base url, // but sometimes the base url is different. An optional alternative URL can be provided with the "endpoint" key. this.endpoint = this.item.endpoint || this.item.url; + + if (this.endpoint.endsWith("/")) { + this.endpoint = this.endpoint.slice(0, -1); + } }, methods: { fetch: function (path, init) { @@ -15,8 +19,18 @@ export default { options.credentials = "include"; } + // Each item can override the credential settings + if (this.item.useCredentials !== undefined) { + options.credentials = + this.item.useCredentials === true ? "include" : "omit"; + } + options = Object.assign(options, init); + if (path.startsWith("/")) { + path = path.slice(1); + } + return fetch(`${this.endpoint}/${path}`, options).then((response) => { if (!response.ok) { throw new Error("Not 2xx response"); -- 2.41.0