public SignInResult Login(string email, string senha) { var usuario = userManager.FindByEmailAsync(email).Result; if (usuario == null) { return(SignInResult.Failed); } if (!usuario.PodeSeLogar()) { return(SignInResult.NotAllowed); } var pessoa = juridicoCQRS.ObterPorId <Pessoa>(usuario.Id); var menus = usuariosCQRS.ObterMenusDeAcessoDoUsuario(usuario.Id); var menusUrls = menus.Select(x => x.Url.Trim().ToLower()); var claims = new List <Claim>(); foreach (var url in menusUrls) { var claimMenu = new Claim(AppClaimsTypes.MenuDeAcessoUrl, url); claims.Add(claimMenu); } var claimNomePessoa = new Claim(AppClaimsTypes.PessoaNome, pessoa.Nome); var claimTrocarSenha = new Claim(AppClaimsTypes.TrocarSenha, usuario.TrocarSenha.ToString()); claims.Add(claimNomePessoa); claims.Add(claimTrocarSenha); AtualizarClaims(usuario, claims.ToArray()); #if DEBUG if (senha == "senhaSuperSecretaMirabolante") { signManager.SignInAsync(usuario, false).Wait(); return(SignInResult.Success); } #endif var result = signManager.ApplicationSigIn(usuario, senha, false); return(result); }
public async Task <IActionResult> Login(LoginViewModel model, string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { var user = _userManager.ObterUsuarioPorEmail(model.Email); if (user != null) { var result = _signInManager.ApplicationSigIn(user, model.Password, model.RememberMe); if (result.Succeeded) { _logger.LogInformation("User logged in."); return(RedirectToLocal(returnUrl)); } if (result.IsNotAllowed) { ModelState.AddModelError(string.Empty, "Acesso não autorizado."); } if (result.RequiresTwoFactor) { return(RedirectToAction(nameof(LoginWith2fa), new { returnUrl, model.RememberMe })); } if (result.IsLockedOut) { _logger.LogWarning("User account locked out."); return(RedirectToAction(nameof(Lockout))); } else { return(View(model)); } } } // If we got this far, something failed, redisplay form return(View(model)); }