public async Task <Response> Handle(Request request, CancellationToken cancellationToken) { var user = await _userReadRepository.GetByEmailAsync(request.Email); var password = request.OldPassword.Encrypt(user.Salt); switch (request.GrantType) { case "new_password": if (!user.Password.Equals(password)) { return(new Response().AddError("The current password does not match")); } user.UpdatePassword(request.NewPassword); await _uow.CommitAsync(); SendEmail(user); break; case "forgot_password": if (!user.ChangePasswordCode.Equals(request.VerificationCode.Encrypt(user.Salt)) && user.CodeExpiration < DateTime.UtcNow) { return(new Response().AddError("Invalid verification code")); } user.UpdatePassword(request.NewPassword); await _uow.CommitAsync(); SendEmail(user); break; } return(new Response()); }
public async Task <Response> Handle(Request request, CancellationToken cancellationToken) { var user = await _userReadRepository.GetAsync(request.Id); var UserEmailVerify = await _userReadRepository.GetByEmailAsync(request.Email); if (user.Id != UserEmailVerify.Id) { return(new Response().AddError("Email already registered")); } user.Update(request.Name, request.Email); _userWriteRepository.Update(user); await _uow.CommitAsync(); var emailSubject = "Alteração de conta"; var emailBody = $"<p>Olá, {user.Name}!</p>" + "<p>Sua conta de usuário no sistema Calculador de Dívida alterada com sucesso!<p/>"; List <string> emails = new List <string>(); emails.Add(user.Email); await _mediator.Publish(new Notification(emailSubject, emailBody, emails)); return(new Response(user)); }
public async Task <Response> Handle(Request request, CancellationToken cancellationToken) { var userData = await _userReadRepository.GetByEmailAsync(request.Email); var validCredentials = (userData != null && request.Password.Encrypt(userData.Salt) == userData.Password); if (!validCredentials) { return(new Response().AddError("Invalid Credentials")); } return(new Response(new UserModel(userData.Id, userData.Name, userData.Email, userData.IdProfile))); }
public async Task <Response> Handle(Request request, CancellationToken cancellationToken) { var user = await _userReadRepository.GetByEmailAsync(request.Email); if (user == null) { return(new Response().AddError("Email is not registered")); } var newCode = _userWriteRepository.GenerateVerificationCode(); user.UpdateChangePasswordCode(newCode); await _uow.CommitAsync(); var emailSubject = "Código de Verificação"; var emailBody = "<tr>" + "<tr>" + "<td align = \"center\" valign = \"middle\" width = \"100%\" style = \"font-family: Arial, sans-serif, 'Lato'; color: #585858; font-size: 22px; line-height: 1; padding-top: 48px;\" >" + $"Olá, {user.Name}" + "</td>" + "</tr>" + "<tr>" + "<td align = \"center\" valign = \"middle\" width = \"100%\" style = \"font-family: Arial, sans-serif, 'Lato'; font-size: 32px; line-height: 1; padding-top: 35px;\" >" + "Aqui está seu código de verificação para a troca de senha: " + "</td>" + "</tr>" + "</tr>" + "<tr>" + "<td align=\"center\" width=\"100%\" style =\"font-family: Arial, sans-serif, 'Lato'; color: #000000; font-size: 42px; line-height: 1; padding-top: 0px;\">" + $"{newCode}" + "</td>" + "</tr>"; List <string> emails = new List <string>(); emails.Add(user.Email); await _mediator.Publish(new Notification(emailSubject, emailBody, emails)); return(new Response()); }
public Task <User> GetUserByEmailAsync(string email) { var result = userReadRepository.GetByEmailAsync(email); return(result); }