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:
2026-01-29 13:05:18 -03:00
parent fe2c861007
commit 130f35c4f8
32 changed files with 2477 additions and 98 deletions

View 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;
}