expressa 2.0.24 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth/index.js +81 -76
- package/index.js +314 -304
- package/modules/admin/dist/index.html +1 -1
- package/modules/admin/dist/static/js/{app.2dd732d9.js → app.4f835176.js} +2 -2
- package/modules/admin/dist/static/js/{app.2dd732d9.js.gz → app.4f835176.js.gz} +0 -0
- package/package.json +1 -1
- package/.vscode/launch.json +0 -19
- /package/modules/admin/dist/static/js/{197.36982650.js → 197.f9e1ba84.js} +0 -0
- /package/modules/admin/dist/static/js/{197.36982650.js.gz → 197.f9e1ba84.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{311.25e842dc.js → 311.ca6d5976.js} +0 -0
- /package/modules/admin/dist/static/js/{311.25e842dc.js.gz → 311.ca6d5976.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{430.53aea612.js → 430.86219146.js} +0 -0
- /package/modules/admin/dist/static/js/{430.53aea612.js.gz → 430.86219146.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{451.9f6dcdb1.js → 451.5e934bb6.js} +0 -0
- /package/modules/admin/dist/static/js/{451.9f6dcdb1.js.gz → 451.5e934bb6.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{460.351dad91.js → 460.b54cbaab.js} +0 -0
- /package/modules/admin/dist/static/js/{460.351dad91.js.gz → 460.b54cbaab.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{550.87e54b29.js → 550.938e8b79.js} +0 -0
- /package/modules/admin/dist/static/js/{550.87e54b29.js.gz → 550.938e8b79.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{569.52dba3a7.js → 569.128a8e27.js} +0 -0
- /package/modules/admin/dist/static/js/{569.52dba3a7.js.gz → 569.128a8e27.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{572.296cfd3b.js → 572.b3b13b2d.js} +0 -0
- /package/modules/admin/dist/static/js/{572.296cfd3b.js.gz → 572.b3b13b2d.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{603.98d5f5d9.js → 603.dc05e481.js} +0 -0
- /package/modules/admin/dist/static/js/{603.98d5f5d9.js.gz → 603.dc05e481.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{651.6dca6fbe.js → 651.29b10271.js} +0 -0
- /package/modules/admin/dist/static/js/{651.6dca6fbe.js.gz → 651.29b10271.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{653.0dff78dc.js → 653.9b512bd1.js} +0 -0
- /package/modules/admin/dist/static/js/{653.0dff78dc.js.gz → 653.9b512bd1.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{750.6877a6b8.js → 750.0b1c247a.js} +0 -0
- /package/modules/admin/dist/static/js/{750.6877a6b8.js.gz → 750.0b1c247a.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{950.4f40455a.js → 950.fe12a66b.js} +0 -0
- /package/modules/admin/dist/static/js/{950.4f40455a.js.gz → 950.fe12a66b.js.gz} +0 -0
- /package/modules/admin/dist/static/js/{app.2dd732d9.js.LICENSE.txt → app.4f835176.js.LICENSE.txt} +0 -0
- /package/modules/admin/dist/static/js/{app.2dd732d9.js.LICENSE.txt.gz → app.4f835176.js.LICENSE.txt.gz} +0 -0
package/auth/index.js
CHANGED
|
@@ -1,76 +1,81 @@
|
|
|
1
|
-
const bcrypt = require('bcryptjs')
|
|
2
|
-
const handler = require('./jwt')
|
|
3
|
-
|
|
4
|
-
exports.isHashed = function (string) {
|
|
5
|
-
return string && string.length === 60 && string[0] === '$'
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
exports.createHash = function (password) {
|
|
9
|
-
const salt = bcrypt.genSaltSync(10)
|
|
10
|
-
return bcrypt.hashSync(password, salt)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
exports.isValidPassword = function (password, hashedPassword) {
|
|
14
|
-
return bcrypt.compareSync(password, hashedPassword)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
exports.doLogin = handler.doLogin
|
|
18
|
-
|
|
19
|
-
exports.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
req.
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
req.
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
1
|
+
const bcrypt = require('bcryptjs')
|
|
2
|
+
const handler = require('./jwt')
|
|
3
|
+
|
|
4
|
+
exports.isHashed = function (string) {
|
|
5
|
+
return string && string.length === 60 && string[0] === '$'
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
exports.createHash = function (password) {
|
|
9
|
+
const salt = bcrypt.genSaltSync(10)
|
|
10
|
+
return bcrypt.hashSync(password, salt)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
exports.isValidPassword = function (password, hashedPassword) {
|
|
14
|
+
return bcrypt.compareSync(password, hashedPassword)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
exports.doLogin = handler.doLogin
|
|
18
|
+
|
|
19
|
+
exports.getTokenError = function (req) {
|
|
20
|
+
if (!req.uerror) return {}
|
|
21
|
+
return { tokenError: req.uerror === 'jwt expired' ? 'expired token' : 'jwt error' }
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.middleware = async function authMiddleware(req, res, next) {
|
|
25
|
+
const key = req.query['access_key'] || req.headers['x-access-key']
|
|
26
|
+
if (key) {
|
|
27
|
+
if (typeof key == 'string' && req.db['access_keys']) {
|
|
28
|
+
const accessKeys = await req.db['access_keys'].find({ key: { $eq: key } }, 0, 1)
|
|
29
|
+
if (accessKeys && accessKeys.length > 0) {
|
|
30
|
+
const accessKey = accessKeys[0]
|
|
31
|
+
// check if access key is still valid
|
|
32
|
+
if (accessKey.expires_at >= new Date().toISOString()) {
|
|
33
|
+
let user
|
|
34
|
+
try {
|
|
35
|
+
user = await req.db[accessKey.user_collection].get(accessKey.user_id)
|
|
36
|
+
} catch (e) {
|
|
37
|
+
req.uerror = 'user no longer exists'
|
|
38
|
+
}
|
|
39
|
+
if (user && !req.uerror) {
|
|
40
|
+
req.uid = user._id
|
|
41
|
+
req.ucollection = 'users'
|
|
42
|
+
req.user = user
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
console.error('Non-string access key sent')
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
req.query = req.query || {}
|
|
52
|
+
const token = req.query['token'] || req.headers['x-access-token']
|
|
53
|
+
delete req.query['token']
|
|
54
|
+
delete req.headers['x-access-token']
|
|
55
|
+
let payload
|
|
56
|
+
try {
|
|
57
|
+
payload = await handler.isLoggedIn(token, req.getSetting('jwt_secret'))
|
|
58
|
+
}
|
|
59
|
+
catch(e) {
|
|
60
|
+
req.uerror = e.message
|
|
61
|
+
}
|
|
62
|
+
if (payload) {
|
|
63
|
+
let user
|
|
64
|
+
try {
|
|
65
|
+
user = await req.db[payload.collection].get(payload._id)
|
|
66
|
+
} catch (e) {
|
|
67
|
+
req.uerror = 'user no longer exists'
|
|
68
|
+
}
|
|
69
|
+
if (user) {
|
|
70
|
+
if (req.getSetting('jwt_expire_on_password_change') && user.meta.password_last_updated_at !== payload.timestamp) {
|
|
71
|
+
req.uerror = 'jwt expired'
|
|
72
|
+
}
|
|
73
|
+
if (!req.uerror) {
|
|
74
|
+
req.uid = payload._id
|
|
75
|
+
req.ucollection = payload.collection
|
|
76
|
+
req.user = user
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
next()
|
|
81
|
+
}
|