public async Task <IActionResult> Registrar(RegistroViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View("Registro", viewModel));
            }
            var res = await _usuarioService.Registro(viewModel);

            if (!res.Succeeded)
            {
                res.Errors.ToList().ForEach(e => ModelState.AddModelError("Identity", e.Description));
                return(View("Registro"));
            }

            if (res != null && res.Succeeded)
            {
                var loginUsuarioViewModel = new LoginUsuarioViewModel();
                loginUsuarioViewModel.Email = viewModel.Email;
                loginUsuarioViewModel.Senha = viewModel.Senha;
                var user = await _usuarioService.Login(loginUsuarioViewModel);

                if (user == true)
                {
                    return(RedirectToAction("IndexUsuario", "Home"));
                }
            }

            return(View("Registro"));
        }
Пример #2
0
        public async Task <ActionResult> Login(LoginUsuarioViewModel loginUser)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            var usuarioIdentity = await _userManager.FindByEmailAsync(loginUser.Email);

            var result = await _signInManager.PasswordSignInAsync(usuarioIdentity.UserName, loginUser.Senha, false, true);

            if (result.Succeeded)
            {
                return(CustomResponse(await GerarJwt(loginUser.Email)));
            }

            if (result.IsLockedOut)
            {
                NotificarErro("Usuário temporariamente bloqueado por tentativas inválidas");
                return(CustomResponse(loginUser));
            }

            NotificarErro("Usuário ou Senha incorretos");
            return(CustomResponse(loginUser));
        }
        public async Task <IActionResult> Login(LoginUsuarioViewModel model)
        {
            if (ModelState.IsValid)
            {
                var result = await _auth.PostLoginAsync(model);

                if (!string.IsNullOrEmpty(result.Data.AccessToken))
                {
                    var claims = new List <Claim>
                    {
                        new Claim(ClaimTypes.Name, model.Email),
                        new Claim("Token", result.Data.AccessToken)
                    }.Concat(result.Data.UserToken.Claims.Select(c => new Claim(c.Type, c.Value)));

                    var claimsIdentity  = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
                    var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);

                    await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal);

                    return(RedirectToAction("Index", "Home"));
                }

                ModelState.AddModelError(string.Empty, "Erro na autenticação");
                return(View(model));
            }

            return(View(model));
        }
Пример #4
0
        public IActionResult POST([FromBody] LoginUsuarioViewModel model, [FromServices] IUsuarioRepository usuarioRepository, [FromServices] ICriptografia criptografia)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var usuario = usuarioRepository.Get(model.Login, criptografia.GETMD5(model.Senha));

                    if (usuario != null)
                    {
                        //TODO
                        return(Ok());
                    }
                    else
                    {
                        return(StatusCode(400, "Acesso negado. O Login ou Senha incorreto"));
                    }
                }
                catch (Exception erro)
                {
                    return(StatusCode(500, erro.Message));
                }
            }
            else
            {
                return(StatusCode(400, ModelStateValidation.GetErrors(ModelState)));
            }
        }
Пример #5
0
        public async Task <IActionResult> LoginUsuario(LoginUsuarioViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var result =
                    await
                    signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe,
                                                      lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    return(RedirectToLocal(returnUrl));
                }
                if (result.RequiresTwoFactor)
                {
                    //
                }
                if (result.IsLockedOut)
                {
                    return(View("Lockout"));
                }

                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return(View(model));
            }
            return(View(model));
        }
Пример #6
0
        public async Task <LoginRespostaViewModel> PostLoginAsync(LoginUsuarioViewModel model)
        {
            var usuario = JsonSerializer.Serialize(model, JsonSerializerOptions);

            var conteudo = new StringContent(usuario, Encoding.UTF8, "application/json");
            var resposta = await _httpClient.PostAsync("login", conteudo);

            var json = await resposta.Content.ReadAsStringAsync();

            return(JsonSerializer.Deserialize <LoginRespostaViewModel>(json, JsonSerializerOptions));
        }
