* feat: restart cmd added in aio service * feat: nestjs config package added * test: fix all broken test case * feat: infra config module add with get-update-reset functionality * test: fix test case failure * feat: update infra configs mutation added * feat: utilise ConfigService in util functions * chore: remove saml stuff * feat: removed saml stuffs * fix: config service precedence * fix: mailer module init with right env value * feat: added mutations and query * feat: add query infra-configs * fix: mailer module init issue * chore: smtp url validation added * fix: all sso disabling is handled * fix: pnpm i without db connection * fix: allowedAuthProviders and enableAndDisableSSO * fix: validateSMTPUrl check * feat: get api added for fetch provider list * feat: feedback resolve * chore: update code comments * fix: uppercase issue of VITE_ALLOWED_AUTH_PROVIDERS * chore: update lockfile * fix: add validation checks for MAILER_ADDRESS_FROM * test: fix test case * chore: feedback resolve * chore: renamed an enum * chore: app shutdown way changed --------- Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
|
|
import { AuthGuard } from '@nestjs/passport';
|
|
import { AuthProvider, authProviderCheck, throwHTTPErr } from '../helper';
|
|
import { Observable } from 'rxjs';
|
|
import { AUTH_PROVIDER_NOT_SPECIFIED } from 'src/errors';
|
|
import { ConfigService } from '@nestjs/config';
|
|
|
|
@Injectable()
|
|
export class GoogleSSOGuard extends AuthGuard('google') implements CanActivate {
|
|
constructor(private readonly configService: ConfigService) {
|
|
super();
|
|
}
|
|
|
|
canActivate(
|
|
context: ExecutionContext,
|
|
): boolean | Promise<boolean> | Observable<boolean> {
|
|
if (
|
|
!authProviderCheck(
|
|
AuthProvider.GOOGLE,
|
|
this.configService.get('INFRA.VITE_ALLOWED_AUTH_PROVIDERS'),
|
|
)
|
|
) {
|
|
throwHTTPErr({ message: AUTH_PROVIDER_NOT_SPECIFIED, statusCode: 404 });
|
|
}
|
|
|
|
return super.canActivate(context);
|
|
}
|
|
|
|
getAuthenticateOptions(context: ExecutionContext) {
|
|
const req = context.switchToHttp().getRequest();
|
|
|
|
return {
|
|
state: {
|
|
redirect_uri: req.query.redirect_uri,
|
|
},
|
|
};
|
|
}
|
|
}
|