From: Bastien Wirtz Date: Sun, 10 Oct 2021 08:16:18 +0000 (+0200) Subject: Allow any service to override the credentials option X-Git-Tag: v22.02.1~22 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=efc2bbb85673fb269e75d64655e433bed90a995a;p=github%2Fbastienwirtz%2Fhomer.git Allow any service to override the credentials option --- 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");