if user changes email then check if they have a site licence

This commit is contained in:
Henry Oswald
2016-03-13 22:31:14 +00:00
parent 88f8b701c8
commit 15c6e49d1a
4 changed files with 27 additions and 9 deletions
@@ -1,3 +1,4 @@
UserHandler = require("./UserHandler")
UserDeleter = require("./UserDeleter")
UserLocator = require("./UserLocator")
User = require("../../models/User").User
@@ -10,7 +11,7 @@ AuthenticationManager = require("../Authentication/AuthenticationManager")
UserUpdater = require("./UserUpdater")
settings = require "settings-sharelatex"
module.exports =
module.exports = UserController =
deleteUser: (req, res)->
user_id = req.session.user._id
@@ -67,7 +68,14 @@ module.exports =
else
message = req.i18n.translate("problem_changing_email_address")
return res.send 500, {message:message}
res.sendStatus(200)
User.findById user_id, (err, user)->
if err?
logger.err err:err, user_id:user_id, "error getting user for email update"
return res.send 500
UserHandler.populateGroupLicenceInvite user, (err)-> #need to refresh this in the background
if err?
logger.err err:err, "error populateGroupLicenceInvite"
res.sendStatus(200)
logout : (req, res)->
metrics.inc "user.logout"
@@ -6,7 +6,7 @@ logger = require("logger-sharelatex")
module.exports = UserHandler =
_populateGroupLicenceInvite: (user, callback)->
populateGroupLicenceInvite: (user, callback)->
licence = SubscriptionDomainHandler.getLicenceUserCanJoin user
if !licence?
return callback()
@@ -21,5 +21,5 @@ module.exports = UserHandler =
NotificationsBuilder.groupPlan(user, licence).create(callback)
setupLoginData: (user, callback = ->)->
@_populateGroupLicenceInvite user, callback
@populateGroupLicenceInvite user, callback
@@ -42,6 +42,8 @@ describe "UserController", ->
changeEmailAddress:sinon.stub()
@settings =
siteUrl: "sharelatex.example.com"
@UserHandler =
populateGroupLicenceInvite:sinon.stub().callsArgWith(1)
@UserController = SandboxedModule.require modulePath, requires:
"./UserLocator": @UserLocator
"./UserDeleter": @UserDeleter
@@ -53,6 +55,7 @@ describe "UserController", ->
"../Authentication/AuthenticationManager": @AuthenticationManager
"../Referal/ReferalAllocator":@ReferalAllocator
"../Subscription/SubscriptionDomainHandler":@SubscriptionDomainHandler
"./UserHandler":@UserHandler
"settings-sharelatex": @settings
"logger-sharelatex": {log:->}
"../../infrastructure/Metrics": inc:->
@@ -151,7 +154,14 @@ describe "UserController", ->
done()
@UserController.updateUserSettings @req, @res
it "should call populateGroupLicenceInvite", (done)->
@req.body.email = @newEmail.toUpperCase()
@UserUpdater.changeEmailAddress.callsArgWith(2)
@res.sendStatus = (code)=>
code.should.equal 200
@UserHandler.populateGroupLicenceInvite.calledWith(@user).should.equal true
done()
@UserController.updateUserSettings @req, @res
describe "logout", ->
@@ -29,12 +29,12 @@ describe "UserHandler", ->
"../Subscription/SubscriptionDomainHandler":@SubscriptionDomainHandler
"../Subscription/SubscriptionGroupHandler":@SubscriptionGroupHandler
describe "_populateGroupLicenceInvite", ->
describe "populateGroupLicenceInvite", ->
describe "no licence", ->
beforeEach (done)->
@SubscriptionDomainHandler.getLicenceUserCanJoin.returns()
@UserHandler._populateGroupLicenceInvite @user, done
@UserHandler.populateGroupLicenceInvite @user, done
it "should not call NotificationsBuilder", (done)->
@NotificationsBuilder.groupPlan.called.should.equal false
@@ -49,7 +49,7 @@ describe "UserHandler", ->
beforeEach (done)->
@SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence)
@SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, false)
@UserHandler._populateGroupLicenceInvite @user, done
@UserHandler.populateGroupLicenceInvite @user, done
it "should create notifcation", (done)->
@NotificationsBuilder.groupPlan.calledWith(@user, @licence).should.equal true
@@ -62,7 +62,7 @@ describe "UserHandler", ->
beforeEach (done)->
@SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence)
@SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, true)
@UserHandler._populateGroupLicenceInvite @user, done
@UserHandler.populateGroupLicenceInvite @user, done
it "should create notifcation", (done)->
@NotificationsBuilder.groupPlan.called.should.equal false