コード例 #1
0
        private Task <ClaimsIdentity> GetClaims(AutenticarUsuarioComando comando)
        {
            var usuario = _repository.OterUsuario(comando.Email);


            if (usuario.ClaimValue == "Cliente")
            {
                ObterIDConsulta IdEmpresa = _clienteRepository.ObterID(usuario.ID);
                if (_repository.Autenticar(comando.Email, comando.Senha))
                {
                    _usuario = usuario;
                }
                _IdEmpresa = IdEmpresa;

                return(Task.FromResult(new ClaimsIdentity(
                                           new GenericIdentity(IdEmpresa.ID.ToString(), "Token"),
                                           new[] {
                    new Claim(usuario.ClaimType, usuario.ClaimValue),
                })));
            }
            if (usuario.ClaimValue == "Funcionario")
            {
                ObterIDConsulta IDFuncionario = _empresaRepository.ObterIdEmpresa(usuario.ID);

                if (_repository.Autenticar(comando.Email, comando.Senha))
                {
                    _usuario = usuario;
                }
                _IdEmpresa = IDFuncionario;

                return(Task.FromResult(new ClaimsIdentity(
                                           new GenericIdentity(IDFuncionario.ID.ToString(), "Token"),
                                           new[] {
                    new Claim(usuario.ClaimType, usuario.ClaimValue),
                })));
            }


            ObterIDConsulta ID = _empresaRepository.ObterIdEmpresa(usuario.ID);

            if (_repository.Autenticar(comando.Email, comando.Senha))
            {
                _usuario = usuario;
            }
            _IdEmpresa = ID;

            return(Task.FromResult(new ClaimsIdentity(
                                       new GenericIdentity(ID.ID.ToString(), "Token"),
                                       new[] {
                new Claim(usuario.ClaimType, usuario.ClaimValue),
            })));
        }
コード例 #2
0
        public ActionResult Login(AutenticarUsuarioComando comando)
        {
            AutenticacaoAplicacaoService autenticacaoAplicacaoService = new AutenticacaoAplicacaoService();

            UsuarioData data = autenticacaoAplicacaoService.autenticar(comando);

            if (data != null)
            {
                Session["login"]  = data.login;
                Session["nome"]   = data.nome;
                Session["email"]  = data.email;
                Session["gestor"] = this.usuarioLogadoGestor();
                Session["papel"]  = this.usuarioPapel();
            }
            else
            {
                TempData["msgAutenticacao"] = "Falha no login";
            }

            return(RedirectToAction("Index", "Home"));
        }
コード例 #3
0
        public async Task <IActionResult> Post([FromBody] AutenticarUsuarioComando comando)
        {
            var identity = await GetClaims(comando);

            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Email, comando.Email),
                new Claim(JwtRegisteredClaimNames.Jti, await _tokenOptions.JtiGenerator()),
                new Claim(JwtRegisteredClaimNames.Iat, ToUnixEpochDate(_tokenOptions.IssuedAt).ToString(), ClaimValueTypes.Integer64),
                identity.FindFirst("PontuaAe")
            };

            var jwt = new JwtSecurityToken(
                issuer: _tokenOptions.Issuer,
                audience: _tokenOptions.Audience,
                claims: claims.AsEnumerable(),
                notBefore: _tokenOptions.NotBefore,
                expires: _tokenOptions.Expiration,
                signingCredentials: _tokenOptions.SigningCredentials);

            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            var response = new
            {
                token   = encodedJwt,
                expires = (int)_tokenOptions.ValidFor.TotalSeconds,
                users   = new
                {
                    id         = _usuario.ID,
                    email      = comando.Email,
                    claimValue = _usuario.ClaimValue,
                }
            };


            var json = JsonConvert.SerializeObject(response, _serializerSettings);

            return(new OkObjectResult(json));
        }
コード例 #4
0
        public async Task <ActionResult <dynamic> > Autenticar(
            [FromBody] AutenticarUsuarioComando comando,
            [FromServices] UsuarioManipulador manipulador)
        {
            var usuarioExistente = await manipulador.Manipular(comando);

            if (!usuarioExistente.Sucesso)
            {
                return(NotFound(new { message = "Usuário ou senha inválidos." }));
            }

            var usuario = usuarioExistente.Dado as Usuario;

            var token = TokenService.GerarToken(usuario);

            usuario?.EsconderSenha();

            return(new
            {
                Usuario = usuario,
                Token = token
            });
        }
コード例 #5
0
        public ActionResult LoginNovaReserva(string login, string senha, string vooId)
        {
            AutenticacaoAplicacaoService autenticacaoAplicacaoService = new AutenticacaoAplicacaoService();
            AutenticarUsuarioComando     comando = new AutenticarUsuarioComando(login, senha);

            UsuarioData data = autenticacaoAplicacaoService.autenticar(comando);

            if (data != null)
            {
                TempData["vooId"] = vooId;

                Session["login"]  = data.login;
                Session["nome"]   = data.nome;
                Session["email"]  = data.email;
                Session["gestor"] = this.usuarioLogadoGestor();
                Session["papel"]  = this.usuarioPapel();
            }
            else
            {
                TempData["msgAutenticacao"] = "Falha no login";
            }

            return(RedirectToAction("NovaReservaPessoal", "Voo"));
        }