Remove public registration and require that a user be registered by an admin

This commit is contained in:
James Allen
2015-03-19 14:22:48 +00:00
parent d76ef86077
commit 9b8cf7bcfa
16 changed files with 217 additions and 177 deletions
@@ -12,6 +12,9 @@ ReferalAllocator = require("../Referal/ReferalAllocator")
UserUpdater = require("./UserUpdater")
SubscriptionDomainAllocator = require("../Subscription/SubscriptionDomainAllocator")
EmailHandler = require("../Email/EmailHandler")
PasswordResetTokenHandler = require "../PasswordReset/PasswordResetTokenHandler"
settings = require "settings-sharelatex"
crypto = require "crypto"
module.exports =
@@ -81,34 +84,37 @@ module.exports =
res.redirect '/login'
register : (req, res, next = (error) ->)->
logger.log email: req.body.email, "attempted register"
redir = Url.parse(req.body.redir or "/project").path
UserRegistrationHandler.registerNewUser req.body, (err, user)->
if err? and err?.message == "EmailAlreadyRegistered"
return AuthenticationController.login req, res
else if err?
next(err)
else
metrics.inc "user.register.success"
ReferalAllocator.allocate req.session.referal_id, user._id, req.session.referal_source, req.session.referal_medium
SubscriptionDomainAllocator.autoAllocate(user)
email = req.body.email
if !email? or email == ""
res.send 422 # Unprocessable Entity
return
logger.log {email}, "registering new user"
UserRegistrationHandler.registerNewUser {
email: email
password: crypto.randomBytes(32).toString("hex")
}, (err, user)->
if err? and err?.message != "EmailAlreadyRegistered"
return next(err)
if err?.message == "EmailAlreadyRegistered"
logger.log {email}, "user already exists, resending welcome email"
EmailHandler.sendEmail "welcome", {
first_name:user.first_name
# TODO: Make a long term token.
ONE_WEEK = 7 * 24 * 60 * 60 # seconds
PasswordResetTokenHandler.getNewToken user._id, { expiresIn: ONE_WEEK }, (err, token)->
return next(err) if err?
setNewPasswordUrl = "#{settings.siteUrl}/user/password/set?passwordResetToken=#{token}"
EmailHandler.sendEmail "registered", {
to: user.email
setNewPasswordUrl: setNewPasswordUrl
}, () ->
AuthenticationController.establishUserSession req, user, (error) ->
return callback(error) if error?
req.session.justRegistered = true
res.send
redir:redir
id:user._id.toString()
first_name: user.first_name
last_name: user.last_name
email: user.email
created: Date.now()
res.json {
email: user.email
setNewPasswordUrl: setNewPasswordUrl
}
changePassword : (req, res, next = (error) ->)->
metrics.inc "user.password-change"