mirror of
https://github.com/requarks/wiki.git
synced 2026-08-19 01:04:45 -05:00
fix: add cookie secure flag when site is using https
This commit is contained in:
@@ -4,8 +4,8 @@ const express = require('express')
|
|||||||
const ExpressBrute = require('express-brute')
|
const ExpressBrute = require('express-brute')
|
||||||
const BruteKnex = require('../helpers/brute-knex')
|
const BruteKnex = require('../helpers/brute-knex')
|
||||||
const router = express.Router()
|
const router = express.Router()
|
||||||
const moment = require('moment')
|
|
||||||
const _ = require('lodash')
|
const _ = require('lodash')
|
||||||
|
const commonHelper = require('../helpers/common')
|
||||||
|
|
||||||
const bruteforce = new ExpressBrute(new BruteKnex({
|
const bruteforce = new ExpressBrute(new BruteKnex({
|
||||||
createTable: true,
|
createTable: true,
|
||||||
@@ -70,7 +70,7 @@ router.all('/login/:strategy/callback', async (req, res, next) => {
|
|||||||
const authResult = await WIKI.models.users.login({
|
const authResult = await WIKI.models.users.login({
|
||||||
strategy: req.params.strategy
|
strategy: req.params.strategy
|
||||||
}, { req, res })
|
}, { req, res })
|
||||||
res.cookie('jwt', authResult.jwt, { expires: moment().add(1, 'y').toDate() })
|
res.cookie('jwt', authResult.jwt, commonHelper.getCookieOpts())
|
||||||
|
|
||||||
const loginRedirect = req.cookies['loginRedirect']
|
const loginRedirect = req.cookies['loginRedirect']
|
||||||
if (loginRedirect === '/' && authResult.redirect) {
|
if (loginRedirect === '/' && authResult.redirect) {
|
||||||
@@ -102,7 +102,7 @@ router.post('/login', bruteforce.prevent, async (req, res, next) => {
|
|||||||
password: req.body.pass
|
password: req.body.pass
|
||||||
}, { req, res })
|
}, { req, res })
|
||||||
req.brute.reset()
|
req.brute.reset()
|
||||||
res.cookie('jwt', authResult.jwt, { expires: moment().add(1, 'y').toDate() })
|
res.cookie('jwt', authResult.jwt, commonHelper.getCookieOpts())
|
||||||
res.redirect('/')
|
res.redirect('/')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
const { formStrategies, socialStrategies } = await WIKI.models.authentication.getStrategiesForLegacyClient()
|
const { formStrategies, socialStrategies } = await WIKI.models.authentication.getStrategiesForLegacyClient()
|
||||||
@@ -152,7 +152,7 @@ router.get('/verify/:token', bruteforce.prevent, async (req, res, next) => {
|
|||||||
res.redirect('/login')
|
res.redirect('/login')
|
||||||
} else {
|
} else {
|
||||||
const result = await WIKI.models.users.refreshToken(usr)
|
const result = await WIKI.models.users.refreshToken(usr)
|
||||||
res.cookie('jwt', result.token, { expires: moment().add(1, 'years').toDate() })
|
res.cookie('jwt', result.token, commonHelper.getCookieOpts())
|
||||||
res.redirect('/')
|
res.redirect('/')
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
+2
-1
@@ -8,6 +8,7 @@ const crypto = require('crypto')
|
|||||||
const pem2jwk = require('pem-jwk').pem2jwk
|
const pem2jwk = require('pem-jwk').pem2jwk
|
||||||
const randomBytesAsync = require('util').promisify(crypto.randomBytes)
|
const randomBytesAsync = require('util').promisify(crypto.randomBytes)
|
||||||
|
|
||||||
|
const commonHelper = require('../helpers/common')
|
||||||
const securityHelper = require('../helpers/security')
|
const securityHelper = require('../helpers/security')
|
||||||
|
|
||||||
/* global WIKI */
|
/* global WIKI */
|
||||||
@@ -154,7 +155,7 @@ module.exports = {
|
|||||||
if (req.get('content-type') === 'application/json') {
|
if (req.get('content-type') === 'application/json') {
|
||||||
res.set('new-jwt', newToken.token)
|
res.set('new-jwt', newToken.token)
|
||||||
} else {
|
} else {
|
||||||
res.cookie('jwt', newToken.token, { expires: DateTime.utc().plus({ days: 365 }).toJSDate() })
|
res.cookie('jwt', newToken.token, commonHelper.getCookieOpts())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Avoid caching this response
|
// Avoid caching this response
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
|
/* global WIKI */
|
||||||
|
|
||||||
const _ = require('lodash')
|
const _ = require('lodash')
|
||||||
|
const { DateTime } = require('luxon')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
/**
|
/**
|
||||||
@@ -38,5 +41,11 @@ module.exports = {
|
|||||||
})
|
})
|
||||||
return result
|
return result
|
||||||
}, {})
|
}, {})
|
||||||
|
},
|
||||||
|
getCookieOpts () {
|
||||||
|
return {
|
||||||
|
expires: DateTime.utc().plus({ days: 365 }).toJSDate(),
|
||||||
|
...(WIKI.config.host.startsWith('https://') ? { secure: true } : {})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -502,7 +502,7 @@ module.exports = class User extends Model {
|
|||||||
if (!usr.isActive) {
|
if (!usr.isActive) {
|
||||||
throw new WIKI.Error.AuthAccountBanned()
|
throw new WIKI.Error.AuthAccountBanned()
|
||||||
}
|
}
|
||||||
|
|
||||||
await WIKI.models.users.query().patch({
|
await WIKI.models.users.query().patch({
|
||||||
password: newPassword,
|
password: newPassword,
|
||||||
mustChangePwd: false
|
mustChangePwd: false
|
||||||
|
|||||||
Reference in New Issue
Block a user