コード例 #1
0
        /// <summary>
        /// O método redefine a senha de um usuário pela entidade e login. Todos os dados de senha devem ser passados com valores já criptografados.
        /// </summary>
        /// <param name="ent_id">ID da entidade do usuário.</param>
        /// <param name="usu_login">Login do usuário.</param>
        /// <param name="senhaAtual">Senha atual criptografada do usuário.</param>
        /// <param name="senhaNova">Nova senha criptografada do usuário.</param>
        /// <param name="uap_username">Nome do usuário da API configurado no CoreSSO.</param>
        /// <param name="uap_password">Senha criptogradada do usuário da API configurado no CoreSSO.</param>
        /// <returns></returns>
        public static RedefinirSenhaSaidaDTO RedefinirSenha(Guid ent_id, string usu_login, string senhaAtual, string senhaNova, string uap_username, string uap_password)
        {
            string urlApiCore = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.URL_WEBAPI_CORESSO);

            RestClient client = new RestClient(urlApiCore);

            client.Authenticator = new HttpBasicAuthenticator(uap_username, uap_password);
            RestRequest request = new RestRequest("api/v1/users/password", Method.PUT);

            RedefinirSenhaEntradaDTO data = new RedefinirSenhaEntradaDTO
            {
                ent_id = ent_id
                ,
                usu_login = usu_login
                ,
                senhaAtual = senhaAtual
                ,
                senhaNova = senhaNova
                ,
                uap_username = uap_username
            };

            var json = SimpleJson.SerializeObject(data);

            request.AddParameter("text/json", json, ParameterType.RequestBody);

            var response = client.Execute(request);

            return((RedefinirSenhaSaidaDTO)SimpleJson.DeserializeObject(response.Content, typeof(RedefinirSenhaSaidaDTO)));
        }
コード例 #2
0
        public HttpResponseMessage UpdatePassword([FromBody] RedefinirSenhaEntradaDTO data)
        {
            RedefinirSenhaSaidaDTO retorno = new RedefinirSenhaSaidaDTO();

            try
            {
                SYS_Usuario entity = new SYS_Usuario
                {
                    ent_id = data.ent_id
                    ,
                    usu_login = data.usu_login
                };
                SYS_UsuarioBO.GetSelectBy_ent_id_usu_login(entity);

                // Verifica se o id do usuário enviado existe na base de dados.
                if (entity.IsNew)
                {
                    retorno.Message    = "Usuário não encontrado.";
                    retorno.statusCode = (int)HttpStatusCode.NotFound;
                    return(Request.CreateResponse <RedefinirSenhaSaidaDTO>(HttpStatusCode.NotFound, retorno));
                }

                // Configura criptografia da senha
                eCriptografa criptografia = (eCriptografa)Enum.Parse(typeof(eCriptografa), Convert.ToString(entity.usu_criptografia), true);
                if (!Enum.IsDefined(typeof(eCriptografa), criptografia))
                {
                    criptografia = eCriptografa.TripleDES;
                }

                if (!UtilBO.EqualsSenha(entity.usu_senha, data.senhaAtual, criptografia))
                {
                    retorno.Message    = "Senha atual inválida.";
                    retorno.statusCode = (int)HttpStatusCode.Unauthorized;
                    return(Request.CreateResponse <RedefinirSenhaSaidaDTO>(HttpStatusCode.Unauthorized, retorno));
                }

                if (data.senhaAtual.Equals(data.senhaNova))
                {
                    retorno.Message    = "Senha nova deve ser diferente da atual.";
                    retorno.statusCode = (int)HttpStatusCode.BadRequest;
                    return(Request.CreateResponse <RedefinirSenhaSaidaDTO>(HttpStatusCode.BadRequest, retorno));
                }

                entity.usu_senha = data.senhaNova;

                SYS_UsuarioBO.AlterarSenhaUsuario(entity, false);

                retorno.Message    = "Senha alterada com sucesso.";
                retorno.statusCode = (int)HttpStatusCode.OK;

                CFG_UsuarioAPI entityUsuarioAPI = CFG_UsuarioAPIBO.SelecionaPorUsername(data.uap_username);

                LOG_UsuarioAPIBO.Save
                (
                    new LOG_UsuarioAPI
                {
                    usu_id = entity.usu_id
                    ,
                    uap_id = entityUsuarioAPI.uap_id
                    ,
                    lua_dataHora = DateTime.Now
                    ,
                    lua_acao = (byte)LOG_UsuarioAPIBO.eAcao.AlteracaoSenha
                }
                );

                return(Request.CreateResponse <RedefinirSenhaSaidaDTO>(HttpStatusCode.OK, retorno));
            }
            catch (Exception ex)
            {
                retorno.Message    = ex.Message;
                retorno.statusCode = (int)HttpStatusCode.InternalServerError;
                Util.GravarErro(ex);
                return(Request.CreateResponse <RedefinirSenhaSaidaDTO>(HttpStatusCode.InternalServerError, retorno));
            }
        }