52a62f2b8d
UI to accompany the new ACLs APIs
47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
import Service from '@ember/service';
|
|
import { Promise } from 'rsvp';
|
|
import { get } from '@ember/object';
|
|
import getStorage from 'consul-ui/utils/storage/local-storage';
|
|
const SCHEME = 'consul';
|
|
const storage = getStorage(SCHEME);
|
|
export default Service.extend({
|
|
storage: storage,
|
|
findHeaders: function() {
|
|
// TODO: if possible this should be a promise
|
|
// TODO: Actually this has nothing to do with settings it should be in the adapter,
|
|
// which probably can't work with a promise based interface :(
|
|
const token = get(this, 'storage').getValue('token');
|
|
// TODO: The old UI always sent ?token=
|
|
// replicate the old functionality here
|
|
// but remove this to be cleaner if its not necessary
|
|
return {
|
|
'X-Consul-Token': typeof token.SecretID === 'undefined' ? '' : token.SecretID,
|
|
};
|
|
},
|
|
findAll: function(key) {
|
|
return Promise.resolve(get(this, 'storage').all());
|
|
},
|
|
findBySlug: function(slug) {
|
|
return Promise.resolve(get(this, 'storage').getValue(slug));
|
|
},
|
|
persist: function(obj) {
|
|
const storage = get(this, 'storage');
|
|
Object.keys(obj).forEach((item, i) => {
|
|
storage.setValue(item, obj[item]);
|
|
});
|
|
return Promise.resolve(obj);
|
|
},
|
|
delete: function(obj) {
|
|
// TODO: Loop through and delete the specified keys
|
|
if (!Array.isArray(obj)) {
|
|
obj = [obj];
|
|
}
|
|
const storage = get(this, 'storage');
|
|
const item = obj.reduce(function(prev, item, i, arr) {
|
|
storage.removeValue(item);
|
|
return prev;
|
|
}, {});
|
|
return Promise.resolve(item);
|
|
},
|
|
});
|