Skip to content

Commit 1d0d87a

Browse files
committed
fix: add cookie secure flag when site is using https
1 parent 7d4627b commit 1d0d87a

4 files changed

Lines changed: 16 additions & 6 deletions

File tree

server/controllers/auth.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ const express = require('express')
44
const ExpressBrute = require('express-brute')
55
const BruteKnex = require('../helpers/brute-knex')
66
const router = express.Router()
7-
const moment = require('moment')
87
const _ = require('lodash')
8+
const commonHelper = require('../helpers/common')
99

1010
const bruteforce = new ExpressBrute(new BruteKnex({
1111
createTable: true,
@@ -70,7 +70,7 @@ router.all('/login/:strategy/callback', async (req, res, next) => {
7070
const authResult = await WIKI.models.users.login({
7171
strategy: req.params.strategy
7272
}, { req, res })
73-
res.cookie('jwt', authResult.jwt, { expires: moment().add(1, 'y').toDate() })
73+
res.cookie('jwt', authResult.jwt, commonHelper.getCookieOpts())
7474

7575
const loginRedirect = req.cookies['loginRedirect']
7676
if (loginRedirect === '/' && authResult.redirect) {
@@ -102,7 +102,7 @@ router.post('/login', bruteforce.prevent, async (req, res, next) => {
102102
password: req.body.pass
103103
}, { req, res })
104104
req.brute.reset()
105-
res.cookie('jwt', authResult.jwt, { expires: moment().add(1, 'y').toDate() })
105+
res.cookie('jwt', authResult.jwt, commonHelper.getCookieOpts())
106106
res.redirect('/')
107107
} catch (err) {
108108
const { formStrategies, socialStrategies } = await WIKI.models.authentication.getStrategiesForLegacyClient()
@@ -152,7 +152,7 @@ router.get('/verify/:token', bruteforce.prevent, async (req, res, next) => {
152152
res.redirect('/login')
153153
} else {
154154
const result = await WIKI.models.users.refreshToken(usr)
155-
res.cookie('jwt', result.token, { expires: moment().add(1, 'years').toDate() })
155+
res.cookie('jwt', result.token, commonHelper.getCookieOpts())
156156
res.redirect('/')
157157
}
158158
} catch (err) {

server/core/auth.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const crypto = require('crypto')
88
const pem2jwk = require('pem-jwk').pem2jwk
99
const randomBytesAsync = require('util').promisify(crypto.randomBytes)
1010

11+
const commonHelper = require('../helpers/common')
1112
const securityHelper = require('../helpers/security')
1213

1314
/* global WIKI */
@@ -154,7 +155,7 @@ module.exports = {
154155
if (req.get('content-type') === 'application/json') {
155156
res.set('new-jwt', newToken.token)
156157
} else {
157-
res.cookie('jwt', newToken.token, { expires: DateTime.utc().plus({ days: 365 }).toJSDate() })
158+
res.cookie('jwt', newToken.token, commonHelper.getCookieOpts())
158159
}
159160

160161
// Avoid caching this response

server/helpers/common.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
/* global WIKI */
2+
13
const _ = require('lodash')
4+
const { DateTime } = require('luxon')
25

36
module.exports = {
47
/**
@@ -38,5 +41,11 @@ module.exports = {
3841
})
3942
return result
4043
}, {})
44+
},
45+
getCookieOpts () {
46+
return {
47+
expires: DateTime.utc().plus({ days: 365 }).toJSDate(),
48+
...(WIKI.config.host.startsWith('https://') ? { secure: true } : {})
49+
}
4150
}
4251
}

server/models/users.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ module.exports = class User extends Model {
502502
if (!usr.isActive) {
503503
throw new WIKI.Error.AuthAccountBanned()
504504
}
505-
505+
506506
await WIKI.models.users.query().patch({
507507
password: newPassword,
508508
mustChangePwd: false

0 commit comments

Comments
 (0)