@okta-dfuhriman/okta-auth-js
Version:
The Okta Auth SDK
78 lines (70 loc) • 2.38 kB
text/typescript
import { EnrollPasswordPayload, UpdatePasswordPayload, PasswordStatus } from '../types';
import BaseTransaction from './Base';
import { generateRequestFnFromLinks } from '../request';
export default class PasswordTransaction extends BaseTransaction {
id: string;
created: string;
lastUpdated: string;
status: PasswordStatus;
// eslint-disable-next-line no-use-before-define
get?: () => Promise<PasswordTransaction>;
// eslint-disable-next-line no-use-before-define
enroll?: (payload: EnrollPasswordPayload) => Promise<PasswordTransaction>;
// eslint-disable-next-line no-use-before-define
update?: (payload: UpdatePasswordPayload) => Promise<PasswordTransaction>;
delete?: () => Promise<BaseTransaction>;
constructor(oktaAuth, options) {
super(oktaAuth, options);
const { res, accessToken } = options;
// assign required fields from res
const { id, status, created, lastUpdated, _links } = res;
this.id = id;
this.status = status;
this.created = created;
this.lastUpdated = lastUpdated;
// assign transformed fns to transaction
if (this.status == PasswordStatus.NOT_ENROLLED) {
this.enroll = async (payload) => {
const fn = generateRequestFnFromLinks({
oktaAuth,
accessToken,
methodName: 'enroll',
links: _links,
transactionClassName: 'PasswordTransaction'
});
return await fn(payload) as PasswordTransaction;
};
}
else {
this.get = async () => {
const fn = generateRequestFnFromLinks({
oktaAuth,
accessToken,
methodName: 'get',
links: _links,
transactionClassName: 'PasswordTransaction'
});
return await fn() as PasswordTransaction;
};
this.update = async (payload) => {
const fn = generateRequestFnFromLinks({
oktaAuth,
accessToken,
methodName: 'put',
links: _links,
transactionClassName: 'PasswordTransaction'
});
return await fn(payload) as PasswordTransaction;
};
this.delete = async () => {
const fn = generateRequestFnFromLinks({
oktaAuth,
accessToken,
methodName: 'delete',
links: _links
});
return await fn() as BaseTransaction;
};
}
}
}