Add Google OAuth authentication support

- Add Google OAuth token verification and user lookup/creation
- Add GoogleAuthRequest and GoogleAuthResponse DTOs
- Add GoogleLogin handler in auth_handler.go
- Add google_auth.go service for token verification
- Add FindByGoogleID repository method for user lookup
- Add GoogleID field to User model
- Add Google OAuth configuration (client ID, enabled flag)
- Add i18n translations for Google auth error messages
- Add Google verification email template support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-12-13 00:51:44 -06:00
parent 684856e0e9
commit 780e699463
20 changed files with 531 additions and 13 deletions

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "Apple-Anmeldung ist nicht konfiguriert",
"error.apple_signin_failed": "Apple-Anmeldung fehlgeschlagen",
"error.invalid_apple_token": "Ungultiger Apple-Identitats-Token",
"error.google_signin_not_configured": "Google-Anmeldung ist nicht konfiguriert",
"error.google_signin_failed": "Google-Anmeldung fehlgeschlagen",
"error.invalid_google_token": "Ungultiger Google-Identitats-Token",
"error.invalid_task_id": "Ungultige Aufgaben-ID",
"error.invalid_residence_id": "Ungultige Immobilien-ID",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "Apple Sign In is not configured",
"error.apple_signin_failed": "Apple Sign In failed",
"error.invalid_apple_token": "Invalid Apple identity token",
"error.google_signin_not_configured": "Google Sign In is not configured",
"error.google_signin_failed": "Google Sign In failed",
"error.invalid_google_token": "Invalid Google identity token",
"error.invalid_task_id": "Invalid task ID",
"error.invalid_residence_id": "Invalid residence ID",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "El inicio de sesion con Apple no esta configurado",
"error.apple_signin_failed": "Error en el inicio de sesion con Apple",
"error.invalid_apple_token": "Token de identidad de Apple no valido",
"error.google_signin_not_configured": "El inicio de sesion con Google no esta configurado",
"error.google_signin_failed": "Error en el inicio de sesion con Google",
"error.invalid_google_token": "Token de identidad de Google no valido",
"error.invalid_task_id": "ID de tarea no valido",
"error.invalid_residence_id": "ID de propiedad no valido",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "La connexion Apple n'est pas configuree",
"error.apple_signin_failed": "Echec de la connexion Apple",
"error.invalid_apple_token": "Jeton d'identite Apple non valide",
"error.google_signin_not_configured": "La connexion Google n'est pas configuree",
"error.google_signin_failed": "Echec de la connexion Google",
"error.invalid_google_token": "Jeton d'identite Google non valide",
"error.invalid_task_id": "ID de tache non valide",
"error.invalid_residence_id": "ID de propriete non valide",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "L'accesso con Apple non è configurato",
"error.apple_signin_failed": "Accesso con Apple fallito",
"error.invalid_apple_token": "Token di identità Apple non valido",
"error.google_signin_not_configured": "L'accesso con Google non è configurato",
"error.google_signin_failed": "Accesso con Google fallito",
"error.invalid_google_token": "Token di identità Google non valido",
"error.invalid_task_id": "ID attività non valido",
"error.invalid_residence_id": "ID immobile non valido",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "Apple サインインが設定されていません",
"error.apple_signin_failed": "Apple サインインに失敗しました",
"error.invalid_apple_token": "無効な Apple ID トークンです",
"error.google_signin_not_configured": "Google サインインが設定されていません",
"error.google_signin_failed": "Google サインインに失敗しました",
"error.invalid_google_token": "無効な Google ID トークンです",
"error.invalid_task_id": "無効なタスクIDです",
"error.invalid_residence_id": "無効な物件IDです",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "Apple 로그인이 설정되지 않았습니다",
"error.apple_signin_failed": "Apple 로그인에 실패했습니다",
"error.invalid_apple_token": "유효하지 않은 Apple 인증 토큰입니다",
"error.google_signin_not_configured": "Google 로그인이 설정되지 않았습니다",
"error.google_signin_failed": "Google 로그인에 실패했습니다",
"error.invalid_google_token": "유효하지 않은 Google 인증 토큰입니다",
"error.invalid_task_id": "유효하지 않은 작업 ID입니다",
"error.invalid_residence_id": "유효하지 않은 주거지 ID입니다",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "Apple Sign In is niet geconfigureerd",
"error.apple_signin_failed": "Apple Sign In mislukt",
"error.invalid_apple_token": "Ongeldig Apple identiteitstoken",
"error.google_signin_not_configured": "Google Sign In is niet geconfigureerd",
"error.google_signin_failed": "Google Sign In mislukt",
"error.invalid_google_token": "Ongeldig Google identiteitstoken",
"error.invalid_task_id": "Ongeldig taak-ID",
"error.invalid_residence_id": "Ongeldig woning-ID",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "O login com Apple nao esta configurado",
"error.apple_signin_failed": "Falha no login com Apple",
"error.invalid_apple_token": "Token de identidade Apple invalido",
"error.google_signin_not_configured": "O login com Google nao esta configurado",
"error.google_signin_failed": "Falha no login com Google",
"error.invalid_google_token": "Token de identidade Google invalido",
"error.invalid_task_id": "ID da tarefa invalido",
"error.invalid_residence_id": "ID da propriedade invalido",

View File

@@ -21,6 +21,9 @@
"error.apple_signin_not_configured": "未配置 Apple 登录",
"error.apple_signin_failed": "Apple 登录失败",
"error.invalid_apple_token": "Apple 身份令牌无效",
"error.google_signin_not_configured": "未配置 Google 登录",
"error.google_signin_failed": "Google 登录失败",
"error.invalid_google_token": "Google 身份令牌无效",
"error.invalid_task_id": "任务 ID 无效",
"error.invalid_residence_id": "房产 ID 无效",