Пример #7
0
        private Usuario autenticarUsuario(LoginUsuarioViewModel login)
        {
            var hashSenha     = new HashSenha(SHA256.Create());
            var senhaHasheada = hashSenha.HasheandoSenha(login.Senha);

            var usuario = context.Usuario
                          .FirstOrDefault(us => (us.LoginUsuario == login.LoginUsuario && us.Senha == senhaHasheada) ||
                                          (us.Email == login.Email && us.Senha == senhaHasheada));

            return(usuario);
        }
        public async Task <IActionResult> Post([FromBody] LoginUsuarioViewModel viewModel)
        {
            var loginResultado = await _usuarioService.Login(viewModel);

            if (!loginResultado)
            {
                AdicionarErroModelState("Email ou senha incorretos");
                return(Resposta());
            }

            var usuario = await _userManager.FindByEmailAsync(viewModel.Email);

            List <Claim> claims = new List <Claim>();

            claims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")));
            claims.Add(new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Id));
            claims.Add(new Claim("UsuarioId", usuario.Id));

            GenericIdentity genericIdentity = new GenericIdentity(usuario.Email, "Login");
            ClaimsIdentity  identity        = new ClaimsIdentity(genericIdentity, claims);

            DateTime dtCreation   = DateTime.Now;
            DateTime dtExpiration = dtCreation.AddSeconds(_tokenConfigurations.Seconds);

            var handler = new JwtSecurityTokenHandler();

            var securityTokenDescriptor = new SecurityTokenDescriptor
            {
                Issuer             = _tokenConfigurations.Issuer,
                Audience           = _tokenConfigurations.Audience,
                SigningCredentials = _signingConfigurations.SigningCredentials,
                Subject            = identity,
                NotBefore          = dtCreation,
                Expires            = dtExpiration
            };

            var securityToken = handler.CreateToken(securityTokenDescriptor);

            var token = handler.WriteToken(securityToken);

            return(Resposta(new
            {
                email = usuario.Email,
                usuarioId = usuario.Id,
                created = dtCreation.ToString("yyyy-MM-dd HH:mm:ss"),
                expiration = dtExpiration.ToString("yyyy- MM-dd HH:mm:ss"),
                accessToken = token,
            }));
        }
Пример #9
0
        public ActionResult Login(LoginUsuarioViewModel model)
        {
            var usuario = _serviceUsuarios.BuscarPorLogin(model.Login);

            if (usuario != null && usuario.Senha.Equals(model.Senha) && usuario.Login.Equals(model.Login))
            {
                AplicacaoWeb.LogarUsuario(usuario);
                return(RedirectToAction("Index"));
            }
            else
            {
                ViewBag.Erros = "Usuario ou senha Inválido!";
                return(View("~/Views/Shared/_Login.cshtml"));
            }
        }
Пример #10
0
        public IActionResult Login(LoginUsuarioViewModel login)
        {
            IActionResult response = Unauthorized();

            var usuario = autenticarUsuario(login);

            if (usuario != null)
            {
                if (usuario.StatusAprovacao == "Aprovado")
                {
                    var tokenString = gerarJsonWebToken(usuario);
                    response = Ok(new { token = tokenString });
                }
            }
            return(response);
        }
Пример #11
0
        public async Task <IActionResult> Entrar([FromBody] LoginUsuarioViewModel user)
        {
            if (ModelState.IsValid)
            {
                var result = await usuarioService.LoginUsuarioAsync(user);

                if (result.Success)
                {
                    return(Ok(result));
                }

                return(BadRequest(result));
            }

            return(BadRequest());
        }
Пример #12
0
        public IActionResult Login(LoginUsuarioViewModel usuario)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values.SelectMany(a => a.Errors).Select(a => a.ErrorMessage)));
            }

            var user = _context.Users.FirstOrDefault(a => a.Email.Contains(usuario.Email) && a.Senha == usuario.Senha);

            if (user != null)
            {
                return(Ok(GerarJwt(user.Email)));
            }

            return(BadRequest(new[] { "Usuário ou senha inválido" }));
        }
Пример #13
0
        public async void Usuario_RealizarLogin_DeveExecutarComSucesso()
        {
            // Arrange
            var obj = new LoginUsuarioViewModel
            {
                //Email = _testsFixture.UsuarioEmail,
                //Senha = _testsFixture.UsuarioSenha
                Email = "*****@*****.**",
                Senha = "Teste@123",
            };

            string strData     = JsonConvert.SerializeObject(obj);
            var    contentData = new StringContent(strData, Encoding.UTF8, "application/json");

            // Act
            var postResponse = await _testsFixture.Client.PostAsync("/api/identidade/autenticar", contentData);

            // Assert
            Assert.Equal(HttpStatusCode.OK, postResponse.StatusCode);
        }
