Spaces:
Paused
Paused
File size: 1,692 Bytes
07441a7 | 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import {
Controller,
Post,
Body,
UsePipes,
ValidationPipe,
UnauthorizedException,
Get,
Req,
Res,
UseGuards,
} from '@nestjs/common';
import { AuthService } from './auth.service';
import { CreateUserDto } from '../users/dto/create-user.dto';
import { UsersService } from '../users/users.service';
import { LoginDto } from './dto/login.dto';
import { AuthGuard } from '@nestjs/passport';
import { ConfigService } from '@nestjs/config';
@Controller('auth')
export class AuthController {
constructor(
private authService: AuthService,
private usersService: UsersService,
private configService: ConfigService,
) {}
@Post('login')
@UsePipes(new ValidationPipe())
async login(@Body() loginDto: LoginDto) {
const user = await this.authService.validateUser(
loginDto.username,
loginDto.pass,
);
if (!user) {
throw new UnauthorizedException('Invalid credentials');
}
return this.authService.login(user);
}
@Post('register')
@UsePipes(new ValidationPipe())
async register(@Body() createUserDto: CreateUserDto) {
return this.usersService.create(createUserDto);
}
@Get('twitter')
@UseGuards(AuthGuard('twitter'))
async twitterLogin() {
// Initiates the Twitter OAuth flow
}
@Get('twitter/callback')
@UseGuards(AuthGuard('twitter'))
async twitterLoginCallback(@Req() req, @Res() res) {
const jwt = await this.authService.login(req.user);
const frontendUrl =
this.configService.get<string>('FRONTEND_URL') || 'http://localhost:3000';
res.redirect(`${frontendUrl}/auth/success?token=${jwt.access_token}`);
}
}
|