import type { FormikErrors } from 'formik'; import { Form } from 'formik'; import React from 'react'; import { Modal } from 'react-bootstrap'; import { FormikFormField, ModalClose, noop, ReactModal, SpinFormik, SubmitButton, TextInput } from '@spinnaker/core'; import type { IAuthenticateOidcActionConfig } from '../../OidcConfigReader'; import './ConfigureConfigModal.css'; export interface IConfigureOidcConfigModalProps { config: IAuthenticateOidcActionConfig; closeModal?(result?: any): void; // provided by ReactModal dismissModal?(rejection?: any): void; // provided by ReactModal } export interface IConfigureOidcConfigModalState { initialValues: IAuthenticateOidcActionConfig; } export class ConfigureOidcConfigModal extends React.Component< IConfigureOidcConfigModalProps, IConfigureOidcConfigModalState > { public static defaultProps: Partial = { closeModal: noop, dismissModal: noop, }; public static show(props: IConfigureOidcConfigModalProps): Promise { return ReactModal.show(ConfigureOidcConfigModal, props); } constructor(props: IConfigureOidcConfigModalProps) { super(props); const config = props.config || ({} as IAuthenticateOidcActionConfig); this.state = { initialValues: { authorizationEndpoint: config.authorizationEndpoint || '', clientId: config.clientId || '', clientSecret: config.clientSecret || '', issuer: config.issuer || '', scope: config.scope || 'openid', sessionCookieName: config.sessionCookieName || 'AWSELBAuthSessionCookie', tokenEndpoint: config.tokenEndpoint || '', userInfoEndpoint: config.userInfoEndpoint || '', }, }; } private close = (reason?: any): void => { this.props.dismissModal(reason); }; private submit = (data: IAuthenticateOidcActionConfig): void => { this.props.closeModal(data); }; private validate = (): FormikErrors => { return {}; }; public render() { const { initialValues } = this.state; const submitLabel = 'Save Client'; return (
initialValues={initialValues} onSubmit={this.submit} validate={this.validate} render={({ isValid }) => (
Configure OIDC Client } /> } /> } /> } /> } /> } /> )} />
); } }