summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSheogorath2017-01-12 04:25:58 +0100
committerSheogorath2017-01-12 13:54:45 +0100
commit747629e549fb5c32e1acf18e24bfc6a7e1cd5b0c (patch)
treec4861ce189556858a88a9d2843addcc84ae77eb8
parenta8068d38d589a1b8ed008f737d42ed35df4bfd2b (diff)
Add `allowemailregister` option
-rw-r--r--README.md6
-rw-r--r--app.js52
-rw-r--r--lib/config.js2
-rwxr-xr-xlib/response.js1
-rw-r--r--public/views/signin-modal.ejs2
5 files changed, 35 insertions, 28 deletions
diff --git a/README.md b/README.md
index 4717ca7c..7d3d4573 100644
--- a/README.md
+++ b/README.md
@@ -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) |
diff --git a/app.js b/app.js
index a17d3a61..83b19e23 100644
--- a/app.js
+++ b/app.js
@@ -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>