mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-15 15:37:33 +08:00
code refactor
This commit is contained in:
@@ -29,6 +29,7 @@ import {
|
||||
} from './mutations.js';
|
||||
|
||||
import user from './user.js';
|
||||
import twoFactorAuth from './twoFactorAuth.js';
|
||||
import token from './token.js';
|
||||
import exchangeRates from './exchangeRates.js';
|
||||
import account from './account.js';
|
||||
@@ -264,6 +265,11 @@ const stores = {
|
||||
updateUserProfile: user.updateUserProfile,
|
||||
clearUserInfoState: user.clearUserInfoState,
|
||||
resetState: user.resetState,
|
||||
get2FAStatus: twoFactorAuth.get2FAStatus,
|
||||
enable2FA: twoFactorAuth.enable2FA,
|
||||
confirmEnable2FA: twoFactorAuth.confirmEnable2FA,
|
||||
disable2FA: twoFactorAuth.disable2FA,
|
||||
regenerate2FARecoveryCode: twoFactorAuth.regenerate2FARecoveryCode,
|
||||
getAllTokens: token.getAllTokens,
|
||||
refreshTokenAndRevokeOldToken: token.refreshTokenAndRevokeOldToken,
|
||||
revokeToken: token.revokeToken,
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
import userState from '../lib/userstate.js';
|
||||
import services from '../lib/services.js';
|
||||
import logger from '../lib/logger.js';
|
||||
import utils from '../lib/utils.js';
|
||||
|
||||
function get2FAStatus() {
|
||||
return new Promise((resolve, reject) => {
|
||||
services.get2FAStatus().then(response => {
|
||||
const data = response.data;
|
||||
|
||||
if (!data || !data.success || !data.result || !utils.isBoolean(data.result.enable)) {
|
||||
reject({ message: 'Unable to get current two factor authentication status' });
|
||||
return;
|
||||
}
|
||||
|
||||
resolve(data.result);
|
||||
}).catch(error => {
|
||||
logger.error('failed to get 2fa status', error);
|
||||
|
||||
if (error.response && error.response.data && error.response.data.errorMessage) {
|
||||
reject({ error: error.response.data });
|
||||
} else if (!error.processed) {
|
||||
reject({ message: 'Unable to get current two factor authentication status' });
|
||||
} else {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function enable2FA() {
|
||||
return new Promise((resolve, reject) => {
|
||||
services.enable2FA().then(response => {
|
||||
const data = response.data;
|
||||
|
||||
if (!data || !data.success || !data.result || !data.result.qrcode || !data.result.secret) {
|
||||
reject({ message: 'Unable to enable two factor authentication' });
|
||||
return;
|
||||
}
|
||||
|
||||
resolve(data.result);
|
||||
}).catch(error => {
|
||||
logger.error('failed to request to enable 2fa', error);
|
||||
|
||||
if (error.response && error.response.data && error.response.data.errorMessage) {
|
||||
reject({ error: error.response.data });
|
||||
} else if (!error.processed) {
|
||||
reject({ message: 'Unable to enable two factor authentication' });
|
||||
} else {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function confirmEnable2FA(context, { secret, passcode }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
services.confirmEnable2FA({
|
||||
secret: secret,
|
||||
passcode: passcode
|
||||
}).then(response => {
|
||||
const data = response.data;
|
||||
|
||||
if (!data || !data.success || !data.result || !data.result.token) {
|
||||
reject({ message: 'Unable to enable two factor authentication' });
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.result.token) {
|
||||
userState.updateToken(data.result.token);
|
||||
}
|
||||
|
||||
resolve(data.result);
|
||||
}).catch(error => {
|
||||
logger.error('failed to confirm to enable 2fa', error);
|
||||
|
||||
if (error.response && error.response.data && error.response.data.errorMessage) {
|
||||
reject({ error: error.response.data });
|
||||
} else if (!error.processed) {
|
||||
reject({ message: 'Unable to enable two factor authentication' });
|
||||
} else {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function disable2FA(context, { password }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
services.disable2FA({
|
||||
password: password
|
||||
}).then(response => {
|
||||
const data = response.data;
|
||||
|
||||
if (!data || !data.success || !data.result) {
|
||||
reject({ message: 'Unable to disable two factor authentication' });
|
||||
return;
|
||||
}
|
||||
|
||||
resolve(data.result);
|
||||
}).catch(error => {
|
||||
logger.error('failed to disable 2fa', error);
|
||||
|
||||
if (error.response && error.response.data && error.response.data.errorMessage) {
|
||||
reject({ error: error.response.data });
|
||||
} else if (!error.processed) {
|
||||
reject({ message: 'Unable to disable two factor authentication' });
|
||||
} else {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function regenerate2FARecoveryCode(context, { password }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
services.regenerate2FARecoveryCode({
|
||||
password: password
|
||||
}).then(response => {
|
||||
const data = response.data;
|
||||
|
||||
if (!data || !data.success || !data.result || !data.result.recoveryCodes || !data.result.recoveryCodes.length) {
|
||||
reject({ message: 'Unable to regenerate two factor authentication backup codes' });
|
||||
return;
|
||||
}
|
||||
|
||||
resolve(data.result);
|
||||
}).catch(error => {
|
||||
logger.error('failed to regenerate 2fa recovery code', error);
|
||||
|
||||
if (error.response && error.response.data && error.response.data.errorMessage) {
|
||||
reject({ error: error.response.data });
|
||||
} else if (!error.processed) {
|
||||
reject({ message: 'Unable to regenerate two factor authentication backup codes' });
|
||||
} else {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
get2FAStatus,
|
||||
enable2FA,
|
||||
confirmEnable2FA,
|
||||
disable2FA,
|
||||
regenerate2FARecoveryCode
|
||||
}
|
||||
Reference in New Issue
Block a user