mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
* Add initial authentication config page skeleton * Add initial SAML config page WIP * Add few more pages * Add connect to IdP page * Assertion mappings page stub and url params * Able to save settings * Some tweaks for authentication page * Tweak behaviour * Tweak provider name * Move SAML config pages to enterprise * minor refactor * Able to reset settings * Configure key and cert from UI * Refactor WIP * Tweak styles * Optional save button * Some tweaks for the page * Don't show info popup when save settings * Improve key/cert validation * Fetch provider status and display on auth page * Add settings list to the auth page * Show call to action card if no auth configured * clean up * Show authentication page only if SAML available * Add access control for SSO config page * Add feature toggle for auth config UI * Add code owners for auth config page * Auth config UI disabled by default * Fix feature toggle check * Apply suggestions from review * Refactor: use forms for steps * Clean up * Improve authentication page loading * Fix CTA link * Minor tweaks * Fix page route * Fix formatting * Fix generated code formatting
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import React from 'react';
|
|
import { connect, ConnectedProps } from 'react-redux';
|
|
|
|
import { Alert } from '@grafana/ui';
|
|
import { StoreState } from 'app/types';
|
|
|
|
import { resetError, resetWarning } from './state/reducers';
|
|
|
|
function mapStateToProps(state: StoreState) {
|
|
return {
|
|
error: state.authConfig.updateError,
|
|
warning: state.authConfig.warning,
|
|
};
|
|
}
|
|
|
|
const mapDispatchToProps = {
|
|
resetError,
|
|
resetWarning,
|
|
};
|
|
|
|
const connector = connect(mapStateToProps, mapDispatchToProps);
|
|
export type Props = ConnectedProps<typeof connector>;
|
|
|
|
export const ErrorContainerUnconnected = ({ error, warning, resetError, resetWarning }: Props): JSX.Element => {
|
|
return (
|
|
<div>
|
|
{error && (
|
|
<Alert title={error.message} onRemove={() => resetError()}>
|
|
{error.errors?.map((e, i) => (
|
|
<div key={i}>{e}</div>
|
|
))}
|
|
</Alert>
|
|
)}
|
|
{warning && (
|
|
<Alert title={warning.message} onRemove={() => resetWarning()} severity="warning">
|
|
{warning.errors?.map((e, i) => (
|
|
<div key={i}>{e}</div>
|
|
))}
|
|
</Alert>
|
|
)}
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default connector(ErrorContainerUnconnected);
|