Мне нужно скрыть форму аутентификации, когда пользователь подключен, и показать ее, когда он нажимает кнопку выхода из системы.
constructor (props) {
super(props);
this.state = {
cnx_mail: '',
cnx_pwd: '',
items: [],
errors: {},
formErrors: {cnx_mail: '', cnx_pwd: ''},
emailValid: false,
passwordValid: false,
formValid: false
}
this.handleUserInput = this.handleUserInput.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
The login button :
handleSubmit = (event) => {
event.preventDefault();
fetch(`${API}/api/connexion`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify ({
email: this.state.cnx_mail,
password: this.state.cnx_pwd,
})
})
.then(res => res.json())
.then(json => {
console.log(json);
//Here we get all the token
localStorage.setItem('head', json.result.split('.')[0]);
localStorage.setItem('payload', json.result.split('.')[1]);
localStorage.setItem('signature', json.result.split('.')[2]);
//Here we get the role to redirect user to accounts (if admin)
roole = JSON.parse(atob(json.result.split('.')[1])).account[0].role === 'admin';
this.setState({ therole : roole });
if(roole) {
console.log(json.result);
this.props.history.push('/accounts');
}
else {
console.log("is user");
}
return roole;
})
}
этот код говорит, что если это простой пользователь (role == "admin")он будет перенаправлен на страницу аккаунтов, в противном случае (role == "user") он останется на той же странице ("/"), но мне придется скрыть форму аутентификации, которая обычно логична.
ЭтоФорма:
<form className="demoForm" onSubmit={this.handleSubmit} noValidate encType="application/x-www-form-urlencoded">
<div className="alreadysubscribed-input">
<div className={`alreadysubscribed-field group-input ${this.errorClass(this.state.formErrors.cnx_mail)}`}>
<input type="email" required className="form-control fatb-input input-form" name="cnx_mail"
value={this.state.cnx_mail}
id="cnx_mail"
onChange={this.handleUserInput} error={errors.cnx_mail} />
<label className="fatb-label" htmlFor="cnx_mail">Email</label>
<div className="fatb-bar"></div>
</div>
<div className={`alreadysubscribed-field group-input ${this.errorClass(this.state.formErrors.cnx_pwd)}`}>
<input type="password" required className="form-control fatb-input input-form" name="cnx_pwd"
value={this.state.cnx_pwd}
id="cnx_pwd"
onChange={this.handleUserInput} error={errors.cnx_pwd} />
<label className="fatb-label" htmlFor="cnx_pwd">Mot de passe</label>
<div className="fatb-bar"></div>
</div>
</div>
<FormErrors formErrors={this.state.formErrors} />
<div className="btn-cnx">
{/* <span className="mas">Se connecter</span> */}
<button className="fatb-btn bubbly-button btn-anim3 w100p" type="submit" name="cnx_btn" disabled={!this.state.formValid}>se connecter</button>
</div>
</form>
Спасибо