From 4dd8ec89b8247d8a12e95bfa8b950a0140de2d03 Mon Sep 17 00:00:00 2001 From: Michael Lange Date: Fri, 6 Oct 2017 17:14:08 -0700 Subject: [PATCH] Make sure to qualify requests made outside of adapters --- ui/app/services/system.js | 10 +++++++--- ui/app/services/token.js | 14 +++++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ui/app/services/system.js b/ui/app/services/system.js index 4ff2f6b5b..82e1669d5 100644 --- a/ui/app/services/system.js +++ b/ui/app/services/system.js @@ -1,14 +1,18 @@ import Ember from 'ember'; -import fetch from 'fetch'; import PromiseObject from '../utils/classes/promise-object'; import { namespace } from '../adapters/application'; -const { Service, computed } = Ember; +const { Service, computed, inject } = Ember; export default Service.extend({ + token: inject.service(), + leader: computed(function() { + const token = this.get('token'); + return PromiseObject.create({ - promise: fetch(`/${namespace}/status/leader`) + promise: token + .authorizedRequest(`/${namespace}/status/leader`) .then(res => res.json()) .then(rpcAddr => ({ rpcAddr })) .then(leader => { diff --git a/ui/app/services/token.js b/ui/app/services/token.js index 0a28c78b3..78fe7a148 100644 --- a/ui/app/services/token.js +++ b/ui/app/services/token.js @@ -1,6 +1,7 @@ import Ember from 'ember'; +import fetch from 'fetch'; -const { Service, computed } = Ember; +const { Service, computed, assign } = Ember; export default Service.extend({ accessor: computed({ @@ -31,4 +32,15 @@ export default Service.extend({ return value; }, }), + + authorizedRequest(url, options = {}) { + const headers = {}; + const token = this.get('secret'); + + if (token) { + headers['X-Nomad-Token'] = token; + } + + return fetch(url, assign(options, { headers })); + }, });