public async Task <IActionResult> OnPostChangeEmailAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound("Não foi possível carregar os dados do usuário")); } if (!ModelState.IsValid) { await LoadAsync(user).ConfigureAwait(false); return(Page()); } var email = await _userManager.GetEmailAsync(user); if (Input.NewEmail != email) { var userId = await _userManager.GetUserIdAsync(user); var code = await _userManager.GenerateChangeEmailTokenAsync(user, Input.NewEmail); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmailChange", pageHandler: null, values: new { userId = userId, email = Input.NewEmail, code = code }, protocol: Request.Scheme); var htmlMessage = $"Olá,<br>" + $"Recebemos uma solicitação de alteração de e-mail. Para confirmar seu novo e-mail <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clique neste link</a>.<br><br>" + $"Equipe de suporte ao cliente <br>" + $"Prestige do Brasil"; await _suporteAppServices.SendAutomaticSuporteEmail(htmlMessage, Input.NewEmail, "Alteração de email"); StatusMessage = "Link de confirmação encaminhado para o e-mail informado"; return(RedirectToPage()); } StatusMessage = "Não houve alteração no e-mail."; return(RedirectToPage()); }
public async Task <IActionResult> Edit(UsuarioEmpresaAggregateViewModel usuarioEmpresaAggregateViewModel) { if (ModelState.IsValid) { try { if (usuarioEmpresaAggregateViewModel.NewEmail != usuarioEmpresaAggregateViewModel.Email) { var user = await _userManager.FindByIdAsync(usuarioEmpresaAggregateViewModel.Usuario.UserId); var code = await _userManager.GenerateChangeEmailTokenAsync(user, usuarioEmpresaAggregateViewModel.NewEmail); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmailChange", pageHandler: null, values: new { area = "Identity", userId = user.Id, email = usuarioEmpresaAggregateViewModel.NewEmail, code = code }, protocol: Request.Scheme); var htmlMessage = $"Olá,<br>" + $"Nossa equipe alterou seu email. Para confirmar seu novo e-mail <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clique neste link</a>.<br><br>" + $"Equipe de suporte ao cliente <br>" + $"Prestige do Brasil"; await _suporteAppServices.SendAutomaticSuporteEmail(htmlMessage, usuarioEmpresaAggregateViewModel.NewEmail, "Alteração de email"); } await _usuarioAppServices.UpdateAsync(usuarioEmpresaAggregateViewModel.Usuario); TempData["Success"] = "Usuário atualizado com sucesso"; } catch (Exception e) { TempData["Error"] = e.Message; } } return(RedirectToAction("Edit", new { userId = usuarioEmpresaAggregateViewModel.Usuario.UserId })); }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound("Não foi possível carregar os dados do usuario.")); } var changePasswordResult = await _userManager.ChangePasswordAsync(user, Input.OldPassword, Input.NewPassword); if (!changePasswordResult.Succeeded) { foreach (var error in changePasswordResult.Errors) { ModelState.AddModelError(string.Empty, error.Description); } return(Page()); } var htmlMessage = $"Olá,<br>" + $"Sua senha acaba de ser alterada.<br>" + $"Caso esta alteração não tenha sido realizada por você, entre em contato com o suporte ou redefina sua senha em nosso site.<br><br>" + $"Equipe de suporte ao cliente <br>" + $"Prestige do Brasil"; await _suporteAppServices.SendAutomaticSuporteEmail(htmlMessage, user.Email, "Alteração de senha"); await _signInManager.RefreshSignInAsync(user); _logger.LogInformation("User changed their password successfully."); StatusMessage = "Senha alterada com sucesso"; return(RedirectToPage()); }
public async Task <IActionResult> OnPostAsync() { if (ModelState.IsValid) { var user = await _userManager.FindByEmailAsync(Input.Email); if (user == null || !(await _userManager.IsEmailConfirmedAsync(user))) { // Don't reveal that the user does not exist or is not confirmed return(RedirectToPage("./ForgotPasswordConfirmation")); } // For more information on how to enable account confirmation and password reset please // visit https://go.microsoft.com/fwlink/?LinkID=532713 var code = await _userManager.GeneratePasswordResetTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ResetPassword", pageHandler: null, values: new { area = "Identity", code }, protocol: Request.Scheme); var htmlMessage = $"Olá,<br>" + $"Recebemos uma solicitação de alteração de senha da sua conta. Para alterar sua senha <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clique neste link</a>.<br><br>" + $"Caso não tenha solicitado a alteração de senha, desconsidere esse e-mail.<br><br><br>" + $"Equipe de suporte ao cliente <br>" + $"Prestige do Brasil"; await _suporteAppServices.SendAutomaticSuporteEmail(htmlMessage, Input.Email, "Solicitação de recuperação de senha"); return(RedirectToPage("./ForgotPasswordConfirmation")); } return(Page()); }
public async Task <IActionResult> OnPostAsync(string CnpjConsulta, string captcha, string returnUrl = null) { returnUrl ??= Url.Content("~/"); if (returnUrl == "Consulta") { await ConsultarDadosCnpjAsync(CnpjConsulta).ConfigureAwait(false); return(Page()); } ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (!ModelState.IsValid) { return(Page()); } try { var empresaViewModel = await ConvertInputModelToModelEmpresa().ConfigureAwait(false); var(resultStatusFirst, _) = await VerificarExistenciaEmpresa(empresaViewModel.Cnpj); if (!resultStatusFirst) { var user = new IdentityUser { UserName = Input.Email, Email = Input.Email }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { var usuarioViewModel = await ConvertInputModelToModelUsuario().ConfigureAwait(false); empresaViewModel.UserId = user.Id; usuarioViewModel.UserId = user.Id; try { if (empresaViewModel.Numero == "S/N") { empresaViewModel.Numero = "0"; } await _empresaAppServices.Create(empresaViewModel, usuarioViewModel); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = user.Id, code = code }, protocol: Request.Scheme); var htmlMessage = $"Olá, {Input.NomeCompleto}!<br>" + $"Obrigado por se cadastrar em nosso site. Para confirmar seu e-mail <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clique neste link</a>.<br>" + $"Logo retornaremos o contato informando o status da liberação.<br><br>" + $"Att<br>" + $"Equipe Prestige do Brasil"; await _suporteAppServices.SendAutomaticSuporteEmail(htmlMessage, Input.Email, "Cadastro realizado com sucesso"); return(RedirectToPage("./RegisterConfirmation", new { email = Input.Email })); } catch (Exception ex) { var(resultStatus, resultDados) = await VerificarExistenciaEmpresa(empresaViewModel.Cnpj); if (resultStatus) { await _empresaAppServices.DeleteAsync(resultDados.Id); } await _userManager.DeleteAsync(user); ModelState.AddModelError(string.Empty, "Ocorreu um erro inesperado ao finalizar o seu cadastro, por favor, tente novamente"); return(Page()); } } foreach (var error in result.Errors) { if (error.Code == "DuplicateUserName") { error.Description = $"{Input.Email} já está cadastrado, utilize a opção esqueci minha senha."; } ModelState.AddModelError(string.Empty, error.Description); } } else { ModelState.AddModelError(string.Empty, "Empresa já cadastrada"); return(Page()); } } catch (ModelValidationExceptions e) { ModelState.AddModelError(e.PropertyName, e.Message); } catch (Exception e) { ModelState.AddModelError(string.Empty, e.Message); } return(Page()); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true var mensagem = ""; var identityUser = await _userManager.FindByEmailAsync(Input.Email); if (identityUser != null) { var usuario = await _usuarioAppServices.GetByUserIdAsync(identityUser.Id); var result = SignInResult.Success; if (usuario.BloqueioAutomatico) { if (usuario.Verificado) { result = SignInResult.LockedOut; mensagem = "Usuário bloqueado. Entre em contato com nosso suporte para mais informações"; } else { result = SignInResult.LockedOut; mensagem = "Usuário bloqueado. Seu cadastro está em análise"; } } else if (usuario.BloqueioManual) { result = SignInResult.LockedOut; mensagem = "Usuário bloqueado. Entre em contato com nosso suporte para mais informações"; } if (result.Succeeded) { _logger.LogInformation("User logged in."); result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure : false); if (result.Succeeded) { return(LocalRedirect(returnUrl)); } else if (result.IsNotAllowed) { var code = await _userManager.GenerateEmailConfirmationTokenAsync(identityUser); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = identityUser.Id, code = code }, protocol: Request.Scheme); var htmlMessage = $"Olá, {usuario.NomeCompleto}!<br>" + $"Para finalizar seu cadastro em nosso site, favor confirmar seu e-mail clicando <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>neste link</a>.<br><br><br>" + $"Equipe de suporte ao cliente <br>" + $"Prestige do Brasil"; await _suporteAppServices.SendAutomaticSuporteEmail(htmlMessage, Input.Email, "Confirmação de conta"); ModelState.AddModelError(string.Empty, "Confirme seu e-mail para acessar o sistema. Reenviamos o link de confirmação para o e-mail cadastrado"); } else { ModelState.AddModelError(string.Empty, "Usuário ou senha incorretos"); } } if (result.RequiresTwoFactor) { return(RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe })); } if (result.IsLockedOut) { ModelState.AddModelError(string.Empty, mensagem); return(Page()); } } else { ModelState.AddModelError(string.Empty, "Usuario ou senha incorretos."); return(Page()); } } // If we got this far, something failed, redisplay form return(Page()); }