import React, { FC } from 'react'; import { connect, MapStateToProps } from 'react-redux'; import { StoreState } from 'app/types'; import { Form, Field, Input, Button, HorizontalGroup, LinkButton } from '@grafana/ui'; import { getConfig } from 'app/core/config'; import { getBackendSrv } from '@grafana/runtime'; import appEvents from 'app/core/app_events'; import { AppEvents } from '@grafana/data'; interface SignupDTO { name?: string; email: string; username: string; orgName?: string; password: string; code: string; confirm?: string; } interface ConnectedProps { email?: string; code?: string; } const SignupUnconnected: FC = (props) => { const onSubmit = async (formData: SignupDTO) => { if (formData.name === '') { delete formData.name; } delete formData.confirm; const response = await getBackendSrv() .post('/api/user/signup/step2', { email: formData.email, code: formData.code, username: formData.email, orgName: formData.orgName, password: formData.password, name: formData.name, }) .catch((err) => { const msg = err.data?.message || err; appEvents.emit(AppEvents.alertWarning, [msg]); }); if (response.code === 'redirect-to-select-org') { window.location.href = getConfig().appSubUrl + '/profile/select-org?signup=1'; } window.location.href = getConfig().appSubUrl + '/'; }; const defaultValues = { email: props.email, code: props.code, }; return (
{({ errors, register, getValues }) => ( <> {!getConfig().autoAssignOrg && ( )} {getConfig().verifyEmailEnabled && ( )} v === getValues().password || 'Passwords must match!', })} /> Back to login )}
); }; const mapStateToProps: MapStateToProps = (state: StoreState) => ({ email: state.location.routeParams.email?.toString(), code: state.location.routeParams.code?.toString(), }); export const Signup = connect(mapStateToProps)(SignupUnconnected);