Skip to content

Commit 3de70d4

Browse files
committed
address review comments
1 parent ccf03ad commit 3de70d4

8 files changed

Lines changed: 38 additions & 29 deletions

File tree

x-pack/platform/plugins/shared/fleet/public/components/cloud_connector/aws_connect_setup/aws_identity_federation_setup.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ import {
1919
} from '@elastic/eui';
2020
import { i18n } from '@kbn/i18n';
2121
import { FormattedMessage } from '@kbn/i18n-react';
22-
import type { CloudSetup } from '@kbn/cloud-plugin/public';
22+
23+
import type { CloudSetupForCloudConnector } from '../types';
2324

2425
import type { AccountType } from '../../../types';
2526
import { useGetCloudConnectors } from '../hooks/use_get_cloud_connectors';
@@ -35,7 +36,7 @@ export interface AwsIdentityFederationSetupProps {
3536
accountType?: AccountType;
3637
packageName?: string;
3738
policyTemplate?: string;
38-
cloud?: CloudSetup;
39+
cloud?: CloudSetupForCloudConnector;
3940
iacTemplateUrl?: string;
4041
hasInvalidRequiredVars?: boolean;
4142
isEditPage?: boolean;

x-pack/platform/plugins/shared/fleet/public/components/cloud_connector/aws_connect_setup/aws_temporary_keys_form.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export const AwsTemporaryKeysForm: React.FC<AwsTemporaryKeysFormProps> = ({
4848

4949
const accessKeyIdInvalid = hasInvalidRequiredVars && !fields.access_key_id;
5050
const secretAccessKeyInvalid = hasInvalidRequiredVars && !fields.secret_access_key;
51+
const sessionTokenInvalid = hasInvalidRequiredVars && !fields.session_token;
5152

5253
return (
5354
<div data-test-subj={AWS_TEMPORARY_KEYS_FORM_TEST_SUBJ}>
@@ -108,11 +109,20 @@ export const AwsTemporaryKeysForm: React.FC<AwsTemporaryKeysFormProps> = ({
108109
helpText={i18n.translate('xpack.fleet.awsTemporaryKeysForm.sessionTokenHelp', {
109110
defaultMessage: 'The session token returned by AWS STS for temporary credentials.',
110111
})}
112+
isInvalid={sessionTokenInvalid}
113+
error={
114+
sessionTokenInvalid
115+
? i18n.translate('xpack.fleet.awsTemporaryKeysForm.sessionTokenRequired', {
116+
defaultMessage: 'Session token is required',
117+
})
118+
: undefined
119+
}
111120
fullWidth
112121
>
113122
<EuiFieldPassword
114123
fullWidth
115124
value={fields.session_token}
125+
isInvalid={sessionTokenInvalid}
116126
onChange={(e) => handleChange('session_token', e.target.value)}
117127
data-test-subj={`${AWS_TEMPORARY_KEYS_FORM_TEST_SUBJ}-sessionToken`}
118128
/>

x-pack/platform/plugins/shared/fleet/public/components/cloud_connector/aws_connect_setup/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import React, { useState, useCallback } from 'react';
99
import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiTitle, EuiText } from '@elastic/eui';
1010
import { FormattedMessage } from '@kbn/i18n-react';
11-
import type { CloudSetup } from '@kbn/cloud-plugin/public';
1211

1312
import type { AccountType } from '../../../../common/types';
13+
import type { CloudSetupForCloudConnector } from '../types';
1414

1515
import { AwsAuthTypeSelector } from './aws_auth_type_selector';
1616
import type { AwsAuthType } from './aws_auth_type_selector';
@@ -24,7 +24,7 @@ export type { AwsAuthType, AwsStaticKeyCredentials, AwsTemporaryKeyCredentials }
2424

2525
export interface AwsConnectSetupProps {
2626
hasInvalidRequiredVars?: boolean;
27-
cloud?: CloudSetup;
27+
cloud?: CloudSetupForCloudConnector;
2828
accountType?: AccountType;
2929
isEditPage?: boolean;
3030
initialConnectorId?: string;

x-pack/platform/plugins/shared/fleet/public/components/cloud_connector/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export {
1111
type CloudConnectorTab,
1212
type CloudConnectorTabsProps,
1313
} from './cloud_connector_tabs';
14-
export type { UpdatePolicy, CloudConnectorCredentials } from './types';
14+
export type { UpdatePolicy, CloudConnectorCredentials, CloudSetupForCloudConnector } from './types';
1515
export {
1616
AwsConnectSetup,
1717
type AwsConnectSetupProps,

x-pack/platform/plugins/shared/fleet/public/components/cloud_connector/types.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,7 @@ export interface CloudConnectorFormProps {
115115

116116
export type CloudSetupForCloudConnector = Pick<
117117
CloudSetup,
118-
| 'isCloudEnabled'
119-
| 'cloudId'
120-
| 'cloudHost'
121-
| 'deploymentUrl'
122-
| 'serverless'
123-
| 'isServerlessEnabled'
118+
'isCloudEnabled' | 'cloudId' | 'deploymentUrl' | 'serverless' | 'isServerlessEnabled'
124119
>;
125120

126121
export interface GetCloudConnectorRemoteRoleTemplateParams {

x-pack/platform/plugins/shared/fleet/public/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ export const LazyCloudConnectorSetup = lazy(() =>
126126
export type { CloudConnectorSetupProps } from './components/cloud_connector';
127127
export { CLOUD_CONNECTOR_GCP_ASSET_INVENTORY_REUSABLE_MIN_VERSION } from './components/cloud_connector/constants';
128128

129-
// AWS Connect Setup - auth method picker (Identity Federation + Static Keys) for external plugins
129+
// AWS Connect Setup - auth method picker (Identity Federation + Static keys + Temporary keys) for external plugins
130130
export const LazyAwsConnectSetup = lazy(() =>
131131
import('./components/cloud_connector').then((module) => ({
132132
default: module.AwsConnectSetup,
@@ -137,6 +137,7 @@ export type {
137137
AwsAuthType,
138138
AwsStaticKeyCredentials,
139139
AwsTemporaryKeyCredentials,
140+
CloudSetupForCloudConnector,
140141
} from './components/cloud_connector';
141142
export {
142143
AWS_AUTH_TYPE_SELECTOR_TEST_SUBJ,

x-pack/platform/plugins/shared/ingest_hub/public/onboarding/onboarding_flow_context.tsx

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export interface ConnectStepState {
1515
temporaryKeys?: AwsTemporaryKeyCredentials;
1616
}
1717

18-
// Only non-sensitive fields are persisted — password values are never written to session storage
18+
// Only non-sensitive fields are persistedConnectStep — password values are never written to session storage
1919
interface PersistedConnectStep {
2020
connectorId?: string;
2121
authType?: 'identity_federation' | 'static_keys' | 'temporary_keys';
@@ -32,67 +32,68 @@ interface OnboardingFlowState {
3232
const OnboardingFlowContext = createContext<OnboardingFlowState | undefined>(undefined);
3333

3434
export function OnboardingFlowProvider({ children }: { children: React.ReactNode }) {
35-
const [persisted, setPersisted] = useSessionStorage<PersistedConnectStep>(
35+
const [persistedConnectStep, setPersistedConnectStep] = useSessionStorage<PersistedConnectStep>(
3636
'onboarding.aws.connectStep',
3737
{}
3838
);
3939

4040
// Sensitive fields (secret_access_key, session_token) live in memory only.
4141
// access_key_id is restored from session storage; passwords start empty on page refresh.
4242
const [staticKeys, setStaticKeysState] = useState<AwsStaticKeyCredentials | undefined>(() =>
43-
persisted?.authType === 'static_keys' && persisted.accessKeyId
44-
? { access_key_id: persisted.accessKeyId, secret_access_key: '' }
43+
persistedConnectStep?.authType === 'static_keys' && persistedConnectStep.accessKeyId
44+
? { access_key_id: persistedConnectStep.accessKeyId, secret_access_key: '' }
4545
: undefined
4646
);
4747

4848
const [temporaryKeys, setTemporaryKeysState] = useState<AwsTemporaryKeyCredentials | undefined>(
4949
() =>
50-
persisted?.authType === 'temporary_keys' && persisted.accessKeyId
51-
? { access_key_id: persisted.accessKeyId, secret_access_key: '', session_token: '' }
50+
persistedConnectStep?.authType === 'temporary_keys' && persistedConnectStep.accessKeyId
51+
? {
52+
access_key_id: persistedConnectStep.accessKeyId,
53+
secret_access_key: '',
54+
session_token: '',
55+
}
5256
: undefined
5357
);
5458

5559
const setConnectorId = useCallback(
5660
(id: string | undefined) => {
5761
setStaticKeysState(undefined);
5862
setTemporaryKeysState(undefined);
59-
setPersisted({
63+
setPersistedConnectStep({
6064
connectorId: id,
6165
authType: id ? 'identity_federation' : undefined,
62-
accessKeyId: undefined,
6366
});
6467
},
65-
[setPersisted]
68+
[setPersistedConnectStep]
6669
);
6770

6871
const setStaticKeys = useCallback(
6972
(keys: AwsStaticKeyCredentials | undefined) => {
7073
setStaticKeysState(keys);
7174
setTemporaryKeysState(undefined);
72-
setPersisted({
73-
connectorId: undefined,
75+
setPersistedConnectStep({
7476
authType: keys ? 'static_keys' : undefined,
7577
accessKeyId: keys?.access_key_id,
7678
});
7779
},
78-
[setPersisted]
80+
[setPersistedConnectStep]
7981
);
8082

8183
const setTemporaryKeys = useCallback(
8284
(keys: AwsTemporaryKeyCredentials | undefined) => {
8385
setTemporaryKeysState(keys);
8486
setStaticKeysState(undefined);
85-
setPersisted({
86-
connectorId: undefined,
87+
setPersistedConnectStep({
8788
authType: keys ? 'temporary_keys' : undefined,
8889
accessKeyId: keys?.access_key_id,
8990
});
9091
},
91-
[setPersisted]
92+
[setPersistedConnectStep]
9293
);
9394

9495
const connectStep: ConnectStepState = {
95-
connectorId: persisted?.connectorId,
96+
connectorId: persistedConnectStep?.connectorId,
9697
staticKeys,
9798
temporaryKeys,
9899
};

x-pack/platform/plugins/shared/ingest_hub/public/onboarding/step_components/connect_step.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { EuiLoadingSpinner } from '@elastic/eui';
1010
import { useKibana } from '@kbn/kibana-react-plugin/public';
1111
import type { CoreStart } from '@kbn/core/public';
1212
import type { CloudStart } from '@kbn/cloud-plugin/public';
13+
import type { CloudSetupForCloudConnector } from '@kbn/fleet-plugin/public';
1314
import { LazyAwsConnectSetup } from '@kbn/fleet-plugin/public';
1415
import { useOnboardingFlow } from '../onboarding_flow_context';
1516

@@ -25,7 +26,7 @@ export function ConnectStep({ onNext }: ConnectStepProps) {
2526
<div data-test-subj="onboardingStep-connect">
2627
<Suspense fallback={<EuiLoadingSpinner data-test-subj="onboardingStep-connect-loading" />}>
2728
<LazyAwsConnectSetup
28-
cloud={services.cloud as any}
29+
cloud={services.cloud as CloudSetupForCloudConnector | undefined}
2930
initialConnectorId={connectStep.connectorId}
3031
initialStaticKeys={connectStep.staticKeys}
3132
initialTemporaryKeys={connectStep.temporaryKeys}

0 commit comments

Comments
 (0)