From c97c1ada294b88ff3ed9d7b00645686b06df9c27 Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Fri, 3 Dec 2021 15:20:01 +0530 Subject: [PATCH] feat(ui) - sso login jwt --- frontend/app/components/Login/Login.js | 18 +++++++++++++++--- frontend/app/duck/jwt.js | 7 +++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/frontend/app/components/Login/Login.js b/frontend/app/components/Login/Login.js index a1350000b..53ae9e7a6 100644 --- a/frontend/app/components/Login/Login.js +++ b/frontend/app/components/Login/Login.js @@ -4,29 +4,41 @@ import { Icon, Loader, Button, Link } from 'UI'; import { login } from 'Duck/user'; import { forgotPassword, signup } from 'App/routes'; import ReCAPTCHA from 'react-google-recaptcha'; +import { withRouter } from 'react-router-dom'; import stl from './login.css'; import cn from 'classnames'; +import { setJwt } from 'Duck/jwt'; const FORGOT_PASSWORD = forgotPassword(); const SIGNUP_ROUTE = signup(); const recaptchaRef = React.createRef(); @connect( - state => ({ + (state, props) => ({ errors: state.getIn([ 'user', 'loginRequest', 'errors' ]), loading: state.getIn([ 'user', 'loginRequest', 'loading' ]), - // existingTenant: state.getIn(['user', 'authDetails', 'tenants']), authDetails: state.getIn(['user', 'authDetails']), + params: new URLSearchParams(props.location.search) }), - { login, }, + { login, setJwt }, ) @withPageTitle('Login - OpenReplay') +@withRouter export default class Login extends React.Component { state = { email: '', password: '', }; + componentDidMount() { + const { params } = this.props; + const jwt = params.get('jwt') + if (jwt) { + this.props.setJwt(jwt); + window.location.href = '/'; + } + } + handleSubmit = (token) => { const { email, password } = this.state; this.props.login({ email: email.trim(), password, 'g-recaptcha-response': token }).then(() => { diff --git a/frontend/app/duck/jwt.js b/frontend/app/duck/jwt.js index 946dcaa6a..4d4147f34 100644 --- a/frontend/app/duck/jwt.js +++ b/frontend/app/duck/jwt.js @@ -10,3 +10,10 @@ export default (state = null, action = {}) => { } return state; }; + +export function setJwt(data) { + return { + type: UPDATE, + data, + }; +}