fix(backend): use atomic command to improve security
Co-Authored-By: Acid Chicken <root@acid-chicken.com>
This commit is contained in:
parent
090e9392cd
commit
9fdabe3666
@ -246,14 +246,12 @@ export class WebAuthnService {
|
|||||||
|
|
||||||
@bindThis
|
@bindThis
|
||||||
public async verifyAuthentication(userId: MiUser['id'], response: AuthenticationResponseJSON): Promise<boolean> {
|
public async verifyAuthentication(userId: MiUser['id'], response: AuthenticationResponseJSON): Promise<boolean> {
|
||||||
const challenge = await this.redisClient.get(`webauthn:challenge:${userId}`);
|
const challenge = await this.redisClient.getdel(`webauthn:challenge:${userId}`);
|
||||||
|
|
||||||
if (!challenge) {
|
if (!challenge) {
|
||||||
throw new IdentifiableError('2d16e51c-007b-4edd-afd2-f7dd02c947f6', 'challenge not found');
|
throw new IdentifiableError('2d16e51c-007b-4edd-afd2-f7dd02c947f6', 'challenge not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.redisClient.del(`webauthn:challenge:${userId}`);
|
|
||||||
|
|
||||||
const key = await this.userSecurityKeysRepository.findOneBy({
|
const key = await this.userSecurityKeysRepository.findOneBy({
|
||||||
id: response.id,
|
id: response.id,
|
||||||
userId: userId,
|
userId: userId,
|
||||||
|
Loading…
Reference in New Issue
Block a user