# Dominio Auth ## Propósito Gestiona identidad y acceso de usuarios de la tienda y del panel administrativo: registro, inicio y cierre de sesión, perfil, autenticación con Google y recuperación de contraseña. ## Modelo y servicios - `User`: usuario autenticable, asociado a tenant, rol, intentos de acceso y categorías habilitadas para escaneo. - `LoginAttempt` y `ResetPasswordAttempt`: trazabilidad de accesos y recuperación de contraseña. - `PasswordLoginService`: autentica tienda y AdminApp, incluyendo bloqueo por intentos. - `RegisterUserService` y `ProfileService`: alta y edición del usuario. - `ResetPasswordAttemptService`: crea, valida y consume códigos de recuperación. - `GoogleAuthService`: redirección, callback e intercambio de código para Google OAuth. - `AdminAppContextService`: carga el contexto requerido por un usuario administrativo. ## Endpoints públicos - `POST /register`, `POST /login` y `POST /logout`. - `GET /me` y `PUT /me`, protegidos por `auth:sanctum`. - Creación, validación y aplicación de intentos de recuperación bajo `/password`. - `POST /auth/google/exchange` para canjear el código de autenticación. - `POST /v1/adminapp/login` y consulta del usuario administrativo dentro del grupo autenticado de AdminApp. ## Validación y respuestas Los `FormRequest` validan cada operación. `UserResource` y `AdminAppMeResource` definen las representaciones de salida. Los endpoints sensibles aplican `auth:sanctum` y límites de frecuencia. ## Dependencias y eventos Se relaciona con `Tenant` y `Authorization`; el registro y la recuperación disparan flujos atendidos por `Notification`. El carrito invitado puede integrarse al usuario autenticado mediante el dominio `Cart`. ## Consideraciones - La resolución del tenant forma parte de la autenticación y no debe omitirse. - Los cambios en reglas de login deben conservar los límites de intentos y el manejo de `AccountLockedException`.