All files / src/modules/api/auth/strategies discord.strategy.ts

0% Statements 0/9
100% Branches 0/0
0% Functions 0/2
0% Lines 0/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37                                                                         
import { AuthService } from "@/modules/api/auth/auth.service";
import { Config } from "@/modules/shared/config/types";
import { Services } from "@/types/Constants";
import { Inject, Injectable } from "@nestjs/common";
import { ConfigService } from "@nestjs/config";
import { PassportStrategy } from "@nestjs/passport";
import { Profile, Strategy } from "passport-discord";
 
@Injectable()
export class DiscordStrategy extends PassportStrategy(Strategy, "Discord") {
	constructor(
		@Inject(Services.Auth) private readonly authService: AuthService,
		private readonly config: ConfigService,
	) {
		const Configs = config.getOrThrow<Config["Discord"]>("Discord").Client;
		super({
			clientID: Configs.ID,
			clientSecret: Configs.Secret,
			callbackURL: Configs.CallbackURL,
			scope: ["identify", "guilds", "email"],
		});
	}
 
	async validate(accessToken: string, refreshToken: string, profile: Profile) {
		const { username, id, avatar, email } = profile;
		const details = {
			username,
			id,
			avatar,
			email,
			accessToken,
			refreshToken,
		};
		return await this.authService.validateUser(details);
	}
}