fix: fixed the timestamp comparison login in verifyPasswordlessTokens route

This commit is contained in:
Balu Babu
2023-01-13 01:46:34 +05:30
parent f4df8873be
commit 5fe934110e
4 changed files with 57 additions and 4 deletions

View File

@@ -215,8 +215,35 @@ export class AuthService {
statusCode: HttpStatus.NOT_FOUND,
});
const currentTime = DateTime.now().toISOTime();
//TODO: new to check this datetime checking logic
const user = await this.usersService.findUserById(
passwordlessTokens.value.userUid,
);
if (O.isNone(user))
return E.left({
message: USER_NOT_FOUND,
statusCode: HttpStatus.NOT_FOUND,
});
// Check to see if entry for magic-link is present in the Account table for this user
const profile = {
provider: 'email',
id: user.value.email,
};
const providerAccountExists = await this.checkIfProviderAccountExists(
user.value,
profile,
);
if (O.isNone(providerAccountExists)) {
await this.usersService.createProviderAccount(
user.value,
null,
null,
profile,
);
}
const currentTime = DateTime.now().toISO();
if (currentTime > passwordlessTokens.value.expiresOn.toISOString())
return E.left({
message: MAGIC_LINK_EXPIRED,

View File

@@ -3,10 +3,14 @@ import { PassportStrategy } from '@nestjs/passport';
import { Injectable } from '@nestjs/common';
import { UserService } from 'src/user/user.service';
import * as O from 'fp-ts/Option';
import { AuthService } from '../auth.service';
@Injectable()
export class GoogleStrategy extends PassportStrategy(Strategy) {
constructor(private usersService: UserService) {
constructor(
private usersService: UserService,
private authService: AuthService,
) {
super({
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
@@ -30,6 +34,18 @@ export class GoogleStrategy extends PassportStrategy(Strategy) {
return createdUser;
}
// Check to see if entry for google is present in the Account table for this user
const providerAccountExists =
await this.authService.checkIfProviderAccountExists(user.value, profile);
if (O.isNone(providerAccountExists))
await this.usersService.createProviderAccount(
user.value,
accessToken,
refreshToken,
profile,
);
return user.value;
}
}