miolo 0.0.35 → 0.0.36

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.
@@ -220,7 +220,8 @@ module.exports = {
220
220
  to: 'devel@afialapis.com'
221
221
  }
222
222
  },
223
- auth: {//basic: {
223
+ auth: {
224
+ //basic: {
224
225
  // auth_user: async (username, password) => { return {id: 1} },
225
226
  // realm: '',
226
227
  // paths: [],
@@ -235,6 +236,10 @@ module.exports = {
235
236
  // url_login_redirect: undefined
236
237
  // url_logout_redirect: '/'
237
238
  //}
239
+ guest: {
240
+ make_guest_token: undefined // (session) => ''
241
+
242
+ }
238
243
  },
239
244
  middlewares: [// async (ctx) => {}
240
245
  ]
@@ -55,7 +55,7 @@ function miolo(_x, _x2, _x3) {
55
55
 
56
56
  function _miolo() {
57
57
  _miolo = _asyncToGenerator(function* (sconfig, render, callback) {
58
- var _config$http, _config$auth, _config$auth2;
58
+ var _config$http, _config$auth, _config$auth2, _config$auth3;
59
59
 
60
60
  // Init some pieces
61
61
  var config = (0, _config.init_config)(sconfig);
@@ -87,7 +87,15 @@ function _miolo() {
87
87
 
88
88
  (0, _catch_js_error.init_route_catch_js_error)(app, '/sys/jserror'); // auth middleware
89
89
 
90
- if (config !== null && config !== void 0 && (_config$auth = config.auth) !== null && _config$auth !== void 0 && _config$auth.basic) {
90
+ if (config !== null && config !== void 0 && (_config$auth = config.auth) !== null && _config$auth !== void 0 && _config$auth.guest) {
91
+ var {
92
+ init_guest_auth_middleware
93
+ } = require("./middleware/auth/guest");
94
+
95
+ init_guest_auth_middleware(app, config.auth.guest, config === null || config === void 0 ? void 0 : config.session, logger);
96
+ }
97
+
98
+ if (config !== null && config !== void 0 && (_config$auth2 = config.auth) !== null && _config$auth2 !== void 0 && _config$auth2.basic) {
91
99
  var {
92
100
  init_basic_auth_middleware
93
101
  } = require("./middleware/auth/basic");
@@ -95,7 +103,7 @@ function _miolo() {
95
103
  init_basic_auth_middleware(app, config.auth.basic);
96
104
  }
97
105
 
98
- if (config !== null && config !== void 0 && (_config$auth2 = config.auth) !== null && _config$auth2 !== void 0 && _config$auth2.passport) {
106
+ if (config !== null && config !== void 0 && (_config$auth3 = config.auth) !== null && _config$auth3 !== void 0 && _config$auth3.passport) {
99
107
  var {
100
108
  init_passport_auth_middleware
101
109
  } = require("./middleware/auth/passport");
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.init_guest_auth_middleware = void 0;
7
+
8
+ var _jwtSimple = _interopRequireDefault(require("jwt-simple"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
13
+
14
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
15
+
16
+ function _guest_token_make_with_jwt(session, logger) {
17
+ var _session$options;
18
+
19
+ var buid = Math.random().toString();
20
+ var secret = session === null || session === void 0 ? void 0 : session.secret;
21
+
22
+ if (!secret) {
23
+ secret = 'miolo_unsafe_secret';
24
+ logger.error('Guest token made with an unsafe secret string. Please, configure your own through session.secret.');
25
+ }
26
+
27
+ var maxAge = session === null || session === void 0 ? void 0 : (_session$options = session.options) === null || _session$options === void 0 ? void 0 : _session$options.maxAge;
28
+
29
+ if (isNaN(maxAge)) {
30
+ maxAge = 86400;
31
+ }
32
+
33
+ var payload = {
34
+ admin: false,
35
+ buid: buid,
36
+ expires: Date.now() + maxAge
37
+ };
38
+ return _jwtSimple.default.encode(payload, secret);
39
+ }
40
+
41
+ var init_guest_auth_middleware = (app, options, session, logger) => {
42
+ var _make_guest_token = () => {
43
+ try {
44
+ var {
45
+ make_guest_token
46
+ } = options;
47
+
48
+ if (make_guest_token != undefined) {
49
+ return make_guest_token(session || {});
50
+ }
51
+ } catch (_) {}
52
+
53
+ return _guest_token_make_with_jwt(session || {}, logger);
54
+ };
55
+
56
+ function guest_auth_middleware(_x, _x2) {
57
+ return _guest_auth_middleware.apply(this, arguments);
58
+ }
59
+
60
+ function _guest_auth_middleware() {
61
+ _guest_auth_middleware = _asyncToGenerator(function* (ctx, next) {
62
+ // Try to get our token from headers (server) or cookies (client)
63
+ var token = ctx.cookies.get('token') || ctx.headers['token'];
64
+
65
+ if (token) {
66
+ token = yield _make_guest_token();
67
+ }
68
+
69
+ ctx.cookies.set('token', token);
70
+ ctx.user = {
71
+ name: 'guest',
72
+ token
73
+ };
74
+ yield next();
75
+ });
76
+ return _guest_auth_middleware.apply(this, arguments);
77
+ }
78
+
79
+ app.use(guest_auth_middleware);
80
+ };
81
+
82
+ exports.init_guest_auth_middleware = init_guest_auth_middleware;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "miolo",
3
- "version": "0.0.35",
3
+ "version": "0.0.36",
4
4
  "description": "miolo",
5
5
  "main": "lib/index.js",
6
6
  "author": "Afialapis <info@afialapis.com>",
@@ -231,6 +231,9 @@ module.exports= {
231
231
  // url_login_redirect: undefined
232
232
  // url_logout_redirect: '/'
233
233
  //}
234
+ guest: {
235
+ make_guest_token: undefined // (session) => ''
236
+ }
234
237
  },
235
238
  middlewares: [
236
239
  // async (ctx) => {}
@@ -62,6 +62,11 @@ async function miolo(sconfig, render, callback) {
62
62
  init_route_catch_js_error(app, '/sys/jserror')
63
63
 
64
64
  // auth middleware
65
+ if (config?.auth?.guest) {
66
+ const {init_guest_auth_middleware} = require('./middleware/auth/guest')
67
+ init_guest_auth_middleware(app, config.auth.guest, config?.session, logger)
68
+ }
69
+
65
70
  if (config?.auth?.basic) {
66
71
  const {init_basic_auth_middleware} = require('./middleware/auth/basic')
67
72
  init_basic_auth_middleware(app, config.auth.basic)
@@ -0,0 +1,58 @@
1
+ import jwt from 'jwt-simple'
2
+
3
+ function _guest_token_make_with_jwt(session, logger) {
4
+ const buid= Math.random().toString()
5
+ let secret = session?.secret
6
+ if (!secret) {
7
+ secret= 'miolo_unsafe_secret'
8
+ logger.error('Guest token made with an unsafe secret string. Please, configure your own through session.secret.')
9
+ }
10
+ let maxAge = session?.options?.maxAge
11
+ if (isNaN(maxAge)) {
12
+ maxAge= 86400
13
+ }
14
+ const payload = {
15
+ admin : false,
16
+ buid : buid,
17
+ expires: Date.now() + maxAge
18
+ }
19
+ return jwt.encode(payload, secret)
20
+ }
21
+
22
+
23
+ const init_guest_auth_middleware = ( app, options, session, logger ) => {
24
+
25
+ const _make_guest_token = () => {
26
+ try {
27
+ let {make_guest_token} = options
28
+ if (make_guest_token!=undefined) {
29
+ return make_guest_token(session || {})
30
+ }
31
+ } catch(_) {}
32
+
33
+ return _guest_token_make_with_jwt(session || {}, logger)
34
+ }
35
+
36
+ async function guest_auth_middleware(ctx, next) {
37
+
38
+ // Try to get our token from headers (server) or cookies (client)
39
+ let token= ctx.cookies.get('token') || ctx.headers['token']
40
+
41
+ if (token) {
42
+ token = await _make_guest_token()
43
+ }
44
+
45
+ ctx.cookies.set('token', token)
46
+ ctx.user = {
47
+ name: 'guest',
48
+ token
49
+ }
50
+
51
+ await next()
52
+ }
53
+
54
+ app.use(guest_auth_middleware)
55
+
56
+ }
57
+
58
+ export {init_guest_auth_middleware}