import {
  Controller,
  Get,
  Req,
  Res
} from '@nestjs/common';
import { Request, Response } from 'express';
import { CsrfService } from './csrf.service';
import { Public } from '../common/decorators/public.decorator';
// import { cookieOptions } from '../common/constants/cookieOptions.constant';
// import { DoubleCsrfCookieOptions } from 'csrf-csrf';

@Controller('csrf')
export class CsrfController {
  constructor(
    private csrfService: CsrfService
  ) {}

  @Get()
  @Public()
  getCsrfToken(
    @Req() req: Request,
    @Res() res: Response
  ) {
    // TODO: why are we generating a new token for each request
    // const csrfToken = this.csrfService.generateToken(res, req)
    // console.log('Generated new anti-CSRF token', csrfToken)
    // res.cookie(`__${process.env.DOMAIN}-x-csrf-token`, csrfToken, cookieOptions() as DoubleCsrfCookieOptions);
    // Generated new anti-CSRF token e1d2756f69e77c300cb9d9c129a71763df5becac07d3ae41009ce1854d380abd5192de403681c4963e9a80424d3a0e86887c220a9cb8ba698a4451ed4d7e8eec
    return res.send(this.csrfService.generateToken(req, res))
  }
}