60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import ApplicationAdapter from './application';
|
|
|
|
export default class MfaMethodAdapter extends ApplicationAdapter {
|
|
namespace = 'v1';
|
|
|
|
pathForType() {
|
|
return 'identity/mfa/method';
|
|
}
|
|
|
|
createOrUpdate(store, type, snapshot) {
|
|
const data = store.serializerFor(type.modelName).serialize(snapshot);
|
|
const { id } = snapshot;
|
|
return this.ajax(this.buildURL(type.modelName, id, snapshot, 'POST'), 'POST', {
|
|
data,
|
|
}).then((res) => {
|
|
// TODO: Check how 204's are handled by ember
|
|
return {
|
|
data: {
|
|
...data,
|
|
id: res?.data?.method_id || id,
|
|
},
|
|
};
|
|
});
|
|
}
|
|
|
|
createRecord() {
|
|
return this.createOrUpdate(...arguments);
|
|
}
|
|
|
|
updateRecord() {
|
|
return this.createOrUpdate(...arguments);
|
|
}
|
|
|
|
urlForDeleteRecord(id, modelName, snapshot) {
|
|
return this.buildURL(modelName, id, snapshot, 'POST');
|
|
}
|
|
|
|
query(store, type, query) {
|
|
const url = this.urlForQuery(query, type.modelName);
|
|
return this.ajax(url, 'GET', {
|
|
data: {
|
|
list: true,
|
|
},
|
|
});
|
|
}
|
|
|
|
buildURL(modelName, id, snapshot, requestType) {
|
|
if (requestType === 'POST') {
|
|
const url = `${super.buildURL(modelName)}/${snapshot.attr('type')}`;
|
|
return id ? `${url}/${id}` : url;
|
|
}
|
|
return super.buildURL(...arguments);
|
|
}
|
|
}
|