mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-21 14:09:34 +01:00
62 lines
1.3 KiB
JavaScript
62 lines
1.3 KiB
JavaScript
|
|
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;
|