diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | lib/config.js | 3 | ||||
-rw-r--r-- | lib/realtime.js | 1 | ||||
-rwxr-xr-x | lib/response.js | 4 | ||||
-rw-r--r-- | public/views/body.ejs | 2 | ||||
-rw-r--r-- | public/views/index.ejs | 4 |
6 files changed, 15 insertions, 1 deletions
@@ -118,6 +118,7 @@ Environment variables (will overwrite other server configs) | HMD_PROTOCOL_USESSL | `true` or `false` | set to use ssl protocol for resources path (only applied when domain is set) | | HMD_URL_ADDPORT | `true` or `false` | set to add port on callback url (port 80 or 443 won't applied) (only applied when domain is set) | | HMD_USECDN | `true` or `false` | set to use CDN resources or not (default is `true`) | +| HMD_ALLOW_ANONMYOUS | `true` or `false` | set to allow anonmyous usage (default is `true`) | | HMD_FACEBOOK_CLIENTID | no example | Facebook API client id | | HMD_FACEBOOK_CLIENTSECRET | no example | Facebook API client secret | | HMD_TWITTER_CONSUMERKEY | no example | Twitter API consumer key | @@ -153,6 +154,7 @@ Server settings `config.json` | protocolusessl | `true` or `false` | set to use ssl protocol for resources path (only applied when domain is set) | | urladdport | `true` or `false` | set to add port on callback url (port 80 or 443 won't applied) (only applied when domain is set) | | usecdn | `true` or `false` | set to use CDN resources or not (default is `true`) | +| allowanonmyous | `true` or `false` | set to allow anonmyous usage (default is `true`) | | db | `{ "dialect": "sqlite", "storage": "./db.hackmd.sqlite" }` | set the db configs, [see more here](http://sequelize.readthedocs.org/en/latest/api/sequelize/) | | sslkeypath | `./cert/client.key` | ssl key path (only need when you set usessl) | | sslcertpath | `./cert/hackmd_io.crt` | ssl cert path (only need when you set usessl) | diff --git a/lib/config.js b/lib/config.js index 669fcaa8..fb8d1907 100644 --- a/lib/config.js +++ b/lib/config.js @@ -19,6 +19,8 @@ var urladdport = process.env.HMD_URL_ADDPORT ? (process.env.HMD_URL_ADDPORT === var usecdn = process.env.HMD_USECDN ? (process.env.HMD_USECDN === 'true') : ((typeof config.usecdn === 'boolean') ? config.usecdn : true); +var allowanonmyous = process.env.HMD_ALLOW_ANONMYOUS ? (process.env.HMD_ALLOW_ANONMYOUS === 'true') : ((typeof config.allowanonmyous === 'boolean') ? config.allowanonmyous : true); + // db var db = config.db || { dialect: 'sqlite', @@ -125,6 +127,7 @@ module.exports = { usessl: usessl, serverurl: getserverurl(), usecdn: usecdn, + allowanonmyous: allowanonmyous, db: db, sslkeypath: path.join(cwd, sslkeypath), sslcertpath: path.join(cwd, sslcertpath), diff --git a/lib/realtime.js b/lib/realtime.js index 73f831f4..0b9e0c77 100644 --- a/lib/realtime.js +++ b/lib/realtime.js @@ -763,6 +763,7 @@ function connection(socket) { var note = notes[noteId]; //Only owner can change permission if (note.owner && note.owner == socket.request.user.id) { + if (permission == 'freely' && !config.allowanonmyous) return; note.permission = permission; models.Note.update({ permission: permission diff --git a/lib/response.js b/lib/response.js index aae39851..3f837e71 100755 --- a/lib/response.js +++ b/lib/response.js @@ -60,6 +60,7 @@ function showIndex(req, res, next) { res.render(config.indexpath, { url: config.serverurl, useCDN: config.usecdn, + allowAnonmyous: config.allowanonmyous, facebook: config.facebook, twitter: config.twitter, github: config.github, @@ -92,6 +93,7 @@ function responseHackMD(res, note) { url: config.serverurl, title: title, useCDN: config.usecdn, + allowAnonmyous: config.allowanonmyous, facebook: config.facebook, twitter: config.twitter, github: config.github, @@ -106,6 +108,8 @@ function newNote(req, res, next) { var owner = null; if (req.isAuthenticated()) { owner = req.user.id; + } else if (!config.allowanonmyous) { + return response.errorForbidden(res); } models.Note.create({ ownerId: owner diff --git a/public/views/body.ejs b/public/views/body.ejs index 79f2544e..5de51f3f 100644 --- a/public/views/body.ejs +++ b/public/views/body.ejs @@ -15,7 +15,7 @@ <a id="permissionLabel" class="ui-permission-label text-uppercase" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> </a> <ul class="dropdown-menu" aria-labelledby="permissionLabel"> - <li class="ui-permission-freely"><a><i class="fa fa-leaf fa-fw"></i> Freely - Anyone can edit</a></li> + <li class="ui-permission-freely"<% if(!allowAnonmyous) { %> style="display: none;"<% } %>><a><i class="fa fa-leaf fa-fw"></i> Freely - Anyone can edit</a></li> <li class="ui-permission-editable"><a><i class="fa fa-shield fa-fw"></i> Editable - Signed people can edit</a></li> <li class="ui-permission-locked"><a><i class="fa fa-lock fa-fw"></i> Locked - Only owner can edit</a></li> <li class="ui-permission-private"><a><i class="fa fa-hand-stop-o fa-fw"></i> Private - Only owner can view & edit</a></li> diff --git a/public/views/index.ejs b/public/views/index.ejs index 2bec7de0..8910d83d 100644 --- a/public/views/index.ejs +++ b/public/views/index.ejs @@ -62,13 +62,17 @@ <br> <a type="button" class="btn btn-lg btn-success ui-signin" data-toggle="modal" data-target=".signin-modal" style="min-width: 170px;"><%= __('Sign In') %></a> </span> + <% }%> + <% if((facebook || twitter || github || gitlab || dropbox || google || email) && allowAnonmyous) { %> <span class="ui-or"><%= __('or') %></span> <% }%> + <% if(allowAnonmyous) { %> <span class="ui-signin"> <a href="<%- url %>/new" class="btn btn-lg btn-default" style="min-width: 170px;"><%= __('New guest note') %></a> <br> <br> </span> + <% }%> <div class="lead row" style="width: 90%; margin: 0 auto;"> <div class="col-md-4 inner"> <a href="<%- url %>/features#share-notes"> |