Пример #14
0
        public async Task <ActionResult> Login(LoginUsuarioViewModel loginUsuario)
        {
            if (!ModelState.IsValid)
            {
                return(Retorno(ModelState));
            }

            var result = await _signInManager.PasswordSignInAsync(loginUsuario.Email, loginUsuario.Password, false, true);

            if (result.Succeeded)
            {
                return(Retorno(await GerarToken(loginUsuario.Email)));
            }
            if (result.IsLockedOut)
            {
                NotificarErro("Usuário bloqueado por execeder número máximo de tentativas de login");
                return(Retorno(loginUsuario));
            }

            NotificarErro("Usuário ou senha incorretos.");
            return(Retorno(loginUsuario));
        }
        public async Task <IActionResult> EnviarLogin(LoginUsuarioViewModel viewModel, string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                return(View("Login", viewModel));
            }
            var res = await _usuarioService.Login(viewModel);

            if (res == true)
            {
                if (returnUrl != null)
                {
                    return(Redirect(returnUrl));
                }

                return(RedirectToAction("IndexUsuario", "Home"));
            }
            else
            {
                ModelState.AddModelError("Login", "Email ou Senha incorretos");
                return(View("Login"));
            }
        }
        public async Task <ActionResult> Login(LoginUsuarioViewModel login)
        {
            if (!ModelState.IsValid)
            {
                return(Result(ModelState));
            }

            var result = await _signInManager.PasswordSignInAsync(login.Login, login.Senha, false, true);

            if (result.Succeeded)
            {
                return(Result(GerarJwtToken()));
            }

            if (result.IsLockedOut)
            {
                NotificarErro("Usuario temporariamente bloqueado por tentativas invalidas!");
                return(Result(login));
            }

            NotificarErro("Usuario e senha invalidos!");
            return(Result(login));
        }
Пример #17
0
        public ActionResult Index(LoginUsuarioViewModel usuarioViewModel)
        {
            if (ModelState.IsValid)
            {
                var usuario = _usuarioRepository
                              .Autenticar(usuarioViewModel.Email, usuarioViewModel.Senha);

                if (usuario != null)
                {
                    usuarioViewModel   = Mapper.Map <Usuario, LoginUsuarioViewModel>(usuario);
                    Session["usuario"] = usuarioViewModel;
                    return(RedirectToAction("Index", "Home", new { area = "administracao" }));
                }
                else
                {
                    TempData["MsgFalhaLogin"] = @"Dados incorretos.
                        Por favor, verifique seus 
                        dados e tente novamente.";
                }
            }

            return(View(usuarioViewModel));
        }
Пример #18
0
        public async Task <IActionResult> LogIn([FromBody] LoginUsuarioViewModel logInViewModel)
        {
            // Valida los datos de acceso.

            if (string.IsNullOrEmpty(logInViewModel.Usuario) || string.IsNullOrEmpty(logInViewModel.Password))
            {
                return(this.BadResponse("Es necesario llenar todos los campos"));
            }

            var user = await _usrMngr.FindByNameAsync(logInViewModel.Usuario);

            if (user == null)
            {
                return(this.BadResponse("No se encontro al usuario"));
            }
            var passwordCheck = await _usrMngr.CheckPasswordAsync(user, logInViewModel.Password);

            if (!passwordCheck)
            {
                return(this.BadResponse("La contraseña no coincide."));
            }

            var identity = await GetClaimsIdentity(logInViewModel.Usuario, logInViewModel.Password);


            var jwt = await Tokens.GenerateJwt(identity, _jwtFactory, logInViewModel.Usuario, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented });

            return(this.OkResponse(new SessionModel
            {
                UserId = user.Id.ToString(),
                Email = user.Email,
                ExpiresIn = jwt.ExpiresIn,
                JwtToken = jwt.Auth_Token,
                Role = user.Role
            }));
        }
