feat: implement Google OAuth authentication
- Add Google OAuth 2.0 login flow with passport-google-oauth20 - Create User and RefreshToken entities for session management - Implement JWT access tokens (15min) + HttpOnly refresh cookies (7 days) - Add auth endpoints: /google, /google/callback, /refresh, /me, /logout - Create LoginPage with Google sign-in button (shadcn/ui) - Add AuthGuard for protected routes with redirect preservation - Implement silent token refresh on app mount - Add UserMenu component with avatar and sign-out Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
28
backend/src/modules/auth/dto/auth-response.dto.ts
Normal file
28
backend/src/modules/auth/dto/auth-response.dto.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { IsString, IsUUID, IsEmail, IsOptional, IsUrl } from 'class-validator';
|
||||
|
||||
export class UserResponseDto {
|
||||
@IsUUID()
|
||||
id: string;
|
||||
|
||||
@IsEmail()
|
||||
email: string;
|
||||
|
||||
@IsString()
|
||||
displayName: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsUrl()
|
||||
avatarUrl?: string;
|
||||
}
|
||||
|
||||
export class AuthResponseDto {
|
||||
@IsString()
|
||||
accessToken: string;
|
||||
|
||||
user: UserResponseDto;
|
||||
}
|
||||
|
||||
export class MessageResponseDto {
|
||||
@IsString()
|
||||
message: string;
|
||||
}
|
||||
Reference in New Issue
Block a user