/
logging.js
132 lines (120 loc) Β· 4.63 KB
/
logging.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/**
* user logging templates
* (used by logging model)
* @author adrienjoly, whyd
*/
const snip = require('../snip.js');
const config = require('../models/config.js');
const mainTemplate = require('../templates/mainTemplate.js');
const templateLoader = require('../templates/templateLoader.js');
let loginTemplate = null;
let redirectTemplate = null;
exports.refreshTemplates = function (callback) {
const path = 'app/templates';
loginTemplate = templateLoader.loadTemplate(`${path}/loginPage.html`);
redirectTemplate = templateLoader.loadTemplate(`${path}/redirectPage.html`);
if (callback) callback();
};
exports.refreshTemplates();
exports.renderLoginPage = function (form) {
if (process.appParams.useAuth0AsIdentityProvider) {
console.log(`${process.env.WHYD_URL_PREFIX}/login`);
return exports.htmlRedirect(`${process.env.WHYD_URL_PREFIX}/login`);
}
const params = {
urlPrefix: config.urlPrefix,
title: 'openwhyd',
email: '',
password: '',
pageThumb: mainTemplate.defaultPageMeta.img,
pageDesc: mainTemplate.defaultPageMeta.desc,
head: mainTemplate.analyticsHeading,
};
if (form) {
for (const i in form) // [error, email, password]
params[i] = form[i];
if (form.error) params.message = [{ text: form.error }];
}
//console.log("login form params:", params);
return loginTemplate.render(params);
};
exports.renderUnauthorizedPage = exports.renderLoginPage;
exports.htmlCloseWindow = function () {
return [
'<!DOCTYPE HTML>',
'<html>',
'<head><title>whyd is closing this page...</title></head>',
'<body>You can close this page now :-)<script>window.close();</script></body>',
'</html>',
].join('\n');
};
exports.htmlRedirect = function (url) {
if (url == 'closeWindow') return exports.htmlCloseWindow();
const safeUrl = snip.getSafeOpenwhydURL(url, config.urlPrefix);
if (safeUrl === false)
return `β Unsafe redirect URL: ${snip.htmlEntities(url)}`;
return redirectTemplate.render({ url: safeUrl });
};
exports.renderRedirectPageWithTracking = function (url, title) {
return `<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# whydapp: http://ogp.me/ns/fb/whydapp#">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<meta property="og:image" content="${mainTemplate.defaultPageMeta.img}">
<meta property="og:description" content="${
mainTemplate.defaultPageMeta.desc
}">
<meta property="fb:app_id" content="169250156435902">
<meta property="fb:admins" content="510739408">
<meta property="og:type" content="website">
<meta property="og:url" content="${config.urlPrefix}">
<meta http-equiv="REFRESH" content="3;url=${url}">
<title>${title || 'Openwhyd'} - redirecting...</title>
<link href="/favicon.ico" rel="shortcut icon" type="image/x-icon">
<link href="/favicon.png" rel="icon" type="image/png">
<link rel="image_src" href="${mainTemplate.defaultPageMeta.img}">
<script src="/js/whydtr.js"></script>
</head>
<body class="pgRedirect">
<p>Redirecting to <a href="${url}">${title || url}</a>...</p>
<script>
setTimeout(function(){ window.location.href = "${url}"; }, 2000);
</script>
</body>
</html>
`;
};
exports.renderIframe = function (url, metaOverrides) {
const meta = {
...mainTemplate.defaultPageMeta,
...metaOverrides,
};
return `<!DOCTYPE html>
<html style="margin:0;height:100%;">
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# whydapp: http://ogp.me/ns/fb/whydapp#">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<meta property="og:image" content="${meta.img}">
<meta property="og:description" content="${meta.desc}">
<meta property="fb:app_id" content="169250156435902">
<meta property="fb:admins" content="510739408">
<meta property="og:type" content="website">
<title>${meta.title || 'Openwhyd'}</title>
<link href="/favicon.ico" rel="shortcut icon" type="image/x-icon">
<link href="/favicon.png" rel="icon" type="image/png">
<link rel="image_src" href="${meta.img}">
<script src="/js/whydtr.js"></script>
</head>
<body style="margin:0;height:100%;">
<base target="_blank" />
<iframe src="${url}" width="100%" height="100%" frameBorder="0">
<!-- and, if browser does not support iframes: -->
<p>Your browser does not support iframes. Please click on that link:
<a href="${url}">${meta.title || url}</a>
</p>
</iframe>
</body>
</html>
`;
};