43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
import { inject as service } from '@ember/service';
|
|
import { default as ApplicationAdapter, namespace } from './application';
|
|
import OTTExchangeError from '../utils/ott-exchange-error';
|
|
|
|
export default class TokenAdapter extends ApplicationAdapter {
|
|
@service store;
|
|
|
|
namespace = namespace + '/acl';
|
|
|
|
findSelf() {
|
|
return this.ajax(`${this.buildURL()}/token/self`, 'GET').then((token) => {
|
|
const store = this.store;
|
|
store.pushPayload('token', {
|
|
tokens: [token],
|
|
});
|
|
|
|
return store.peekRecord('token', store.normalize('token', token).data.id);
|
|
});
|
|
}
|
|
|
|
exchangeOneTimeToken(oneTimeToken) {
|
|
return this.ajax(`${this.buildURL()}/token/onetime/exchange`, 'POST', {
|
|
data: {
|
|
OneTimeSecretID: oneTimeToken,
|
|
},
|
|
})
|
|
.then(({ Token: token }) => {
|
|
const store = this.store;
|
|
store.pushPayload('token', {
|
|
tokens: [token],
|
|
});
|
|
|
|
return store.peekRecord(
|
|
'token',
|
|
store.normalize('token', token).data.id
|
|
);
|
|
})
|
|
.catch(() => {
|
|
throw new OTTExchangeError();
|
|
});
|
|
}
|
|
}
|