From 2756f553c68082342a784ef716c62da6cea6f3ca Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 22 Feb 2019 11:46:58 +0900 Subject: Improve error handling of API (#4345) * wip * wip * wip * Update attached_notes.ts * wip * Refactor * wip * wip * wip * wip * wip * wip * wip * wip * Update call.ts * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * :v: * Fix --- src/server/api/endpoints/i/2fa/done.ts | 10 +++++----- src/server/api/endpoints/i/2fa/register.ts | 24 ++++++++++++------------ src/server/api/endpoints/i/2fa/unregister.ts | 8 ++++---- 3 files changed, 21 insertions(+), 21 deletions(-) (limited to 'src/server/api/endpoints/i/2fa') diff --git a/src/server/api/endpoints/i/2fa/done.ts b/src/server/api/endpoints/i/2fa/done.ts index 2ee0c8886e..556354c386 100644 --- a/src/server/api/endpoints/i/2fa/done.ts +++ b/src/server/api/endpoints/i/2fa/done.ts @@ -15,11 +15,11 @@ export const meta = { } }; -export default define(meta, (ps, user) => new Promise(async (res, rej) => { +export default define(meta, async (ps, user) => { const _token = ps.token.replace(/\s/g, ''); if (user.twoFactorTempSecret == null) { - return rej('二段階認証の設定が開始されていません'); + throw new Error('二段階認証の設定が開始されていません'); } const verified = (speakeasy as any).totp.verify({ @@ -29,7 +29,7 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { }); if (!verified) { - return rej('not verified'); + throw new Error('not verified'); } await User.update(user._id, { @@ -39,5 +39,5 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { } }); - res(); -})); + return; +}); diff --git a/src/server/api/endpoints/i/2fa/register.ts b/src/server/api/endpoints/i/2fa/register.ts index 38e3ca7806..302b51ec0b 100644 --- a/src/server/api/endpoints/i/2fa/register.ts +++ b/src/server/api/endpoints/i/2fa/register.ts @@ -18,12 +18,12 @@ export const meta = { } }; -export default define(meta, (ps, user) => new Promise(async (res, rej) => { +export default define(meta, async (ps, user) => { // Compare password const same = await bcrypt.compare(ps.password, user.password); if (!same) { - return rej('incorrect password'); + throw new Error('incorrect password'); } // Generate user's secret key @@ -38,17 +38,17 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { }); // Get the data URL of the authenticator URL - QRCode.toDataURL(speakeasy.otpauthURL({ + const dataUrl = await QRCode.toDataURL(speakeasy.otpauthURL({ secret: secret.base32, encoding: 'base32', label: user.username, issuer: config.host - }), (err, data_url) => { - res({ - qr: data_url, - secret: secret.base32, - label: user.username, - issuer: config.host - }); - }); -})); + })); + + return { + qr: dataUrl, + secret: secret.base32, + label: user.username, + issuer: config.host + }; +}); diff --git a/src/server/api/endpoints/i/2fa/unregister.ts b/src/server/api/endpoints/i/2fa/unregister.ts index 2cb48d93cd..37b2639198 100644 --- a/src/server/api/endpoints/i/2fa/unregister.ts +++ b/src/server/api/endpoints/i/2fa/unregister.ts @@ -15,12 +15,12 @@ export const meta = { } }; -export default define(meta, (ps, user) => new Promise(async (res, rej) => { +export default define(meta, async (ps, user) => { // Compare password const same = await bcrypt.compare(ps.password, user.password); if (!same) { - return rej('incorrect password'); + throw new Error('incorrect password'); } await User.update(user._id, { @@ -30,5 +30,5 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { } }); - res(); -})); + return; +}); -- cgit v1.2.3-freya