remove session.

This commit is contained in:
Sukchan Lee 2017-05-18 09:11:49 +09:00
parent b2f82acb9f
commit 2b0526bf56
3 changed files with 37 additions and 81 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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('/')
}