1
0
mirror of https://github.com/0rangebananaspy/authelia.git synced 2024-09-14 22:47:21 +07:00
authelia/client/src/views/AuthenticationView/AuthenticationView.tsx
2019-03-03 11:39:40 +01:00

53 lines
1.6 KiB
TypeScript

import React, { Component } from "react";
import AlreadyAuthenticated from "../../containers/components/AlreadyAuthenticated/AlreadyAuthenticated";
import FirstFactorForm from "../../containers/components/FirstFactorForm/FirstFactorForm";
import SecondFactorForm from "../../containers/components/SecondFactorForm/SecondFactorForm";
import RemoteState from "./RemoteState";
import { RouterProps } from "react-router";
import queryString from 'query-string';
export enum Stage {
FIRST_FACTOR,
SECOND_FACTOR,
ALREADY_AUTHENTICATED,
}
export interface StateProps {
stage: Stage;
remoteState: RemoteState | null;
redirectionUrl: string | null;
}
export interface DispatchProps {
onInit: (redirectionUrl?: string) => void;
}
export type Props = StateProps & DispatchProps & RouterProps;
class AuthenticationView extends Component<Props> {
componentDidMount() {
if (this.props.history.location) {
const params = queryString.parse(this.props.history.location.search);
if ('rd' in params) {
this.props.onInit(params['rd'] as string);
}
}
this.props.onInit();
}
render() {
if (!this.props.remoteState) return null;
if (this.props.stage === Stage.SECOND_FACTOR) {
return <SecondFactorForm
username={this.props.remoteState.username}
redirection={this.props.redirectionUrl} />;
} else if (this.props.stage === Stage.ALREADY_AUTHENTICATED) {
return <AlreadyAuthenticated
username={this.props.remoteState.username}/>;
}
return <FirstFactorForm />;
}
}
export default AuthenticationView;