remove session.
This commit is contained in:
parent
b2f82acb9f
commit
2b0526bf56
|
@ -1,15 +1,14 @@
|
|||
import React from 'react';
|
||||
import Link from 'next/link';
|
||||
import withSession from '../components/with-session';
|
||||
|
||||
const Index = ({ session, isLoggedIn }) => {
|
||||
const Index = () => {
|
||||
return (
|
||||
<div>
|
||||
<h1>Hello Worlds!</h1>
|
||||
{!isLoggedIn && <p><Link href='/login'><a>Login</a></Link></p>}
|
||||
{isLoggedIn && <p><Link href='/logout'><a>Logout</a></Link></p>}
|
||||
<p><Link href='/login'><a>Login</a></Link></p>
|
||||
<p><Link href='/logout'><a>Logout</a></Link></p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default withSession(Index);
|
||||
export default (Index);
|
|
@ -1,77 +1,25 @@
|
|||
import React from 'react';
|
||||
import withSession from '../components/with-session';
|
||||
import Session from '../components/session';
|
||||
|
||||
class Login extends React.Component {
|
||||
constructor (props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
username: '',
|
||||
password: ''
|
||||
};
|
||||
this.handleSubmit = this.handleSubmit.bind(this);
|
||||
this.handleUsernameChange = this.handleUsernameChange.bind(this);
|
||||
this.handlePasswordChange = this.handlePasswordChange.bind(this);
|
||||
}
|
||||
|
||||
handleUsernameChange(event) {
|
||||
this.setState({
|
||||
username: event.target.value.trim(),
|
||||
password: this.state.password
|
||||
});
|
||||
}
|
||||
handlePasswordChange(event) {
|
||||
this.setState({
|
||||
username: this.state.username,
|
||||
password: event.target.value.trim()
|
||||
});
|
||||
}
|
||||
|
||||
async handleSubmit(evnet) {
|
||||
event.preventDefault();
|
||||
|
||||
const session = new Session();
|
||||
session
|
||||
.login(this.username, this.password)
|
||||
.then(() => {
|
||||
this.props.url.push('/');
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err);
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
let loginForm = <div />;
|
||||
if (!this.props.session.user) {
|
||||
loginForm = (
|
||||
return (
|
||||
<div>
|
||||
<form id='login' method='post' action='/login' onSubmit={this.handleSubmit}>
|
||||
<input name='_csrf' type='hidden' value={this.props.session.csrfToken} />
|
||||
<h3>Login</h3>
|
||||
<p>
|
||||
<label htmlFor='username'>Username</label><br />
|
||||
<input name='username' type='text' id='username' value={this.state.username} onChange={this.handleUsernameChange} />
|
||||
</p>
|
||||
<p>
|
||||
<label htmlFor='password'>Password</label><br />
|
||||
<input name='password' type='text' id='password' value={this.state.password} onChange={this.handlePasswordChange} />
|
||||
</p>
|
||||
<p>
|
||||
<button id='submitButton' type='submit'>Login</button>
|
||||
</p>
|
||||
<form id='login' method='post' action='/login'>
|
||||
<div>
|
||||
<label>Username:</label>
|
||||
<input name='username' type='text' id='username'/>
|
||||
</div>
|
||||
<div>
|
||||
<label>Password:</label>
|
||||
<input name='password' type='text' id='password'/>
|
||||
</div>
|
||||
<div>
|
||||
<input type='submit' value='Log In'/>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h2>Authentication</h2>
|
||||
{loginForm}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export default withSession(Login);
|
||||
export default (Login);
|
|
@ -3,7 +3,7 @@ const session = require('express-session');
|
|||
const csrf = require('lusca').csrf();
|
||||
const FileStore = require('session-file-store')(session);
|
||||
const passport = require('passport');
|
||||
const Strategy = require('passport-local').Strategy;
|
||||
const LocalStrategy = require('passport-local').Strategy;
|
||||
|
||||
exports.configure = ({
|
||||
app = null,
|
||||
|
@ -53,26 +53,31 @@ exports.configure = ({
|
|||
});
|
||||
*/
|
||||
|
||||
passport.use(new Strategy((username, password, cb) => {
|
||||
passport.use(new LocalStrategy((username, password, done) => {
|
||||
models.User.findOne({ where: {username: username} }).then(user => {
|
||||
if (!user) return cb(null, false);
|
||||
if (user.password != password) return cb(null, false);
|
||||
return cb(null, user);
|
||||
if (!user) {
|
||||
return done(null, false, { message: 'Incorrect username' });
|
||||
}
|
||||
if (user.password != password) {
|
||||
return done(null, false, { message: 'Incorrect password' });
|
||||
}
|
||||
return done(null, user);
|
||||
});
|
||||
}));
|
||||
|
||||
passport.serializeUser((user, cb) => {
|
||||
cb(null, user.id);
|
||||
passport.serializeUser((user, done) => {
|
||||
done(null, user.id);
|
||||
})
|
||||
|
||||
passport.deserializeUser((id, cb) => {
|
||||
passport.deserializeUser((id, done) => {
|
||||
models.User.findById(id).then(user => {
|
||||
cb(null, user);
|
||||
done(null, user);
|
||||
})
|
||||
});
|
||||
server.use(passport.initialize());
|
||||
server.use(passport.session());
|
||||
|
||||
/*
|
||||
server.get('/csrf', (req, res) => {
|
||||
return res.json({ csrfToken: res.locals._csrf });
|
||||
});
|
||||
|
@ -88,8 +93,12 @@ exports.configure = ({
|
|||
return res.json(session);
|
||||
});
|
||||
|
||||
*/
|
||||
server.post('/login',
|
||||
passport.authenticate('local', { failureRedirect: '/login' }),
|
||||
passport.authenticate('local', {
|
||||
successRedirect: '/',
|
||||
failureRedirect: '/login',
|
||||
failureFlash:true }),
|
||||
(req, res) => {
|
||||
res.redirect('/')
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue