Files
notesnook/packages/core/api/mfa-manager.js

62 lines
1.3 KiB
JavaScript
Raw Normal View History

2022-03-11 22:49:24 +05:00
import http from "../utils/http";
import constants from "../utils/constants";
import TokenManager from "./token-manager";
const ENDPOINTS = {
setup: "/mfa/setup",
enable: "/mfa/enable",
disable: "/mfa/disable",
reset: "/mfa/reset",
recoveryCodes: "/mfa/recovery_codes",
};
class MFAManager {
/**
*
* @param {import("../database/storage").default} storage
* @param {import("../api/index").default} db
*/
constructor(storage, db) {
this._storage = storage;
this._db = db;
this.tokenManager = new TokenManager(storage);
}
/**
*
* @param {"app" | "sms" | "email"} type
* @param {string} phoneNumber
* @returns
*/
async setup(type, phoneNumber = undefined) {
const token = await this.tokenManager.getAccessToken();
if (!token) return;
return await http.post(
`${constants.AUTH_HOST}${ENDPOINTS.setup}`,
{
type,
phoneNumber,
},
token
);
}
/**
*
* @param {"app" | "sms" | "email"} type
* @param {string} code
* @returns
*/
async enable(type, code) {
const token = await this.tokenManager.getAccessToken();
if (!token) return;
return await http.post(
`${constants.AUTH_HOST}${ENDPOINTS.enable}`,
{ type, code },
token
);
}
}
export default MFAManager;