mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-11 00:57:00 +02:00
68 lines
2.1 KiB
JavaScript
68 lines
2.1 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import NamedPathAdapter from 'vault/adapters/named-path';
|
|
import { encodePath } from 'vault/utils/path-encoding-helpers';
|
|
|
|
export default class LdapLibraryAdapter extends NamedPathAdapter {
|
|
getURL(backend, name) {
|
|
const base = `${this.buildURL()}/${encodePath(backend)}/library`;
|
|
return name ? `${base}/${name}` : base;
|
|
}
|
|
|
|
urlForUpdateRecord(name, modelName, snapshot) {
|
|
return this.getURL(snapshot.attr('backend'), name);
|
|
}
|
|
urlForDeleteRecord(name, modelName, snapshot) {
|
|
return this.getURL(snapshot.attr('backend'), name);
|
|
}
|
|
|
|
query(store, type, query) {
|
|
const { backend } = query;
|
|
return this.ajax(this.getURL(backend), 'GET', { data: { list: true } })
|
|
.then((resp) => {
|
|
return resp.data.keys.map((name) => ({ name, backend }));
|
|
})
|
|
.catch((error) => {
|
|
if (error.httpStatus === 404) {
|
|
return [];
|
|
}
|
|
throw error;
|
|
});
|
|
}
|
|
queryRecord(store, type, query) {
|
|
const { backend, name } = query;
|
|
return this.ajax(this.getURL(backend, name), 'GET').then((resp) => ({ ...resp.data, backend, name }));
|
|
}
|
|
|
|
fetchStatus(backend, name) {
|
|
const url = `${this.getURL(backend, name)}/status`;
|
|
return this.ajax(url, 'GET').then((resp) => {
|
|
const statuses = [];
|
|
for (const key in resp.data) {
|
|
const status = {
|
|
...resp.data[key],
|
|
account: key,
|
|
library: name,
|
|
};
|
|
statuses.push(status);
|
|
}
|
|
return statuses;
|
|
});
|
|
}
|
|
checkOutAccount(backend, name, ttl) {
|
|
const url = `${this.getURL(backend, name)}/check-out`;
|
|
return this.ajax(url, 'POST', { data: { ttl } }).then((resp) => {
|
|
const { lease_id, lease_duration, renewable } = resp;
|
|
const { service_account_name: account, password } = resp.data;
|
|
return { account, password, lease_id, lease_duration, renewable };
|
|
});
|
|
}
|
|
checkInAccount(backend, name, service_account_names) {
|
|
const url = `${this.getURL(backend, name)}/check-in`;
|
|
return this.ajax(url, 'POST', { data: { service_account_names } }).then((resp) => resp.data);
|
|
}
|
|
}
|