Merge remote-tracking branch 'upstream/master' into DepauMD
This commit is contained in:
commit
283938b35c
12 changed files with 23 additions and 19 deletions
|
@ -68,6 +68,7 @@ Just to more confusion: We are still friends with HackMD :heart:
|
||||||
- Node.js 6.x or up (test up to 7.5.0) and <10.x
|
- Node.js 6.x or up (test up to 7.5.0) and <10.x
|
||||||
- Database (PostgreSQL, MySQL, MariaDB, SQLite, MSSQL) use charset `utf8`
|
- Database (PostgreSQL, MySQL, MariaDB, SQLite, MSSQL) use charset `utf8`
|
||||||
- npm (and its dependencies, especially [uWebSockets](https://github.com/uWebSockets/uWebSockets#nodejs-developers), [node-gyp](https://github.com/nodejs/node-gyp#installation))
|
- npm (and its dependencies, especially [uWebSockets](https://github.com/uWebSockets/uWebSockets#nodejs-developers), [node-gyp](https://github.com/nodejs/node-gyp#installation))
|
||||||
|
- `libssl-dev` for building scrypt (see [here](https://github.com/ml1nk/node-scrypt/blob/master/README.md#installation-instructions) for further information)
|
||||||
- For **building** CodiMD we recommend to use a machine with at least **2GB** RAM
|
- For **building** CodiMD we recommend to use a machine with at least **2GB** RAM
|
||||||
|
|
||||||
### Instructions
|
### Instructions
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
"loglevel": "info",
|
"loglevel": "info",
|
||||||
"hsts": {
|
"hsts": {
|
||||||
"enable": true,
|
"enable": true,
|
||||||
"maxAgeSeconds": "31536000",
|
"maxAgeSeconds": 31536000,
|
||||||
"includeSubdomains": true,
|
"includeSubdomains": true,
|
||||||
"preload": true
|
"preload": true
|
||||||
},
|
},
|
||||||
|
|
|
@ -14,7 +14,7 @@ module.exports = {
|
||||||
useSSL: toBooleanConfig(process.env.CMD_USESSL),
|
useSSL: toBooleanConfig(process.env.CMD_USESSL),
|
||||||
hsts: {
|
hsts: {
|
||||||
enable: toBooleanConfig(process.env.CMD_HSTS_ENABLE),
|
enable: toBooleanConfig(process.env.CMD_HSTS_ENABLE),
|
||||||
maxAgeSeconds: process.env.CMD_HSTS_MAX_AGE,
|
maxAgeSeconds: toIntegerConfig(process.env.CMD_HSTS_MAX_AGE),
|
||||||
includeSubdomains: toBooleanConfig(process.env.CMD_HSTS_INCLUDE_SUBDOMAINS),
|
includeSubdomains: toBooleanConfig(process.env.CMD_HSTS_INCLUDE_SUBDOMAINS),
|
||||||
preload: toBooleanConfig(process.env.CMD_HSTS_PRELOAD)
|
preload: toBooleanConfig(process.env.CMD_HSTS_PRELOAD)
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,7 +10,7 @@ module.exports = {
|
||||||
useSSL: toBooleanConfig(process.env.HMD_USESSL),
|
useSSL: toBooleanConfig(process.env.HMD_USESSL),
|
||||||
hsts: {
|
hsts: {
|
||||||
enable: toBooleanConfig(process.env.HMD_HSTS_ENABLE),
|
enable: toBooleanConfig(process.env.HMD_HSTS_ENABLE),
|
||||||
maxAgeSeconds: process.env.HMD_HSTS_MAX_AGE,
|
maxAgeSeconds: toIntegerConfig(process.env.HMD_HSTS_MAX_AGE),
|
||||||
includeSubdomains: toBooleanConfig(process.env.HMD_HSTS_INCLUDE_SUBDOMAINS),
|
includeSubdomains: toBooleanConfig(process.env.HMD_HSTS_INCLUDE_SUBDOMAINS),
|
||||||
preload: toBooleanConfig(process.env.HMD_HSTS_PRELOAD)
|
preload: toBooleanConfig(process.env.HMD_HSTS_PRELOAD)
|
||||||
},
|
},
|
||||||
|
|
|
@ -128,7 +128,7 @@ if (config.gitlab && config.gitlab.version !== 'v4' && config.gitlab.version !==
|
||||||
config.gitlab.version = 'v4'
|
config.gitlab.version = 'v4'
|
||||||
}
|
}
|
||||||
// If gitlab scope is api, enable snippets Export/import
|
// If gitlab scope is api, enable snippets Export/import
|
||||||
config.isGitlabSnippetsEnable = (!config.gitlab.scope || config.gitlab.scope === 'api')
|
config.isGitlabSnippetsEnable = (!config.gitlab.scope || config.gitlab.scope === 'api') && config.isGitLabEnable
|
||||||
|
|
||||||
// Only update i18n files in development setups
|
// Only update i18n files in development setups
|
||||||
config.updateI18nFiles = (env === Environment.development)
|
config.updateI18nFiles = (env === Environment.development)
|
||||||
|
|
|
@ -23,7 +23,7 @@ var response = {
|
||||||
responseError(res, '403', 'Forbidden', 'oh no.')
|
responseError(res, '403', 'Forbidden', 'oh no.')
|
||||||
} else {
|
} else {
|
||||||
req.flash('error', 'You are not allowed to access this page. Maybe try logging in?')
|
req.flash('error', 'You are not allowed to access this page. Maybe try logging in?')
|
||||||
res.redirect(config.serverURL)
|
res.redirect(config.serverURL + '/')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
errorNotFound: function (res) {
|
errorNotFound: function (res) {
|
||||||
|
|
|
@ -11,7 +11,8 @@ let googleAuth = module.exports = Router()
|
||||||
passport.use(new GoogleStrategy({
|
passport.use(new GoogleStrategy({
|
||||||
clientID: config.google.clientID,
|
clientID: config.google.clientID,
|
||||||
clientSecret: config.google.clientSecret,
|
clientSecret: config.google.clientSecret,
|
||||||
callbackURL: config.serverURL + '/auth/google/callback'
|
callbackURL: config.serverURL + '/auth/google/callback',
|
||||||
|
userProfileURL: "https://www.googleapis.com/oauth2/v3/userinfo"
|
||||||
}, passportGeneralCallback))
|
}, passportGeneralCallback))
|
||||||
|
|
||||||
googleAuth.get('/auth/google', function (req, res, next) {
|
googleAuth.get('/auth/google', function (req, res, next) {
|
||||||
|
|
|
@ -113,5 +113,7 @@
|
||||||
"Delete user": "Delete user",
|
"Delete user": "Delete user",
|
||||||
"Export user data": "Export user data",
|
"Export user data": "Export user data",
|
||||||
"Help us translating on %s": "Help us translating on %s",
|
"Help us translating on %s": "Help us translating on %s",
|
||||||
"Source Code": "Source Code"
|
"Source Code": "Source Code",
|
||||||
|
"Powered by %s": "Powered by %s",
|
||||||
|
"Register": "Register"
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,8 +110,8 @@
|
||||||
"Terms of Use": "Conditions d'utilisation",
|
"Terms of Use": "Conditions d'utilisation",
|
||||||
"Do you really want to delete your user account?": "Voulez-vous vraiment supprimer votre compte utilisateur",
|
"Do you really want to delete your user account?": "Voulez-vous vraiment supprimer votre compte utilisateur",
|
||||||
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Cela supprimera votre compte, toutes les notes dont vous êtes propriétaire et supprimera toute référence à votre compte dans les autres notes.",
|
"This will delete your account, all notes that are owned by you and remove all references to your account from other notes.": "Cela supprimera votre compte, toutes les notes dont vous êtes propriétaire et supprimera toute référence à votre compte dans les autres notes.",
|
||||||
"Delete user": "Suprrimez l'utilisteur",
|
"Delete user": "Supprimer l'utilisteur",
|
||||||
"Export user data": "Exportez les données utilisateur",
|
"Export user data": "Exportez les données utilisateur",
|
||||||
"Help us translating on %s": "Aidez nous à traduire sur %s",
|
"Help us translating on %s": "Aidez nous à traduire sur %s",
|
||||||
"Source Code": "Code source"
|
"Source Code": "Code source"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1134,7 +1134,7 @@ const emojijsPlugin = new Plugin(
|
||||||
|
|
||||||
(match, utils) => {
|
(match, utils) => {
|
||||||
const emoji = match[1].toLowerCase()
|
const emoji = match[1].toLowerCase()
|
||||||
const div = $(`<img class="emoji" src="${serverurl}/build/emojify.js/dist/images/basic/${emoji}.png"></img>`)
|
const div = $(`<img class="emoji" alt=":${emoji}:" src="${serverurl}/build/emojify.js/dist/images/basic/${emoji}.png"></img>`)
|
||||||
return div[0].outerHTML
|
return div[0].outerHTML
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -150,7 +150,7 @@
|
||||||
<option value="id">Bahasa Indonesia</option>
|
<option value="id">Bahasa Indonesia</option>
|
||||||
</select>
|
</select>
|
||||||
<p>
|
<p>
|
||||||
Powered by <a href="https://codimd.org">CodiMD</a> | <a href="<%- serverURL %>/s/release-notes" target="_blank" rel="noopener"><%= __('Releases') %></a>| <a href="<%- sourceURL %>" target="_blank" rel="noopener"><%= __('Source Code') %></a><% if(privacyStatement) { %> | <a href="<%- serverURL %>/s/privacy" target="_blank" rel="noopener"><%= __('Privacy') %></a><% } %><% if(termsOfUse) { %> | <a href="<%- serverURL %>/s/terms-of-use" target="_blank" rel="noopener"><%= __('Terms of Use') %></a><% } %>
|
<%- __('Powered by %s', '<a href="https://codimd.org">CodiMD</a>') %> | <a href="<%- serverURL %>/s/release-notes" target="_blank" rel="noopener"><%= __('Releases') %></a>| <a href="<%- sourceURL %>" target="_blank" rel="noopener"><%= __('Source Code') %></a><% if(privacyStatement) { %> | <a href="<%- serverURL %>/s/privacy" target="_blank" rel="noopener"><%= __('Privacy') %></a><% } %><% if(termsOfUse) { %> | <a href="<%- serverURL %>/s/terms-of-use" target="_blank" rel="noopener"><%= __('Terms of Use') %></a><% } %>
|
||||||
</p>
|
</p>
|
||||||
<h6 class="social-foot">
|
<h6 class="social-foot">
|
||||||
<%- __('Follow us on %s and %s.', '<a href="https://github.com/hackmdio/CodiMD" target="_blank" rel="noopener"><i class="fa fa-github"></i> GitHub</a>, <a href="https://riot.im/app/#/room/#codimd:matrix.org" target="_blank" rel="noopener"><i class="fa fa-comments"></i> Riot</a>', '<a href="https://translate.codimd.org" target="_blank" rel="noopener"><i class="fa fa-globe"></i> POEditor</a>') %>
|
<%- __('Follow us on %s and %s.', '<a href="https://github.com/hackmdio/CodiMD" target="_blank" rel="noopener"><i class="fa fa-github"></i> GitHub</a>, <a href="https://riot.im/app/#/room/#codimd:matrix.org" target="_blank" rel="noopener"><i class="fa fa-comments"></i> Riot</a>', '<a href="https://translate.codimd.org" target="_blank" rel="noopener"><i class="fa fa-globe"></i> POEditor</a>') %>
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
<hr>
|
<hr>
|
||||||
<% }%>
|
<% }%>
|
||||||
<% if (authProviders.ldap) { %>
|
<% if (authProviders.ldap) { %>
|
||||||
<h4>Via <% if (authProviders.ldapProviderName) { %> <%= authProviders.ldapProviderName %> (LDAP) <% } else { %> LDAP <% } %></h4>
|
<h4><%= __('Sign in via %s', authProviders.ldapProviderName ? authProviders.ldapProviderName + ' (LDAP)' : 'LDAP') %></h4>
|
||||||
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
|
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/auth/ldap">Sign in</button>
|
<button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/auth/ldap"><%= __('Sign In') %></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
<hr>
|
<hr>
|
||||||
<% }%>
|
<% }%>
|
||||||
<% if (authProviders.openID) { %>
|
<% if (authProviders.openID) { %>
|
||||||
<h4>OpenID</h4>
|
<h4><%= __('Sign in via %s', 'OpenID') %></h4>
|
||||||
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
|
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/auth/openid">Sign in</button>
|
<button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/auth/openid"><%= __('Sign In') %></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -101,11 +101,11 @@
|
||||||
<hr>
|
<hr>
|
||||||
<% }%>
|
<% }%>
|
||||||
<% if (authProviders.email) { %>
|
<% if (authProviders.email) { %>
|
||||||
<h4>Via Email</h4>
|
<h4><%= __('Sign in via %s', 'E-Mail') %></h4>
|
||||||
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
|
<form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<input type="email" class="form-control" name="email" placeholder="Email" required>
|
<input type="email" class="form-control" name="email" placeholder="E-Mail" required>
|
||||||
<span class="help-block control-label with-errors" style="display: inline;"></span>
|
<span class="help-block control-label with-errors" style="display: inline;"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -117,8 +117,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/login">Sign in</button>
|
<button type="submit" class="btn btn-primary" formaction="<%- serverURL %>/login"><%= __('Sign In') %></button>
|
||||||
<% if (authProviders.allowEmailRegister) { %><button type="submit" class="btn btn-default" formaction="<%- serverURL %>/register">Register</button><% }%>
|
<% if (authProviders.allowEmailRegister) { %><button type="submit" class="btn btn-default" formaction="<%- serverURL %>/register"><%= __('Register') %></button><% }%>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
Loading…
Reference in a new issue