Merge branch 'develop' of https://github.com/syuilo/misskey into develop

This commit is contained in:
syuilo
2019-07-07 05:13:21 +09:00
8 changed files with 90 additions and 10 deletions

View File

@ -0,0 +1,21 @@
import $ from 'cafy';
import define from '../../../define';
import { UserProfiles } from '../../../../../models';
export const meta = {
requireCredential: true,
secure: true,
params: {
value: {
validator: $.boolean
}
}
};
export default define(meta, async (ps, user) => {
await UserProfiles.update(user.id, {
usePasswordLessLogin: ps.value
});
});

View File

@ -72,19 +72,25 @@ export default async (ctx: Koa.BaseContext) => {
}
}
if (!same) {
await fail(403, {
error: 'incorrect password'
});
return;
}
if (!profile.twoFactorEnabled) {
signin(ctx, user);
if (same) {
signin(ctx, user);
} else {
await fail(403, {
error: 'incorrect password'
});
}
return;
}
if (token) {
if (!same) {
await fail(403, {
error: 'incorrect password'
});
return;
}
const verified = (speakeasy as any).totp.verify({
secret: profile.twoFactorSecret,
encoding: 'base32',
@ -101,6 +107,13 @@ export default async (ctx: Koa.BaseContext) => {
return;
}
} else if (body.credentialId) {
if (!same && !profile.usePasswordLessLogin) {
await fail(403, {
error: 'incorrect password'
});
return;
}
const clientDataJSON = Buffer.from(body.clientDataJSON, 'hex');
const clientData = JSON.parse(clientDataJSON.toString('utf-8'));
const challenge = await AttestationChallenges.findOne({
@ -163,6 +176,13 @@ export default async (ctx: Koa.BaseContext) => {
return;
}
} else {
if (!same && !profile.usePasswordLessLogin) {
await fail(403, {
error: 'incorrect password'
});
return;
}
const keys = await UserSecurityKeys.find({
userId: user.id
});