diff options
author | Sheogorath | 2017-01-12 04:25:58 +0100 |
---|---|---|
committer | Sheogorath | 2017-01-12 13:54:45 +0100 |
commit | 747629e549fb5c32e1acf18e24bfc6a7e1cd5b0c (patch) | |
tree | c4861ce189556858a88a9d2843addcc84ae77eb8 | |
parent | a8068d38d589a1b8ed008f737d42ed35df4bfd2b (diff) |
Add `allowemailregister` option
-rw-r--r-- | README.md | 6 | ||||
-rw-r--r-- | app.js | 52 | ||||
-rw-r--r-- | lib/config.js | 2 | ||||
-rwxr-xr-x | lib/response.js | 1 | ||||
-rw-r--r-- | public/views/signin-modal.ejs | 2 |
5 files changed, 35 insertions, 28 deletions
@@ -150,7 +150,8 @@ Environment variables (will overwrite other server configs) | HMD_LDAP_TLS_CA | no example | Root CA for LDAP TLS in PEM format | | HMD_LDAP_PROVIDERNAME | My institution | Optional name to be displayed at login form indicating the LDAP provider | | HMD_IMGUR_CLIENTID | no example | Imgur API client id | -| HMD_EMAIL | `true` or `false` | set to allow email register and signin | +| HMD_EMAIL | `true` or `false` | set to allow email signin | +| HMD_ALLOW_EMAIL_REGISTER | `true` or `false` | set to allow email register | | HMD_IMAGE_UPLOAD_TYPE | `imgur`, `s3` or `filesystem` | Where to upload image. For S3, see our [S3 Image Upload Guide](docs/guides/s3-image-upload.md) | | HMD_S3_ACCESS_KEY_ID | no example | AWS access key id | | HMD_S3_SECRET_ACCESS_KEY | no example | AWS secret key | @@ -194,7 +195,8 @@ Server settings `config.json` | heartbeatinterval | `5000` | socket.io heartbeat interval | | heartbeattimeout | `10000` | socket.io heartbeat timeout | | documentmaxlength | `100000` | note max length | -| email | `true` or `false` | set to allow email register and signin | +| email | `true` or `false` | set to allow email signin | +| allowemailregister | `true` or `false` | set to allow email register | | imageUploadType | `imgur`(default), `s3` or `filesystem` | Where to upload image | s3 | `{ "accessKeyId": "YOUR_S3_ACCESS_KEY_ID", "secretAccessKey": "YOUR_S3_ACCESS_KEY", "region": "YOUR_S3_REGION", "bucket": "YOUR_S3_BUCKET_NAME" }` | When `imageUploadType` be setted to `s3`, you would also need to setup this key, check our [S3 Image Upload Guide](docs/guides/s3-image-upload.md) | @@ -395,34 +395,36 @@ if (config.ldap) { } // email auth if (config.email) { - app.post('/register', urlencodedParser, function (req, res, next) { - if (!req.body.email || !req.body.password) return response.errorBadRequest(res); - if (!validator.isEmail(req.body.email)) return response.errorBadRequest(res); - models.User.findOrCreate({ - where: { - email: req.body.email - }, - defaults: { - password: req.body.password - } - }).spread(function (user, created) { - if (user) { - if (created) { - if (config.debug) logger.info('user registered: ' + user.id); - req.flash('info', "You've successfully registered, please signin."); - } else { - if (config.debug) logger.info('user found: ' + user.id); - req.flash('error', "This email has been used, please try another one."); + if (config.allowemailregister) + app.post('/register', urlencodedParser, function (req, res, next) { + if (!req.body.email || !req.body.password) return response.errorBadRequest(res); + if (!validator.isEmail(req.body.email)) return response.errorBadRequest(res); + models.User.findOrCreate({ + where: { + email: req.body.email + }, + defaults: { + password: req.body.password + } + }).spread(function (user, created) { + if (user) { + if (created) { + if (config.debug) logger.info('user registered: ' + user.id); + req.flash('info', "You've successfully registered, please signin."); + } else { + if (config.debug) logger.info('user found: ' + user.id); + req.flash('error', "This email has been used, please try another one."); + } + return res.redirect(config.serverurl + '/'); } + req.flash('error', "Failed to register your account, please try again."); return res.redirect(config.serverurl + '/'); - } - req.flash('error', "Failed to register your account, please try again."); - return res.redirect(config.serverurl + '/'); - }).catch(function (err) { - logger.error('auth callback failed: ' + err); - return response.errorInternalError(res); + }).catch(function (err) { + logger.error('auth callback failed: ' + err); + return response.errorInternalError(res); + }); }); - }); + app.post('/login', urlencodedParser, function (req, res, next) { if (!req.body.email || !req.body.password) return response.errorBadRequest(res); if (!validator.isEmail(req.body.email)) return response.errorBadRequest(res); diff --git a/lib/config.js b/lib/config.js index 6b2ba0b6..031c6741 100644 --- a/lib/config.js +++ b/lib/config.js @@ -132,6 +132,7 @@ if (process.env.HMD_LDAP_PROVIDERNAME) { } var imgur = process.env.HMD_IMGUR_CLIENTID || config.imgur || false; var email = process.env.HMD_EMAIL ? (process.env.HMD_EMAIL === 'true') : !!config.email; +var allowemailregister = process.env.HMD_ALLOW_EMAIL_REGISTER ? (process.env.HMD_HMD_ALLOW_EMAIL_REGISTER === 'true') : !!config.allowemailregister; function getserverurl() { var url = ''; @@ -194,6 +195,7 @@ module.exports = { ldap: ldap, imgur: imgur, email: email, + allowemailregister: allowemailregister, imageUploadType: imageUploadType, s3: s3, s3bucket: s3bucket diff --git a/lib/response.js b/lib/response.js index 6c1db967..9014a0a0 100755 --- a/lib/response.js +++ b/lib/response.js @@ -68,6 +68,7 @@ function showIndex(req, res, next) { google: config.google, ldap: config.ldap, email: config.email, + allowemailregister: config.allowemailregister, signin: req.isAuthenticated(), infoMessage: req.flash('info'), errorMessage: req.flash('error') diff --git a/public/views/signin-modal.ejs b/public/views/signin-modal.ejs index e9c54b33..a8af62e7 100644 --- a/public/views/signin-modal.ejs +++ b/public/views/signin-modal.ejs @@ -84,7 +84,7 @@ <div class="form-group"> <div class="col-sm-12"> <button type="submit" class="btn btn-primary" formaction="<%- url %>/login">Sign in</button> - <button type="submit" class="btn btn-default" formaction="<%- url %>/register">Register</button> + <% if(allowemailregister) { %><button type="submit" class="btn btn-default" formaction="<%- url %>/register">Register</button><% }%> </div> </div> </form> |