PLT-2809 Followups to login page redesign (#2901)

* Rearranged controls on the login page

* Prevented login when username or password hasn't been entered

* Updated login page error messages

* Enabled sign in with username by default
Этот коммит содержится в:
Harrison Healey
2016-05-06 08:08:11 -04:00
коммит произвёл Christopher Speller
родитель d75cb02948
Коммит faf807d872
7 изменённых файлов: 115 добавлений и 123 удалений

Просмотреть файл

@@ -50,58 +50,25 @@ export default class Login extends React.Component {
e.preventDefault();
const loginId = this.state.loginId.trim();
if (!loginId) {
const ldapEnabled = global.window.mm_config.EnableLdap === 'true';
const usernameSigninEnabled = global.window.mm_config.EnableSignInWithUsername === 'true';
const emailSigninEnabled = global.window.mm_config.EnableSignInWithEmail === 'true';
this.setState({
serverError: (
<FormattedMessage
id='login.loginIdRequired'
defaultMessage='A {type} is required'
values={{
type: this.createLoginPlaceholder(emailSigninEnabled, usernameSigninEnabled, ldapEnabled)
}}
/>
)
});
return;
}
const password = this.state.password.trim();
if (!password) {
this.setState({
serverError: (
<FormattedMessage
id='login.passwordRequired'
defaultMessage='A password is required'
/>
)
});
return;
}
if (global.window.mm_config.EnableMultifactorAuthentication !== 'true') {
this.submit(loginId, password, '');
return;
}
Client.checkMfa(
loginId,
(data) => {
if (data.mfa_required === 'true') {
this.setState({showMfa: true});
} else {
this.submit(loginId, password, '');
if (global.window.mm_config.EnableMultifactorAuthentication === 'true') {
Client.checkMfa(
loginId,
(data) => {
if (data.mfa_required === 'true') {
this.setState({showMfa: true});
} else {
this.submit(loginId, password, '');
}
},
(err) => {
this.setState({serverError: err.message});
}
},
(err) => {
this.setState({serverError: err.message});
}
);
);
} else {
this.submit(loginId, password, '');
}
}
submit(loginId, password, token) {
@@ -125,7 +92,16 @@ export default class Login extends React.Component {
serverError: (
<FormattedMessage
id='login.userNotFound'
defaultMessage="We couldn't find an existing account matching your login credentials."
defaultMessage="We couldn't find an account matching your login credentials."
/>
)
});
} else if (err.id === 'api.user.check_user_password.invalid.app_error' || err.id === 'ent.ldap.do_login.invalid_password.app_error') {
this.setState({
serverError: (
<FormattedMessage
id='login.invalidPassword'
defaultMessage='Your password is incorrect.'
/>
)
});
@@ -251,58 +227,25 @@ export default class Login extends React.Component {
}
}
const loginControls = [];
const ldapEnabled = global.window.mm_config.EnableLdap === 'true';
const gitlabSigninEnabled = global.window.mm_config.EnableSignUpWithGitLab === 'true';
const googleSigninEnabled = global.window.mm_config.EnableSignUpWithGoogle === 'true';
const usernameSigninEnabled = global.window.mm_config.EnableSignInWithUsername === 'true';
const emailSigninEnabled = global.window.mm_config.EnableSignInWithEmail === 'true';
const oauthLogins = [];
if (gitlabSigninEnabled) {
oauthLogins.push(
<a
className='btn btn-custom-login gitlab'
key='gitlab'
href={Client.getOAuthRoute() + '/gitlab/login'}
>
<span className='icon'/>
<span>
<FormattedMessage
id='login.gitlab'
defaultMessage='with GitLab'
/>
</span>
</a>
);
}
if (googleSigninEnabled) {
oauthLogins.push(
<Link
className='btn btn-custom-login google'
key='google'
to={Client.getOAuthRoute() + '/google/login'}
>
<span className='icon'/>
<span>
<FormattedMessage
id='login.google'
defaultMessage='with Google Apps'
/>
</span>
</Link>
);
}
let login = null;
if (emailSigninEnabled || usernameSigninEnabled || ldapEnabled) {
let errorClass = '';
if (this.state.serverError) {
errorClass = ' has-error';
}
login = (
<form onSubmit={this.preSubmit}>
loginControls.push(
<form
key='loginBoxes'
onSubmit={this.preSubmit}
>
<div className='signup__email-container'>
<FormError error={this.state.serverError}/>
<div className={'form-group' + errorClass}>
@@ -330,6 +273,7 @@ export default class Login extends React.Component {
<button
type='submit'
className='btn btn-primary'
disabled={!this.state.loginId || !this.state.password}
>
<FormattedMessage
id='login.signIn'
@@ -342,10 +286,9 @@ export default class Login extends React.Component {
);
}
var userSignUp;
if (global.window.mm_config.EnableOpenServer === 'true') {
userSignUp = (
<div>
loginControls.push(
<div key='signup'>
<span>
<FormattedMessage
id='login.noAccount'
@@ -365,10 +308,12 @@ export default class Login extends React.Component {
);
}
let forgotPassword;
if (usernameSigninEnabled || emailSigninEnabled) {
forgotPassword = (
<div className='form-group'>
loginControls.push(
<div
key='forgotPassword'
className='form-group'
>
<Link to={'/reset_password'}>
<FormattedMessage
id='login.forgot'
@@ -379,13 +324,69 @@ export default class Login extends React.Component {
);
}
if ((emailSigninEnabled || usernameSigninEnabled || ldapEnabled) && (gitlabSigninEnabled || googleSigninEnabled)) {
loginControls.push(
<div
key='divider'
className='or__container'
>
<FormattedMessage
id='login.or'
defaultMessage='or'
/>
</div>
);
loginControls.push(
<h5 key='oauthHeader'>
<FormattedMessage
id='login.signInWith'
defaultMessage='Sign in with:'
/>
</h5>
);
}
if (gitlabSigninEnabled) {
loginControls.push(
<a
className='btn btn-custom-login gitlab'
key='gitlab'
href={Client.getOAuthRoute() + '/gitlab/login'}
>
<span className='icon'/>
<span>
<FormattedMessage
id='login.gitlab'
defaultMessage='GitLab'
/>
</span>
</a>
);
}
if (googleSigninEnabled) {
loginControls.push(
<Link
className='btn btn-custom-login google'
key='google'
to={Client.getOAuthRoute() + '/google/login'}
>
<span className='icon'/>
<span>
<FormattedMessage
id='login.google'
defaultMessage='Google Apps'
/>
</span>
</Link>
);
}
return (
<div>
{extraBox}
{oauthLogins}
{login}
{userSignUp}
{forgotPassword}
{loginControls}
</div>
);
}