forked from acouzens/open5gs
change folder structure
This commit is contained in:
parent
e845088aaf
commit
16f6147295
|
@ -18,7 +18,7 @@ export default ({ session, children }) => {
|
|||
}
|
||||
|
||||
return (
|
||||
<form id='signout' method='post' action='/auth/signout' onSubmit={logout}>
|
||||
<form id='signout' method='post' action='/api/auth/signout' onSubmit={logout}>
|
||||
<input name='_csrf' type='hidden' value={session.csrfToken} />
|
||||
<button type='submit'>{children}</button>
|
||||
</form>
|
||||
|
|
|
@ -28,7 +28,7 @@ export default class extends React.Component {
|
|||
|
||||
if (session.user) {
|
||||
loginMessage = (
|
||||
<form id="signout" method="post" action="/logout" onSubmit={this.handleSubmit}>
|
||||
<form id="signout" method="post" action="/api/auth/logout" onSubmit={this.handleSubmit}>
|
||||
<input name="_csrf" type="hidden" value={session.csrfToken}/>
|
||||
<p>
|
||||
<Link prefetch href="/"><a className="home">Home</a></Link>Logged in as <strong><Link prefetch href="/login"><a>{session.user.username || session.user.role}</a></Link></strong>
|
||||
|
|
|
@ -41,7 +41,7 @@ export default class Session {
|
|||
}
|
||||
|
||||
let xhr = new XMLHttpRequest()
|
||||
xhr.open('GET', '/csrf', true)
|
||||
xhr.open('GET', '/api/auth/csrf', true)
|
||||
xhr.onreadystatechange = () => {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 200) {
|
||||
|
@ -91,7 +91,7 @@ export default class Session {
|
|||
// to true then revalidate it by fetching it again from the server.
|
||||
return new Promise((resolve, reject) => {
|
||||
let xhr = new XMLHttpRequest()
|
||||
xhr.open('GET', '/session', true)
|
||||
xhr.open('GET', '/api/auth/session', true)
|
||||
xhr.onreadystatechange = () => {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 200) {
|
||||
|
@ -132,7 +132,7 @@ export default class Session {
|
|||
this._session.csrfToken = await Session.getCsrfToken()
|
||||
|
||||
let xhr = new XMLHttpRequest()
|
||||
xhr.open('POST', '/login', true)
|
||||
xhr.open('POST', '/api/auth/login', true)
|
||||
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
|
||||
xhr.onreadystatechange = async () => {
|
||||
if (xhr.readyState === 4) {
|
||||
|
@ -160,7 +160,7 @@ export default class Session {
|
|||
}
|
||||
|
||||
let xhr = new XMLHttpRequest()
|
||||
xhr.open('POST', '/logout', true)
|
||||
xhr.open('POST', '/api/auth/logout', true)
|
||||
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
|
||||
xhr.onreadystatechange = async () => {
|
||||
if (xhr.readyState === 4) {
|
||||
|
|
|
@ -22,8 +22,8 @@
|
|||
"sqlite3": "^3.1.8"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "node server.js",
|
||||
"dev": "node server/index.js",
|
||||
"build": "next build",
|
||||
"start": "NODE_ENV=production node server.js"
|
||||
"start": "NODE_ENV=production node server/index.js"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ export default class extends Page {
|
|||
} else {
|
||||
signinForm = (
|
||||
<div>
|
||||
<form id="signin" method="post" action="/login" onSubmit={this.handleSubmit}>
|
||||
<form id="signin" method="post" action="/api/auth/login" onSubmit={this.handleSubmit}>
|
||||
<input name="_csrf" type="hidden" value={this.state.session.csrfToken}/>
|
||||
<h3>Sign in with email</h3>
|
||||
<p>
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
const express = require('express');
|
||||
const next = require('next');
|
||||
const models = require('./models');
|
||||
const auth = require('./routes/auth');
|
||||
|
||||
const dev = process.env.NODE_ENV != 'production';
|
||||
const app = next({ dev });
|
||||
const handle = app.getRequestHandler();
|
||||
|
||||
app.prepare()
|
||||
.then(() => {
|
||||
const server = express();
|
||||
|
||||
models.sequelize.sync()
|
||||
.then(() => {
|
||||
auth.configure({
|
||||
app: app,
|
||||
server: server,
|
||||
secret: process.env.SESSION_SECRET
|
||||
});
|
||||
|
||||
server.get('*', (req, res) => {
|
||||
return handle(req, res);
|
||||
});
|
||||
|
||||
// Set vary header (good practice)
|
||||
// Note: This overrides any existing 'Vary' header but is okay in this app
|
||||
server.use(function (req, res, next) {
|
||||
res.setHeader('Vary', 'Accept-Encoding')
|
||||
next()
|
||||
});
|
||||
|
||||
server.listen(3000, err => {
|
||||
if (err) throw err;
|
||||
console.log('> Ready on http://localhost:3000');
|
||||
});
|
||||
})
|
||||
})
|
||||
.catch(err => console.log(err));
|
|
@ -1,21 +1,26 @@
|
|||
const express = require('express');
|
||||
const next = require('next');
|
||||
|
||||
const dev = process.env.NODE_ENV != 'production';
|
||||
const app = next({ dev });
|
||||
const handle = app.getRequestHandler();
|
||||
|
||||
const bodyParser = require('body-parser');
|
||||
const session = require('express-session');
|
||||
const SequelizeStore = require('connect-session-sequelize')(session.Store);
|
||||
const passport = require('passport');
|
||||
const LocalStrategy = require('passport-local').Strategy;
|
||||
const csrf = require('lusca').csrf();
|
||||
const models = require('../models');
|
||||
|
||||
exports.configure = ({
|
||||
app = null,
|
||||
server = null,
|
||||
secret = 'change-me',
|
||||
store = new SequelizeStore({ db: models.sequelize, table: 'Session' }),
|
||||
maxAge = 60000 * 60 * 24 * 7 * 4, // 4 weeks
|
||||
clientMaxAge = 60000 // 60 seconds
|
||||
} = {}) => {
|
||||
if (!app) throw new Error('Null param')
|
||||
if (!server) throw new Error('Null param')
|
||||
const models = require('./models');
|
||||
const api = require('./routes');
|
||||
|
||||
app.prepare()
|
||||
.then(() => {
|
||||
return models.sequelize.sync();
|
||||
})
|
||||
.then(() => {
|
||||
const server = express();
|
||||
|
||||
models.UserRole.count().then(c => {
|
||||
if (c == 0) {
|
||||
|
@ -35,14 +40,14 @@ exports.configure = ({
|
|||
server.use(bodyParser.urlencoded({ extended: true }));
|
||||
|
||||
server.use(session({
|
||||
secret: secret,
|
||||
store: store,
|
||||
secret: 'change-me',
|
||||
store: new SequelizeStore({ db: models.sequelize, table: 'Session' }),
|
||||
resave: false,
|
||||
rolling: true,
|
||||
saveUninitialized: true,
|
||||
httpOnly: true,
|
||||
cookie: {
|
||||
maxAge: maxAge
|
||||
maxAge: 60000 * 60 * 24 * 7 * 4 // 4 weeks
|
||||
}
|
||||
}));
|
||||
|
||||
|
@ -81,33 +86,22 @@ exports.configure = ({
|
|||
server.use(passport.initialize());
|
||||
server.use(passport.session());
|
||||
|
||||
server.get('/csrf', (req, res) => {
|
||||
return res.json({csrfToken: res.locals._csrf});
|
||||
})
|
||||
server.use('/api', api);
|
||||
|
||||
server.get('/session', (req, res) => {
|
||||
let session = {
|
||||
clientMaxAge: clientMaxAge,
|
||||
csrfToken: res.locals._csrf
|
||||
}
|
||||
if (req.user) {
|
||||
session.user = req.user
|
||||
}
|
||||
|
||||
return res.json(session)
|
||||
})
|
||||
|
||||
server.post('/login',
|
||||
passport.authenticate('local', {
|
||||
failureRedirect: '/error',
|
||||
}),
|
||||
(req, res) => {
|
||||
res.redirect('/');
|
||||
}
|
||||
);
|
||||
|
||||
server.post('/logout', (req, res) => {
|
||||
req.logout();
|
||||
res.redirect('/');
|
||||
server.get('*', (req, res) => {
|
||||
return handle(req, res);
|
||||
});
|
||||
}
|
||||
|
||||
// Set vary header (good practice)
|
||||
// Note: This overrides any existing 'Vary' header but is okay in this app
|
||||
server.use(function (req, res, next) {
|
||||
res.setHeader('Vary', 'Accept-Encoding')
|
||||
next()
|
||||
});
|
||||
|
||||
server.listen(3000, err => {
|
||||
if (err) throw err;
|
||||
console.log('> Ready on http://localhost:3000');
|
||||
});
|
||||
})
|
||||
.catch(err => console.log(err));
|
|
@ -0,0 +1,36 @@
|
|||
const express = require('express');
|
||||
const router = express.Router();
|
||||
|
||||
const passport = require('passport');
|
||||
|
||||
router.get('/csrf', (req, res) => {
|
||||
return res.json({csrfToken: res.locals._csrf});
|
||||
})
|
||||
|
||||
router.get('/session', (req, res) => {
|
||||
let session = {
|
||||
clientMaxAge: 60000, // 60 seconds
|
||||
csrfToken: res.locals._csrf
|
||||
}
|
||||
if (req.user) {
|
||||
session.user = req.user
|
||||
}
|
||||
|
||||
return res.json(session)
|
||||
})
|
||||
|
||||
router.post('/login',
|
||||
passport.authenticate('local', {
|
||||
failureRedirect: '/error',
|
||||
}),
|
||||
(req, res) => {
|
||||
res.redirect('/');
|
||||
}
|
||||
);
|
||||
|
||||
router.post('/logout', (req, res) => {
|
||||
req.logout();
|
||||
res.redirect('/');
|
||||
});
|
||||
|
||||
module.exports = router;
|
|
@ -0,0 +1,8 @@
|
|||
const express = require('express');
|
||||
const auth = require('./auth');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.use('/auth', auth);
|
||||
|
||||
module.exports = router;
|
Loading…
Reference in New Issue