Add allowemailregister option

This commit is contained in:
Sheogorath 2017-01-12 04:25:58 +01:00
parent a8068d38d5
commit 747629e549
5 changed files with 35 additions and 28 deletions

View file

@ -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_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_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_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_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_ACCESS_KEY_ID | no example | AWS access key id |
| HMD_S3_SECRET_ACCESS_KEY | no example | AWS secret key | | HMD_S3_SECRET_ACCESS_KEY | no example | AWS secret key |
@ -194,7 +195,8 @@ Server settings `config.json`
| heartbeatinterval | `5000` | socket.io heartbeat interval | | heartbeatinterval | `5000` | socket.io heartbeat interval |
| heartbeattimeout | `10000` | socket.io heartbeat timeout | | heartbeattimeout | `10000` | socket.io heartbeat timeout |
| documentmaxlength | `100000` | note max length | | 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 | 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) | | 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) |

52
app.js
View file

@ -395,34 +395,36 @@ if (config.ldap) {
} }
// email auth // email auth
if (config.email) { if (config.email) {
app.post('/register', urlencodedParser, function (req, res, next) { if (config.allowemailregister)
if (!req.body.email || !req.body.password) return response.errorBadRequest(res); app.post('/register', urlencodedParser, function (req, res, next) {
if (!validator.isEmail(req.body.email)) return response.errorBadRequest(res); if (!req.body.email || !req.body.password) return response.errorBadRequest(res);
models.User.findOrCreate({ if (!validator.isEmail(req.body.email)) return response.errorBadRequest(res);
where: { models.User.findOrCreate({
email: req.body.email where: {
}, email: req.body.email
defaults: { },
password: req.body.password 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.");
} }
}).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 + '/'); return res.redirect(config.serverurl + '/');
} }).catch(function (err) {
req.flash('error', "Failed to register your account, please try again."); logger.error('auth callback failed: ' + err);
return res.redirect(config.serverurl + '/'); 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) { app.post('/login', urlencodedParser, function (req, res, next) {
if (!req.body.email || !req.body.password) return response.errorBadRequest(res); if (!req.body.email || !req.body.password) return response.errorBadRequest(res);
if (!validator.isEmail(req.body.email)) return response.errorBadRequest(res); if (!validator.isEmail(req.body.email)) return response.errorBadRequest(res);

View file

@ -132,6 +132,7 @@ if (process.env.HMD_LDAP_PROVIDERNAME) {
} }
var imgur = process.env.HMD_IMGUR_CLIENTID || config.imgur || false; var imgur = process.env.HMD_IMGUR_CLIENTID || config.imgur || false;
var email = process.env.HMD_EMAIL ? (process.env.HMD_EMAIL === 'true') : !!config.email; 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() { function getserverurl() {
var url = ''; var url = '';
@ -194,6 +195,7 @@ module.exports = {
ldap: ldap, ldap: ldap,
imgur: imgur, imgur: imgur,
email: email, email: email,
allowemailregister: allowemailregister,
imageUploadType: imageUploadType, imageUploadType: imageUploadType,
s3: s3, s3: s3,
s3bucket: s3bucket s3bucket: s3bucket

View file

@ -68,6 +68,7 @@ function showIndex(req, res, next) {
google: config.google, google: config.google,
ldap: config.ldap, ldap: config.ldap,
email: config.email, email: config.email,
allowemailregister: config.allowemailregister,
signin: req.isAuthenticated(), signin: req.isAuthenticated(),
infoMessage: req.flash('info'), infoMessage: req.flash('info'),
errorMessage: req.flash('error') errorMessage: req.flash('error')

View file

@ -84,7 +84,7 @@
<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="<%- url %>/login">Sign in</button> <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>
</div> </div>
</form> </form>