import React from 'react'
import { connect } from 'react-redux'
import { Redirect } from 'react-router'
import { translate } from 'react-i18next'
import Cookies from 'js-cookie'
import LoginLogo from '../component/Login/LoginLogo.jsx'
import LoginLogoImg from '../img/logoTracimWhite.svg'
import { postUserLogin } from '../action-creator.async.js'
import Card from '../component/common/Card/Card.jsx'
import CardHeader from '../component/common/Card/CardHeader.jsx'
import CardBody from '../component/common/Card/CardBody.jsx'
import InputGroupText from '../component/common/Input/InputGroupText.jsx'
import Button from '../component/common/Input/Button.jsx'
import LoginBtnForgotPw from '../component/Login/LoginBtnForgotPw.jsx'
import {
newFlashMessage,
setUserConnected
} from '../action-creator.sync.js'
import { COOKIE, PAGE } from '../helper.js'
import { Checkbox } from 'tracim_frontend_lib'
class Login extends React.Component {
constructor (props) {
super(props)
this.state = {
inputLogin: {
value: '',
isInvalid: false
},
inputPassword: {
value: '',
isInvalid: false
},
inputRememberMe: false
}
}
handleChangeLogin = e => this.setState({inputLogin: {...this.state.inputLogin, value: e.target.value}})
handleChangePassword = e => this.setState({inputPassword: {...this.state.inputPassword, value: e.target.value}})
handleChangeRememberMe = e => {
e.preventDefault()
e.stopPropagation()
this.setState(prev => ({inputRememberMe: !prev.inputRememberMe}))
}
handleClickSubmit = async () => {
const { history, dispatch, t } = this.props
const { inputLogin, inputPassword, inputRememberMe } = this.state
const fetchPostUserLogin = await dispatch(postUserLogin(inputLogin.value, inputPassword.value, inputRememberMe))
const userAuth = btoa(`${inputLogin.value}:${inputPassword.value}`)
if (fetchPostUserLogin.status === 200) {
dispatch(setUserConnected({
...fetchPostUserLogin.json,
auth: userAuth,
logged: true
}))
if (inputRememberMe) {
Cookies.set(COOKIE.USER_LOGIN, inputLogin.value, {expires: 365})
Cookies.set(COOKIE.USER_AUTH, userAuth, {expires: 365})
} else {
Cookies.set(COOKIE.USER_LOGIN, inputLogin.value)
Cookies.set(COOKIE.USER_AUTH, userAuth)
}
history.push(PAGE.WORKSPACE.ROOT)
} else if (fetchPostUserLogin.status === 403) {
dispatch(newFlashMessage(t('Email or password invalid'), 'danger'))
}
}
render () {
if (this.props.user.logged) return
else {
return (
{this.props.t('Connection')}
)
}
}
}
const mapStateToProps = ({ user }) => ({ user })
export default connect(mapStateToProps)(translate()(Login))