ghostfolio/apps/api/src/app/auth/auth.controller.ts

57 lines
1.4 KiB
TypeScript
Raw Normal View History

import { ConfigurationService } from '@ghostfolio/api/services/configuration.service';
2021-04-13 21:53:58 +02:00
import {
Controller,
Get,
HttpException,
Param,
Req,
Res,
UseGuards
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { AuthService } from './auth.service';
@Controller('auth')
export class AuthController {
public constructor(
private readonly authService: AuthService,
private readonly configurationService: ConfigurationService
) {}
2021-04-13 21:53:58 +02:00
@Get('anonymous/:accessToken')
public async accessTokenLogin(@Param('accessToken') accessToken: string) {
try {
const authToken = await this.authService.validateAnonymousLogin(
accessToken
);
return { authToken };
} catch {
throw new HttpException(
getReasonPhrase(StatusCodes.FORBIDDEN),
StatusCodes.FORBIDDEN
);
}
}
@Get('google')
@UseGuards(AuthGuard('google'))
public googleLogin() {
// Initiates the Google OAuth2 login flow
}
@Get('google/callback')
@UseGuards(AuthGuard('google'))
public googleLoginCallback(@Req() req, @Res() res) {
// Handles the Google OAuth2 callback
const jwt: string = req.user.jwt;
if (jwt) {
res.redirect(`${this.configurationService.get('ROOT_URL')}/auth/${jwt}`);
2021-04-13 21:53:58 +02:00
} else {
res.redirect(`${this.configurationService.get('ROOT_URL')}/auth`);
2021-04-13 21:53:58 +02:00
}
}
}