2024-09-07 10:21:41 -07:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
import {Totp} from 'time2fa';
|
|
|
|
|
2024-09-07 11:41:54 -07:00
|
|
|
function isTotpEnabled() {
|
|
|
|
if (process.env.TOTP_ENABLED === undefined) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (process.env.TOTP_SECRET === undefined) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (process.env.TOTP_ENABLED.toLocaleLowerCase() !== 'true') {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2024-09-07 10:21:41 -07:00
|
|
|
function getTotpSecret() {
|
|
|
|
return process.env.TOTP_SECRET;
|
|
|
|
}
|
|
|
|
|
|
|
|
function checkForTotSecret() {
|
|
|
|
if (process.env.TOTP_SECRET !== undefined) return true;
|
|
|
|
else return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
function validateTOTP(guessedPasscode: string) {
|
|
|
|
if (process.env.TOTP_SECRET === undefined) return false;
|
|
|
|
|
|
|
|
try {
|
|
|
|
const valid = Totp.validate({
|
|
|
|
passcode: guessedPasscode,
|
|
|
|
secret: process.env.TOTP_SECRET.trim()
|
|
|
|
});
|
|
|
|
return valid;
|
|
|
|
} catch (e) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default {
|
2024-09-07 11:41:54 -07:00
|
|
|
isTotpEnabled,
|
2024-09-07 10:21:41 -07:00
|
|
|
getTotpSecret,
|
|
|
|
checkForTotSecret,
|
|
|
|
validateTOTP
|
|
|
|
};
|