Пример #19
0
        public async Task <ActionResult> Login(LoginUsuarioViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await _signInService.PasswordSignInAsync(model.Usuario, model.Password, false, false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToAction("Index", "Home", new { Area = "" }));

            case SignInStatus.LockedOut:
            case SignInStatus.RequiresVerification:
            case SignInStatus.Failure:
            default:
                AddMessage("Error de login, vuelva a comprobar sus datos", Infraestructura.Managers.Imp.MessageType.Error);
                return(View(model));
            }
        }
Пример #20
0
        public async Task <RespostaViewModel> LoginUsuarioAsync(LoginUsuarioViewModel user)
        {
            var usuarioEncotrado = await userManager.FindByEmailAsync(user.Email);

            if (usuarioEncotrado == null)
            {
                return(new RespostaViewModel
                {
                    Mensagem = "Não foi possível logar, verifique seu email e senha.",
                    Objeto = null,
                    Success = false
                });
            }

            var result = await userManager.CheckPasswordAsync(usuarioEncotrado, user.Password);

            if (!result)
            {
                return(new RespostaViewModel
                {
                    Mensagem = "Verifique os dados informados. Senha ou email estão incorretos.",
                    Objeto = null,
                    Success = false
                });
            }

            // Gerar os tokens, com os direitos que o usuário tem

            var claims = new[]
            {
                new Claim("Email", user.Email),
                new Claim(ClaimTypes.NameIdentifier, usuarioEncotrado.Id)
            };

            // Configuração do token

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["AuthSettings:Key"]));

            var token = new JwtSecurityToken(
                issuer: configuration["AuthSettings:Issuer"],
                audience: configuration["AuthSettings:audience"],
                claims: claims,
                expires: DateTime.Now.AddMinutes(30),
                signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
                );

            string tokenAsString = new JwtSecurityTokenHandler()
                                   .WriteToken(token);

            var client = new HttpClient();

            client.DefaultRequestHeaders.Authorization =
                new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", tokenAsString);

            return(new RespostaViewModel
            {
                Mensagem = tokenAsString,
                Success = true,
                Objeto = token.ValidTo
            });
        }
Пример #21
0
        public async Task <ActionResult> Login(LoginUsuarioViewModel loginUsuarioVM)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var result = await _signInManager.PasswordSignInAsync(loginUsuarioVM.Email, loginUsuarioVM.Senha,
                                                                  false, true);

            if (result.Succeeded)
            {
                //return Ok(loginUsuarioVM);
                var now = DateTime.UtcNow;

                var claims = new Claim[]
                {
                    new Claim(JwtRegisteredClaimNames.Sub, loginUsuarioVM.Email),
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                    new Claim(JwtRegisteredClaimNames.Iat, now.ToUniversalTime().ToString(), ClaimValueTypes.Integer64)
                };

                var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_settings.Value.Secret));
                var tokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = signingKey,
                    ValidateIssuer           = true,
                    ValidIssuer           = _settings.Value.Iss,
                    ValidateAudience      = true,
                    ValidAudience         = _settings.Value.Aud,
                    ValidateLifetime      = true,
                    ClockSkew             = TimeSpan.Zero,
                    RequireExpirationTime = true,
                };

                var jwt = new JwtSecurityToken(
                    issuer: _settings.Value.Iss,
                    audience: _settings.Value.Aud,
                    claims: claims,
                    notBefore: now,
                    expires: now.Add(TimeSpan.FromMinutes(2)),
                    signingCredentials: new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256)
                    );
                var encodedJwt   = new JwtSecurityTokenHandler().WriteToken(jwt);
                var responseJson = new
                {
                    access_token = encodedJwt,
                    expires_in   = (int)TimeSpan.FromMinutes(2).TotalSeconds
                };

                return(Json(responseJson));
            }

            if (result.IsLockedOut)
            {
                return(BadRequest("Usuário temporariamente bloqueado por tentativas inválidas"));
            }

            return(BadRequest("Usuário ou Senha incorretos"));
        }
Пример #22
0
        public async Task <bool> Login(LoginUsuarioViewModel viewModel)
        {
            var resultadoLogin = await _signInManager.PasswordSignInAsync(viewModel.Email, viewModel.Senha, false, false);

            return(resultadoLogin.Succeeded);
        }