expressa 2.0.24 → 2.1.0

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.
Files changed (59) hide show
  1. package/auth/index.js +81 -76
  2. package/index.js +314 -304
  3. package/package.json +1 -1
  4. package/.vscode/launch.json +0 -19
  5. package/modules/admin/dist/css/197.e66ce8d8.css +0 -7
  6. package/modules/admin/dist/css/197.e66ce8d8.css.gz +0 -0
  7. package/modules/admin/dist/css/430.e83d8cfe.css +0 -8
  8. package/modules/admin/dist/css/430.e83d8cfe.css.gz +0 -0
  9. package/modules/admin/dist/css/451.c6646d20.css +0 -1
  10. package/modules/admin/dist/css/451.c6646d20.css.gz +0 -0
  11. package/modules/admin/dist/css/566.e66ce8d8.css +0 -7
  12. package/modules/admin/dist/css/566.e66ce8d8.css.gz +0 -0
  13. package/modules/admin/dist/css/569.db9a10c2.css +0 -213
  14. package/modules/admin/dist/css/569.db9a10c2.css.gz +0 -0
  15. package/modules/admin/dist/css/572.513a323e.css +0 -210
  16. package/modules/admin/dist/css/572.513a323e.css.gz +0 -0
  17. package/modules/admin/dist/css/651.e946bda7.css +0 -6
  18. package/modules/admin/dist/css/651.e946bda7.css.gz +0 -0
  19. package/modules/admin/dist/css/750.4086915d.css +0 -2
  20. package/modules/admin/dist/css/750.4086915d.css.gz +0 -0
  21. package/modules/admin/dist/css/950.1fd9d57c.css +0 -7
  22. package/modules/admin/dist/css/950.1fd9d57c.css.gz +0 -0
  23. package/modules/admin/dist/css/app.1c3232a3.css +0 -592
  24. package/modules/admin/dist/css/app.1c3232a3.css.gz +0 -0
  25. package/modules/admin/dist/favicon.ico +0 -0
  26. package/modules/admin/dist/index.html +0 -1
  27. package/modules/admin/dist/static/fonts/element-icons.313f7da.woff +0 -0
  28. package/modules/admin/dist/static/fonts/element-icons.4520188.ttf +0 -0
  29. package/modules/admin/dist/static/img/404.4cf6930.png +0 -0
  30. package/modules/admin/dist/static/js/197.36982650.js +0 -1
  31. package/modules/admin/dist/static/js/197.36982650.js.gz +0 -0
  32. package/modules/admin/dist/static/js/311.25e842dc.js +0 -1
  33. package/modules/admin/dist/static/js/311.25e842dc.js.gz +0 -0
  34. package/modules/admin/dist/static/js/430.53aea612.js +0 -1
  35. package/modules/admin/dist/static/js/430.53aea612.js.gz +0 -0
  36. package/modules/admin/dist/static/js/451.9f6dcdb1.js +0 -1
  37. package/modules/admin/dist/static/js/451.9f6dcdb1.js.gz +0 -0
  38. package/modules/admin/dist/static/js/460.351dad91.js +0 -1
  39. package/modules/admin/dist/static/js/460.351dad91.js.gz +0 -0
  40. package/modules/admin/dist/static/js/550.87e54b29.js +0 -1
  41. package/modules/admin/dist/static/js/550.87e54b29.js.gz +0 -0
  42. package/modules/admin/dist/static/js/569.52dba3a7.js +0 -1
  43. package/modules/admin/dist/static/js/569.52dba3a7.js.gz +0 -0
  44. package/modules/admin/dist/static/js/572.296cfd3b.js +0 -1
  45. package/modules/admin/dist/static/js/572.296cfd3b.js.gz +0 -0
  46. package/modules/admin/dist/static/js/603.98d5f5d9.js +0 -1
  47. package/modules/admin/dist/static/js/603.98d5f5d9.js.gz +0 -0
  48. package/modules/admin/dist/static/js/651.6dca6fbe.js +0 -1
  49. package/modules/admin/dist/static/js/651.6dca6fbe.js.gz +0 -0
  50. package/modules/admin/dist/static/js/653.0dff78dc.js +0 -1
  51. package/modules/admin/dist/static/js/653.0dff78dc.js.gz +0 -0
  52. package/modules/admin/dist/static/js/750.6877a6b8.js +0 -1
  53. package/modules/admin/dist/static/js/750.6877a6b8.js.gz +0 -0
  54. package/modules/admin/dist/static/js/950.4f40455a.js +0 -1
  55. package/modules/admin/dist/static/js/950.4f40455a.js.gz +0 -0
  56. package/modules/admin/dist/static/js/app.2dd732d9.js +0 -2
  57. package/modules/admin/dist/static/js/app.2dd732d9.js.LICENSE.txt +0 -121
  58. package/modules/admin/dist/static/js/app.2dd732d9.js.LICENSE.txt.gz +0 -0
  59. package/modules/admin/dist/static/js/app.2dd732d9.js.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.middleware = async function authMiddleware(req, res, next) {
20
- const key = req.query['access_key'] || req.headers['x-access-key']
21
- if (key) {
22
- if (typeof key == 'string' && req.db['access_keys']) {
23
- const accessKeys = await req.db['access_keys'].find({ key: { $eq: key } }, 0, 1)
24
- if (accessKeys && accessKeys.length > 0) {
25
- const accessKey = accessKeys[0]
26
- // check if access key is still valid
27
- if (accessKey.expires_at >= new Date().toISOString()) {
28
- let user
29
- try {
30
- user = await req.db[accessKey.user_collection].get(accessKey.user_id)
31
- } catch (e) {
32
- req.uerror = 'user no longer exists'
33
- }
34
- if (user && !req.uerror) {
35
- req.uid = user._id
36
- req.ucollection = 'users'
37
- req.user = user
38
- }
39
- }
40
- }
41
- } else {
42
- console.error('Non-string access key sent')
43
- }
44
- }
45
-
46
- req.query = req.query || {}
47
- const token = req.query['token'] || req.headers['x-access-token']
48
- delete req.query['token']
49
- delete req.headers['x-access-token']
50
- let payload
51
- try {
52
- payload = await handler.isLoggedIn(token, req.getSetting('jwt_secret'))
53
- }
54
- catch(e) {
55
- req.uerror = e.message
56
- }
57
- if (payload) {
58
- let user
59
- try {
60
- user = await req.db[payload.collection].get(payload._id)
61
- } catch (e) {
62
- req.uerror = 'user no longer exists'
63
- }
64
- if (user) {
65
- if (req.getSetting('jwt_expire_on_password_change') && user.meta.password_last_updated_at !== payload.timestamp) {
66
- req.uerror = 'jwt expired'
67
- }
68
- if (!req.uerror) {
69
- req.uid = payload._id
70
- req.ucollection = payload.collection
71
- req.user = user
72
- }
73
- }
74
- }
75
- next()
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
+ }