Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-style Login / Sign Up #4344

Merged
merged 1 commit into from
Dec 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion frontend/src/CodalabApp.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import UserInfo from './components/UserInfo';
import NavBar from './components/NavBar';
import Footer from './components/Footer';
import Login from './components/Login';
import { SignUp, SignUpSuccess } from './components/SignUp';
import SignUp from './components/SignUp';
import SignUpSuccess from './components/SignUpSuccess';
import { ChangeEmail, ChangeEmailSuccess } from './components/ChangeEmail';
import VerifySuccess from './components/VerifySuccess';
import VerifyError from './components/VerifyError';
Expand Down
143 changes: 81 additions & 62 deletions frontend/src/components/Login.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import * as React from 'react';
import Immutable from 'seamless-immutable';
import { Redirect, NavLink } from 'react-router-dom';
import SubHeader from './SubHeader';
import ContentWrapper from './ContentWrapper';
import { withStyles } from '@material-ui/core/styles';
import { Typography } from '@material-ui/core';
import Button from '@material-ui/core/Button';
import queryString from 'query-string';

class Login extends React.Component {
Expand Down Expand Up @@ -35,73 +36,91 @@ class Login extends React.Component {
render() {
const { error } = queryString.parse(this.props.location.search);
const pathname = this.props.location.pathname;

const classes = this.props.classes;
let { redirectToReferrer, from } = this.state;

if (redirectToReferrer) return <Redirect to={from} />;

return (
<React.Fragment>
<SubHeader title='Sign In' />
<ContentWrapper>
{from !== '/' && <p>You must log in to view the page at {from}</p>}
{error && <div className='alert alert-error'>{error}</div>}
<form className='login' method='POST' action='/rest/account/login'>
<div className='form-group'>
<label htmlFor='id_login'>Login:</label>
<input
id='id_login'
className='form-control'
name='username'
placeholder='Username or e-mail'
type='text'
autoFocus={true}
autoComplete='off'
value={this.state.username}
onChange={this.handleInputChange}
/>
</div>
<div className='form-group'>
<label htmlFor='id_password'>Password:</label>
<input
id='id_password'
className='form-control'
name='password'
placeholder='Password'
type='password'
autoComplete='off'
value={this.state.password}
onChange={this.handleInputChange}
/>
</div>
<input type='hidden' name='success_uri' value={from} />
<input type='hidden' name='error_uri' value={pathname} />
<button className='btn btn-primary' type='submit'>
Sign In
</button>
{/* the above is almost certainly wrong, not sure how to fix*/}
</form>
<p>
<NavLink to='/account/signup'>Don't have an account? Sign up!</NavLink>
</p>
<p>
<NavLink to='/account/reset'>Forgot your password?</NavLink>
</p>
<button
className='link'
onClick={(event) => {
alert(
'Please log in and navigate to your dashboard to resend confirmation email.',
);
event.preventDefault();
}}
<div className={classes.loginContainer}>
<Typography variant='h5' gutterBottom>
Login
</Typography>
{error && <div className='alert alert-error'>{error}</div>}
<form className='login' method='POST' action='/rest/account/login'>
<div className='form-group'>
<label htmlFor='id_login'>Username</label>
<input
id='id_login'
className='form-control'
name='username'
placeholder='Username or e-mail'
type='text'
autoFocus={true}
autoComplete='off'
value={this.state.username}
onChange={this.handleInputChange}
/>
</div>
<div className='form-group'>
<label htmlFor='id_password'>Password</label>
<input
id='id_password'
className='form-control'
name='password'
placeholder='Password'
type='password'
autoComplete='off'
value={this.state.password}
onChange={this.handleInputChange}
/>
</div>
<input type='hidden' name='success_uri' value={from} />
<input type='hidden' name='error_uri' value={pathname} />
<Button
classes={{ root: classes.loginBtn }}
variant='contained'
color='primary'
type='submit'
>
Resend confirmation email
</button>
</ContentWrapper>
</React.Fragment>
Sign In
</Button>
</form>
<p>
<NavLink to='/account/signup'>Don't have an account? Sign up!</NavLink>
</p>
<p>
<NavLink to='/account/reset'>Forgot your password?</NavLink>
</p>
<button
className='link'
onClick={(event) => {
alert(
'Please log in and navigate to your dashboard to resend confirmation email.',
);
event.preventDefault();
}}
>
Resend confirmation email
</button>
</div>
);
}
}

export default Login;
const styles = (theme) => ({
loginContainer: {
maxWidth: 315,
margin: '50px auto',
padding: '22px 30px 30px',
borderRadius: 12,
boxShadow: theme.boxShadow.card,
backgroundColor: 'white',
},
loginBtn: {
marginBottom: 20,
marginTop: 5,
},
});

export default withStyles(styles)(Login);
Loading