private async void Autorizar(Usuario usuario) { var claims = new List <Claim>() { new Claim(ClaimTypes.Email, usuario.Email), new Claim(ClaimTypes.Name, usuario.Nome), new Claim(ClaimTypes.Role, usuario.Perfil), new Claim(ClaimTypes.GroupSid, usuario.EmpresaID.ToString()), new Claim(ClaimTypes.NameIdentifier, usuario.UsuarioID.ToString()) }; var usuarioIdentidade = new ClaimsIdentity(claims, "login"); ClaimsPrincipal principal = new ClaimsPrincipal(usuarioIdentidade); var propriedadesDeAutenticacao = new AuthenticationProperties { AllowRefresh = true, ExpiresUtc = DateTime.Now.ToLocalTime().AddMinutes(15), IsPersistent = false }; LogUsuarioLogon logs = new LogUsuarioLogon(); logs.DataCadastro = DateTime.Now; logs.EmpresaID = usuario.EmpresaID; logs.IP = HttpContext.Connection.RemoteIpAddress.ToString(); logs.UsuarioID = usuario.UsuarioID; logs.Sucesso = true; logs.Mensagem = "Efetuado login do usuário " + usuario.Nome; logs.StackTrace = null; _log.Inserir(logs); await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, propriedadesDeAutenticacao); }
public ActionResult Login(Usuario usuario) { try { if (ModelState.IsValid) { IEnumerable <Usuario> user = _usuario.ObterUsuario(usuario); if (user.Count() == 1) { usuario.UsuarioID = user.ElementAt(0).UsuarioID; usuario.DataCadastro = user.ElementAt(0).DataCadastro; usuario.Nome = user.ElementAt(0).Nome; usuario.Email = user.ElementAt(0).Email; usuario.Senha = user.ElementAt(0).Senha; usuario.Perfil = user.ElementAt(0).Perfil; usuario.EmpresaID = user.ElementAt(0).EmpresaID; usuario.FlagAtivo = user.ElementAt(0).FlagAtivo; usuario.DataExclusao = user.ElementAt(0).DataExclusao; usuario.DataLimiteTeste = user.ElementAt(0).DataLimiteTeste; if (usuario.DataLimiteTeste != null && DateTime.Now.Date > usuario.DataLimiteTeste) { throw new ArgumentException("Seu período de teste expirou"); } else { Autorizar(usuario); return(Redirect("/Home/Index")); } } else { throw new ArgumentException("E-mail ou senha inválidos"); } } return(View(usuario)); } catch (Exception ex) { MensagemLogin = ex.Message.ToString(); ModelState.AddModelError(String.Empty, MensagemLogin); LogUsuarioLogon logs = new LogUsuarioLogon(); logs.DataCadastro = DateTime.Now; logs.EmpresaID = usuario.EmpresaID; logs.IP = HttpContext.Connection.RemoteIpAddress.ToString(); logs.UsuarioID = usuario.UsuarioID; logs.Sucesso = false; logs.Mensagem = "Erro ao efetuar login do usuário " + usuario.Nome + " - " + ex.Message.ToString(); logs.StackTrace = ex.StackTrace.ToString(); _log.Inserir(logs); return(View(usuario)); } }
public async Task <IActionResult> Logout() { var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); var usuario = _usuario.ObterPorId(Convert.ToInt32(userId)); LogUsuarioLogon logs = new LogUsuarioLogon(); logs.DataCadastro = DateTime.Now; logs.EmpresaID = usuario.EmpresaID; logs.IP = HttpContext.Connection.RemoteIpAddress.ToString(); logs.UsuarioID = usuario.UsuarioID; logs.Sucesso = true; logs.Mensagem = "Efetuado Logoff do usuário " + usuario.Nome; logs.StackTrace = null; _log.Inserir(logs); await HttpContext.SignOutAsync(); return(RedirectToAction("Login")); }
public void Inserir(LogUsuarioLogon log) { _contexto.LogUsuarios.Add(log); Salvar(); }