fix: password reset token (#4743)

This commit is contained in:
DarkSky
2023-10-27 04:52:29 -05:00
committed by GitHub
parent ef8024c657
commit 588f63505d
2 changed files with 10 additions and 6 deletions

View File

@@ -135,12 +135,13 @@ export class AuthResolver {
@Args('token') token: string,
@Args('newPassword') newPassword: string
) {
const id = await this.session.get(token);
if (!id || id !== user.id) {
// we only create user account after user sign in with email link
const email = await this.session.get(token);
if (!email || email !== user.email || !user.emailVerified) {
throw new ForbiddenException('Invalid token');
}
await this.auth.changePassword(id, newPassword);
await this.auth.changePassword(email, newPassword);
await this.session.delete(token);
return user;

View File

@@ -233,10 +233,13 @@ export class AuthService {
return Boolean(user.password);
}
async changePassword(id: string, newPassword: string): Promise<User> {
async changePassword(email: string, newPassword: string): Promise<User> {
const user = await this.prisma.user.findUnique({
where: {
id,
email,
emailVerified: {
not: null,
},
},
});
@@ -248,7 +251,7 @@ export class AuthService {
return this.prisma.user.update({
where: {
id,
id: user.id,
},
data: {
password: hashedPassword,