/// <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))); }
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)); } }