Пример #1
0
        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);
        }
Пример #2
0
        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));
        }