/// <summary>
        /// Cria uma credencial para o usuário..
        /// </summary>
        /// <param name="novoUsuario">o usuario a ser cadastrado.</param>
        /// <returns>Credencial pronta para uso.</returns>
        private CredencialAcesso CredencialDoNovoUsuario(UsuarioSistema novoUsuario)
        {
            CredencialAcesso credencial = new CredencialAcesso();

            credencial.UsuarioSistema     = novoUsuario;
            credencial.DtStatusCredencial = DateTime.Now;

            return(credencial);
        }
예제 #2
0
        /// <summary>
        /// Salvars the informacoes pessoais usuario.
        /// </summary>
        /// <param name="usuario">The usuario.</param>
        public void SalvarInformacoesPessoaisUsuario(UsuarioSistema usuario)
        {
            var repositorioUsuarioSistema     = this.Repositorio as IRepositorioUsuarioSistema;
            ValidacaoUsuarioSistema validador = new ValidacaoUsuarioSistema(repositorioUsuarioSistema);
            var resultadoValidacao            = validador.ValidadorAlteracaoDadosPessoaisUsuario().Validar(usuario);

            this.GarantirValidacao(resultadoValidacao);

            CredencialAcesso credAnteriorBD = this.repositorioCredencialAcesso.Consultar(usuario.Credenciais.Where(x => x.StatusCredencial == EnumSituacao.ATIVO).FirstOrDefault().Id);
            CredencialAcesso novaCredencial = new CredencialAcesso {
                DtStatusCredencial = DateTime.Now, LembreteSenha = "Nenhum", Senha = usuario.NovaSenha, StatusCredencial = EnumSituacao.ATIVO, UsuarioSistema = usuario
            };

            credAnteriorBD.StatusCredencial = EnumSituacao.INATIVO;
            this.repositorioCredencialAcesso.Atualizar(credAnteriorBD);
            this.repositorioCredencialAcesso.Adicionar(novaCredencial);
        }
예제 #3
0
        public object Login([FromBody] CredencialAcesso credencial)
        {
            try
            {
                if (credencial == null)
                {
                    return(BadRequest("Credenciais não fornecidas."));
                }

                var login = _loginService.GetByLogin(credencial);

                if (login == null)
                {
                    return(NoContent());
                }

                return(Ok(login));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
        public object GetByLogin(CredencialAcesso credenciais)
        {
            try
            {
                bool validadeCredencial = false;

                if (credenciais != null && !string.IsNullOrWhiteSpace(credenciais.Usuario))
                {
                    usuario = _pessoaRepository.GetbyLogin(credenciais.Usuario);

                    if (credenciais.TipoConcessao.Equals("password"))
                    {
                        //convertendo a senha do usuário em base 64
                        var    textBytes  = Encoding.UTF8.GetBytes(credenciais.Senha);
                        string encodeText = Convert.ToBase64String(textBytes);
                        credenciais.Senha = encodeText;

                        //verificando se as credenciais do usuário são validas
                        validadeCredencial = (usuario != null && credenciais.Usuario == usuario.Slogin && credenciais.Senha == usuario.Ssenha);
                    }
                    else if (credenciais.TipoConcessao.Equals("refresh_token"))
                    {
                        if (!string.IsNullOrWhiteSpace(credenciais.RefreshToken))
                        {
                            //buscando no banco o refresh token do usuário
                            RefreshToken refreshTokenBase = _refreshTokenRepository.GetRefreshToken(usuario.NidPessoa);

                            //calculando nova data de expiração do token
                            DateTime dataExpiracao = DateTime.Parse(credenciais.Expiration);
                            dataExpiracao = dataExpiracao + TimeSpan.FromSeconds(_tokenConfiguration.FinalExpiration);

                            DateTime dtaAtual = DateTime.Now;

                            //verificando se o refresh token é valido
                            validadeCredencial = (refreshTokenBase != null &&
                                                  usuario.NidPessoa == refreshTokenBase.NidPessoa &&
                                                  refreshTokenBase.SrefreshToken == credenciais.RefreshToken &&
                                                  dataExpiracao >= dtaAtual);
                        }
                    }
                }

                if (validadeCredencial)
                {
                    ClaimsIdentity identity = new ClaimsIdentity(
                        new GenericIdentity(credenciais.Usuario, "Login"),
                        new[]
                    {
                        new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")),
                        new Claim(JwtRegisteredClaimNames.UniqueName, usuario.NidPessoa.ToString()),
                        new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Snome),
                        new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Slogin),
                        new Claim(JwtRegisteredClaimNames.UniqueName, usuario.NidTipoPessoa.ToString()),
                        new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Sapelido)
                    }
                        );

                    //cria a data de criação e expriração do token
                    DateTime dataCriacao   = DateTime.Now;
                    DateTime dataExpiracao = dataCriacao + TimeSpan.FromSeconds(_tokenConfiguration.Seconds);

                    //calcula um tempo de sobre para a expricação do token
                    TimeSpan finalExpriracao = TimeSpan.FromSeconds(_tokenConfiguration.FinalExpiration);

                    JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
                    string token = CreateToken(identity, dataCriacao, dataExpiracao, handler);

                    return(SuccessObject(dataCriacao, dataExpiracao, token, finalExpriracao, usuario.NidPessoa));
                }
                else
                {
                    return(ExceptionObject());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }