Skip to content

Commit d1cf302

Browse files
committed
docs: Make masking more granular
* Mask sensitive user input using components and magic comments * Remove blocking entire compose block
1 parent b73b6f0 commit d1cf302

File tree

5 files changed

+27
-14
lines changed

5 files changed

+27
-14
lines changed

docsite/docusaurus.config.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,14 @@ const config: Config = {
181181
prism: {
182182
theme: themes.themes.github,
183183
darkTheme: themes.themes.dracula,
184-
additionalLanguages: ['json','json5','typescript', 'docker', 'bash', 'ini','yaml']
184+
additionalLanguages: ['json','json5','typescript', 'docker', 'bash', 'ini','yaml'],
185+
magicComments: [
186+
{
187+
line: 'mask',
188+
className: 'rr-mask',
189+
block: {start: 'mask-start', end: 'mask-end'}
190+
}
191+
]
185192
},
186193
colorMode: {
187194
defaultMode: 'dark',

docsite/src/components/LocalStorage/Text.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface LocalStorateTextProps {
1010
initialValue?: string
1111
placeholder?: string
1212
stylePreset?: 'inline' | 'bold'
13+
sensitive?: boolean
1314
}
1415

1516
export type FixedStorageProps = Omit<LocalStorateTextProps, 'storageKey'>;
@@ -21,7 +22,8 @@ const InternalLocalStorageText: FC<LocalStorateTextProps> = (props) => {
2122
stylePreset,
2223
placeholder,
2324
storageKey,
24-
initialValue = ""
25+
initialValue = "",
26+
sensitive = false
2527
} = props
2628

2729
const [storageVal, setStorageVal] = useTypedLocalStorage(storageKey, initialValue);
@@ -40,6 +42,8 @@ const InternalLocalStorageText: FC<LocalStorateTextProps> = (props) => {
4042
setInputValue(storageVal);
4143
}, [storageVal, setValue, setInputValue])
4244

45+
const sensitiveClass = sensitive ? 'rr-mask' : '';
46+
4347
if(readOnly) {
4448
let roVal: string;
4549
if(storageVal !== undefined && storageVal !== null && storageVal.trim() !== '') {
@@ -49,17 +53,18 @@ const InternalLocalStorageText: FC<LocalStorateTextProps> = (props) => {
4953
} else if(placeholder !== undefined) {
5054
roVal = placeholder;
5155
}
56+
5257
switch(stylePreset) {
5358
case 'inline':
54-
return <CodeInline>{roVal}</CodeInline>;
59+
return <CodeInline className={sensitiveClass}>{roVal}</CodeInline>;
5560
case 'bold':
56-
return <strong>{roVal}</strong>;
61+
return <strong className={sensitiveClass}>{roVal}</strong>;
5762
default:
58-
return <Fragment>{roVal}</Fragment>;
63+
return <span className={sensitiveClass}>{roVal}</span>;
5964
}
6065
}
6166

62-
return <input type="text" placeholder={placeholder} onChange={handleInputChange} value={inputValue}/>
67+
return <input type="text" className={sensitiveClass} placeholder={placeholder} onChange={handleInputChange} value={inputValue}/>
6368
}
6469

6570
export const LocalStorageText: FC<LocalStorateTextProps> = (props) => {

docsite/src/components/LocalStorageComponents.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const ServerName: FC<FixedStorageProps> = (props) => {
88
...rest
99
} = props
1010

11-
return <LocalStorageText storageKey="serverName" placeholder={placeholder} {...rest}/>;
11+
return <LocalStorageText storageKey="serverName" placeholder={placeholder} sensitive {...rest}/>;
1212
}
1313

1414
export const HostDirectory: FC<FixedStorageProps> = (props) => {
@@ -28,7 +28,7 @@ export const KomodoUrl: FC<FixedStorageProps> = (props) => {
2828
...rest
2929
} = props
3030

31-
return <LocalStorageText storageKey="komodoUrl" placeholder={placeholder} {...rest}/>;
31+
return <LocalStorageText storageKey="komodoUrl" sensitive placeholder={placeholder} {...rest}/>;
3232
}
3333

3434
export const KomodoApiKey: FC<FixedStorageProps> = (props) => {
@@ -38,7 +38,7 @@ export const KomodoApiKey: FC<FixedStorageProps> = (props) => {
3838
...rest
3939
} = props
4040

41-
return <LocalStorageText storageKey="komodoApiKey" placeholder={placeholder} {...rest}/>;
41+
return <LocalStorageText storageKey="komodoApiKey" sensitive placeholder={placeholder} {...rest}/>;
4242
}
4343

4444
export const KomodoApiSecret: FC<FixedStorageProps> = (props) => {
@@ -48,5 +48,5 @@ export const KomodoApiSecret: FC<FixedStorageProps> = (props) => {
4848
...rest
4949
} = props
5050

51-
return <LocalStorageText storageKey="komodoApiSecret" placeholder={placeholder} {...rest}/>;
51+
return <LocalStorageText storageKey="komodoApiSecret" sensitive placeholder={placeholder} {...rest}/>;
5252
}

docsite/src/components/QuickStart/QSCompose.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,18 @@ const QSCompose = (props) => {
7676
seq.add(stacksFromS);
7777

7878
const serverS = new Scalar(`SERVER_NAME=${serverValue !== undefined && serverValue.trim() !== '' ? serverValue : 'my-cool-server'}`);
79-
serverS.commentBefore = '# Name of Server for this machine, in Komodo'
79+
serverS.commentBefore = '# Name of Server for this machine, in Komodo\nmask'
8080
seq.add(serverS);
8181

8282
if(storageSyncApiVal) {
8383
const urlS = new Scalar(`KOMODO_URL=${komodoUrlValue === '' ? 'http://192.168.KOMOMDO.IP:8120' : komodoUrlValue}`);
8484
urlS.spaceBefore = true;
85-
urlS.commentBefore = '# Configuration for interacting with Komodo API';
85+
urlS.commentBefore = '# Configuration for interacting with Komodo API\nmask-start';
8686
seq.add(urlS);
8787
seq.add(`API_KEY=${apiKeyValue === '' ? 'K-3A6btIPZYeBu_EXAMPLE_KEY' : apiKeyValue}`);
8888
seq.add(`API_SECRET=${komodoSec === '' ? 'S-qnaXD1frutYlfC2ZYl_EXAMPLE_SECRET' : komodoSec}`);
8989
const syncS = new Scalar('OUTPUT_API_SYNC=true');
90+
syncS.commentBefore = 'mask-end';
9091
syncS.comment = 'Create Sync Resource in Komodo'
9192
seq.add(syncS);
9293
}
@@ -119,7 +120,7 @@ const QSCompose = (props) => {
119120

120121
}, [storageSyncApiVal, storageStacksFromVal, storageHostVal, serverValue, apiKeyValue, komodoSec, komodoUrlValue, setUserDoc]);
121122

122-
return <CodeBlock className="rr-block .rr-block" title="compose.yaml" language="yaml">{userDoc.toString()}</CodeBlock>;
123+
return <CodeBlock title="compose.yaml" language="yaml">{userDoc.toString()}</CodeBlock>;
123124

124125
}
125126

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"build:parallel": "concurrently --kill-others-on-fail --names backend,frontend,docs \"npm run -s build:backend\" \"npm run -s build:frontend\" \"npm run docs:build\"",
1414
"docs:install": "cd docsite && npm ci --no-audit",
1515
"docs:start": "cd docsite && npm start",
16-
"docs:build": "npm run schema && cd docsite && npm run build",
16+
"docs:build": "cd docsite && npm run build",
1717
"demo": "HOST_PARENT_PATH=/my/cool/path SERVER_NAME=my-cool-server FILES_ON_SERVER_DIR=tests/exampleDir tsx src/index.ts"
1818
},
1919
"engines": {

0 commit comments

Comments
 (0)