示例#1
0
        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);
        }
示例#2
0
        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));
            }
        }
示例#3
0
        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();
 }