UNPKG

@okta-dfuhriman/okta-auth-js

Version:
78 lines (70 loc) 2.38 kB
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; }; } } }