@@ -1,5 +1,5 @@
|
||||
|
||||
import { Controller, Get, Post, Query, Res, Req, Body, HttpCode, HttpStatus } from '@nestjs/common';
|
||||
import { Controller, Get, Post, Query, Res, Req, Body, HttpCode, HttpStatus, Logger } from '@nestjs/common';
|
||||
import { ApiTags, ApiOperation } from '@nestjs/swagger';
|
||||
import { AuthService } from './auth.service';
|
||||
import { Response, Request } from 'express';
|
||||
@@ -8,6 +8,7 @@ import { ConfigService } from '@nestjs/config';
|
||||
@ApiTags('Auth')
|
||||
@Controller('auth')
|
||||
export class AuthController {
|
||||
private readonly logger = new Logger('AuthController');
|
||||
constructor(private readonly authService: AuthService, private readonly config: ConfigService) {}
|
||||
|
||||
@Get('login')
|
||||
@@ -35,11 +36,13 @@ export class AuthController {
|
||||
if (cookieDomain) cookieOptions.domain = cookieDomain;
|
||||
|
||||
// access token cookie (internal JWT)
|
||||
this.logger.log(`Setting access & refresh cookies. cookieOptions=${JSON.stringify(cookieOptions)}`);
|
||||
res.cookie('raylab_jwt', result.accessToken, { ...cookieOptions, maxAge: result.expiresIn * 1000 });
|
||||
|
||||
// refresh token cookie
|
||||
res.cookie('raylab_refresh', result.refreshToken, { ...cookieOptions, maxAge: result.refreshTtl * 1000 });
|
||||
|
||||
this.logger.debug(`Callback complete. returnTo=${result.returnTo} user=${JSON.stringify(result.user)}`);
|
||||
return res.redirect(302, result.returnTo || '/');
|
||||
}
|
||||
|
||||
@@ -56,7 +59,9 @@ export class AuthController {
|
||||
@ApiOperation({ summary: 'Refresh internal JWT using internal refresh token' })
|
||||
async refresh(@Req() req: Request) {
|
||||
const refreshToken = req.cookies?.raylab_refresh || req.body?.refreshToken;
|
||||
this.logger.debug(`Refresh called. cookies present=${!!req.cookies} refreshTokenProvided=${!!refreshToken}`);
|
||||
const result = await this.authService.refresh(refreshToken);
|
||||
this.logger.debug(`Refresh result for user. expiresIn=${result.expiresIn}`);
|
||||
return { success: true, data: result };
|
||||
}
|
||||
|
||||
@@ -64,7 +69,9 @@ export class AuthController {
|
||||
@ApiOperation({ summary: 'Get current user from internal JWT (cookie or Authorization header)' })
|
||||
async me(@Req() req: Request) {
|
||||
const token = (req.cookies?.raylab_jwt) || (req.headers.authorization && (req.headers.authorization as string).replace(/^Bearer\s+/i, ''));
|
||||
this.logger.debug(`Me called. cookies present=${!!req.cookies} tokenProvided=${!!token}`);
|
||||
const user = await this.authService.me(token);
|
||||
this.logger.debug(`Me returning user id=${user?.id}`);
|
||||
return { success: true, data: user };
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user