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.
package/lib/config/defaults.js
CHANGED
|
@@ -220,7 +220,8 @@ module.exports = {
|
|
|
220
220
|
to: 'devel@afialapis.com'
|
|
221
221
|
}
|
|
222
222
|
},
|
|
223
|
-
auth: {
|
|
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
|
]
|
package/lib/server/index.js
CHANGED
|
@@ -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.
|
|
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$
|
|
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
package/src/config/defaults.js
CHANGED
package/src/server/index.js
CHANGED
|
@@ -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}
|