Debug sessions

This commit is contained in:
Kevin Thomas
2021-07-26 16:17:51 -07:00
parent 1be716d85a
commit 9571cd0224
7 changed files with 16089 additions and 52 deletions

3
.gitignore vendored
View File

@@ -108,3 +108,6 @@ certs/*
# SQLite DB
db.sqlite3
# Sessions file store
sessions/*

16074
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -18,6 +18,7 @@
"express-session": "^1.17.2",
"passport": "^0.4.1",
"passport-local": "^1.0.0",
"session-file-store": "^1.5.0",
"sqlite3": "^5.0.2",
"tone": "^14.7.77",
"vue": "^2.6.11",

View File

@@ -1,5 +1,6 @@
const express = require('express')
const session = require('express-session')
const FileStore = require('session-file-store')(session);
const cors = require('cors')
const passport = require('passport')
const path = require('path')
@@ -12,14 +13,24 @@ const usersRouter = require('./routes/users')
const app = express()
const corsOptions = {
origin: 'http://localhost:8080',
credentials: true
}
app.use(cors(corsOptions))
const fileStoreOptions = {
path: './sessions'
};
require('./boot/db')()
require('./boot/auth')()
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
app.use(cookieParser())
app.use(express.static(path.join(__dirname, 'public')))
app.use(session({ secret: 'cats', resave: false, saveUninitialized: false }))
app.use(session({ store: new FileStore(fileStoreOptions), secret: 'cats', resave: true, saveUninitialized: true }))
app.use(function (req, res, next) {
const msgs = req.session.messages || []
res.locals.messages = msgs
@@ -27,10 +38,9 @@ app.use(function (req, res, next) {
req.session.messages = []
next()
})
app.use(express.json())
app.use(passport.initialize())
app.use(passport.authenticate('session'))
app.use(cors())
//app.use(passport.session());
// Define routes
app.use('/', indexRouter)

View File

@@ -39,12 +39,14 @@ module.exports = function () {
// serializing, and querying the user record by ID from the database when
// deserializing.
passport.serializeUser(function (user, cb) {
console.log('serializing user: ');
process.nextTick(function () {
cb(null, { id: user.id, username: user.username })
})
})
passport.deserializeUser(function (user, cb) {
console.log("DESERIALIZE")
process.nextTick(function () {
return cb(null, user)
})

View File

@@ -4,10 +4,24 @@ const passport = require('passport')
const router = express.Router()
router.post('/login/password', passport.authenticate('local'), function (req, res, next) {
console.log('login cookies: ', req.cookies)
console.log('login is authenticated: ', req.isAuthenticated())
console.log('/login/password req.user: ', req.user)
console.log('login session: ', req.session)
//res.json(req.user)
return res.send('You were authenticated & logged in!\n');
})
router.get('/auth', function (req, res) {
console.log('auth cookies: ', req.cookies)
console.log('in /auth')
console.log('auth is authenticated: ', req.isAuthenticated())
console.log('/auth req.user: ', req.user)
console.log('auth session: ', req.session)
if (req.user) {
res.json(req.user)
res.status(200).end()
} else {
res.statusCode = 403
res.status(401).end()
}
})

View File

@@ -1,7 +1,13 @@
import Vue from 'vue'
import Axios from 'axios'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
const instance = Axios.create({
baseURL: 'https://localhost:3000',
withCredentials: true
})
Vue.use(VueRouter)
const routes = [
@@ -34,4 +40,23 @@ const router = new VueRouter({
routes
})
router.beforeEach((to, from, next) => {
if (to.name === 'Home') {
instance.get('/auth')
.then(response => {
if (response.status === 200) {
next()
} else {
next('/login')
}
})
.catch(function (error) {
console.error(error.response)
next('/login')
})
} else {
next()
}
})
export default router