Skip to content

Commit

Permalink
prevent credentials from appearing in code snippets
Browse files Browse the repository at this point in the history
  • Loading branch information
sserrata committed Dec 16, 2024
1 parent 61e4de7 commit 494356e
Showing 1 changed file with 38 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,6 @@
* LICENSE file in the root directory of this source tree.
* ========================================================================== */

/* ============================================================================
* Copyright (c) Palo Alto Networks
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
* ========================================================================== */

import React, { useState, useEffect } from "react";

import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
Expand Down Expand Up @@ -59,6 +52,38 @@ function CodeSnippets({ postman, codeSamples }: Props) {
const headerParams = useTypedSelector((state: any) => state.params.header);

const auth = useTypedSelector((state: any) => state.auth);
const clonedAuth = JSON.parse(JSON.stringify(auth));

function scrubCredentials(obj: any) {
for (const key in obj) {
if (typeof obj[key] === "object" && obj[key] !== null) {
obj[key] = scrubCredentials(obj[key]);
} else {
obj[key] = `<${key}>`;
}
}

return obj;
}

// scrub credentials from code snippets
const cleanedAuth = {
...clonedAuth,
data: scrubCredentials(clonedAuth.data),
};

// Create a Postman request object using cleanedAuth
const cleanedPostmanRequest = buildPostmanRequest(postman, {
queryParams,
pathParams,
cookieParams,
contentType,
accept,
headerParams,
body,
server,
auth: cleanedAuth,
});

// User-defined languages array
// Can override languageSet, change order of langs, override options and variants
Expand Down Expand Up @@ -105,21 +130,10 @@ function CodeSnippets({ postman, codeSamples }: Props) {
}

if (language && !!language.options) {
const postmanRequest = buildPostmanRequest(postman, {
queryParams,
pathParams,
cookieParams,
contentType,
accept,
headerParams,
body,
server,
auth,
});
codegen.convert(
language.language,
language.variant,
postmanRequest,
cleanedPostmanRequest,
language.options,
(error: any, snippet: string) => {
if (error) {
Expand All @@ -137,22 +151,10 @@ function CodeSnippets({ postman, codeSamples }: Props) {
// This allows users to define only the minimal properties necessary in languageTabs
// User-defined properties should override languageSet properties
const mergedLanguage = { ...langSource[0], ...language };
const postmanRequest = buildPostmanRequest(postman, {
queryParams,
pathParams,
cookieParams,
contentType,
accept,
headerParams,
body,
server,
auth,
});

codegen.convert(
mergedLanguage.language,
mergedLanguage.variant,
postmanRequest,
cleanedPostmanRequest,
mergedLanguage.options,
(error: any, snippet: string) => {
if (error) {
Expand All @@ -175,27 +177,16 @@ function CodeSnippets({ postman, codeSamples }: Props) {
postman,
queryParams,
server,
auth,
cleanedPostmanRequest,
mergedLangs,
]);
// no dependencies was intentionlly set for this particular hook. it's safe as long as if conditions are set
// no dependencies was intentionally set for this particular hook. it's safe as long as if conditions are set
useEffect(function onSelectedVariantUpdate() {
if (selectedVariant && selectedVariant !== language?.variant) {
const postmanRequest = buildPostmanRequest(postman, {
queryParams,
pathParams,
cookieParams,
contentType,
accept,
headerParams,
body,
server,
auth,
});
codegen.convert(
language.language,
selectedVariant,
postmanRequest,
cleanedPostmanRequest,
language.options,
(error: any, snippet: string) => {
if (error) {
Expand All @@ -207,7 +198,7 @@ function CodeSnippets({ postman, codeSamples }: Props) {
}
});

// no dependencies was intentionlly set for this particular hook. it's safe as long as if conditions are set
// no dependencies was intentionally set for this particular hook. it's safe as long as if conditions are set
// eslint-disable-next-line react-hooks/exhaustive-deps
useEffect(function onSelectedSampleUpdate() {
if (
Expand Down

0 comments on commit 494356e

Please sign in to comment.