Feat: Seguridad avanzada para cambio de email y gestión de MFA
- Backend: Implementada lógica de tokens para cambio de mail y desactivación de 2FA. - Frontend: Nuevos flujos de verificación en Perfil y Panel de Seguridad.
This commit is contained in:
17
Backend/MotoresArgentinosV2.Core/DTOs/SecurityDtos.cs
Normal file
17
Backend/MotoresArgentinosV2.Core/DTOs/SecurityDtos.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
namespace MotoresArgentinosV2.Core.DTOs;
|
||||
|
||||
public class InitiateEmailChangeRequest
|
||||
{
|
||||
public string NewEmail { get; set; } = string.Empty;
|
||||
public string MfaCode { get; set; } = string.Empty; // Código de Google Authenticator
|
||||
}
|
||||
|
||||
public class ConfirmEmailChangeRequest
|
||||
{
|
||||
public string Token { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class ConfirmSecurityActionRequest
|
||||
{
|
||||
public string Token { get; set; } = string.Empty; // Código numérico enviado por mail
|
||||
}
|
||||
@@ -61,6 +61,15 @@ public class User
|
||||
public DateTime? PasswordResetTokenExpiresAt { get; set; }
|
||||
public DateTime? LastPasswordResetEmailSentAt { get; set; }
|
||||
|
||||
// Para cambio de email
|
||||
public string? NewEmailCandidate { get; set; }
|
||||
public string? EmailChangeToken { get; set; }
|
||||
public DateTime? EmailChangeTokenExpiresAt { get; set; }
|
||||
|
||||
// Para reset/desactivación de MFA
|
||||
public string? SecurityActionToken { get; set; }
|
||||
public DateTime? SecurityActionTokenExpiresAt { get; set; }
|
||||
|
||||
// Bloqueo de usuario
|
||||
public bool IsBlocked { get; set; }
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
|
||||
@@ -16,5 +16,13 @@ public interface IIdentityService
|
||||
Task<(bool Success, string Message)> ForgotPasswordAsync(string email);
|
||||
Task<(bool Success, string Message)> ResetPasswordAsync(string token, string newPassword);
|
||||
Task<(bool Success, string Message)> ChangePasswordAsync(int userId, string current, string newPwd);
|
||||
// Cambio de Email Seguro
|
||||
Task<(bool Success, string Message)> InitiateEmailChangeAsync(int userId, string newEmail, string mfaCode);
|
||||
Task<(bool Success, string Message)> ConfirmEmailChangeAsync(string token);
|
||||
|
||||
// Gestión MFA Segura
|
||||
Task<(bool Success, string Message)> InitiateMFADisableAsync(int userId);
|
||||
Task<(bool Success, string Message)> ConfirmMFADisableAsync(int userId, string token);
|
||||
Task<(bool Success, string Message)> InitiateMFAReconfigureAsync(int userId);
|
||||
Task<User> CreateGhostUserAsync(string email, string firstName, string lastName, string phone);
|
||||
}
|
||||
Reference in New Issue
Block a user