Przeglądaj źródła

if a domain licence link has expired render a nice message explaining they need to retry

Henry Oswald 11 lat temu
rodzic
commit
33aa5c732f

+ 3 - 1
services/web/app/coffee/Features/Subscription/SubscriptionGroupController.coffee

@@ -71,7 +71,9 @@ module.exports =
 		if !SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)?
 			return ErrorsController.notFound(req, res)
 		SubscriptionGroupHandler.processGroupVerification req.session.user.email, subscription_id, req.query.token, (err)->
-			if err?
+			if err? and err == "token_not_found"
+				res.redirect "/user/subscription/#{subscription_id}/group/invited?expired=true"
+			else if err?
 				res.send 500
 			else
 				res.redirect "/user/subscription/#{subscription_id}/group/successful-join"

+ 2 - 1
services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee

@@ -61,9 +61,10 @@ module.exports = SubscriptionGroupHandler =
 
 	processGroupVerification: (userEmail, subscription_id, token, callback)->
 		OneTimeTokenHandler.getValueFromTokenAndExpire token, (err, token_subscription_id)->
+			
 			if err?  or subscription_id != token_subscription_id
 				logger.err userEmail:userEmail, token:token, "token value not found for processing group verification"
-				return callback("token not found")
+				return callback("token_not_found")
 			SubscriptionLocator.getSubscription subscription_id, (err, subscription)->
 				SubscriptionGroupHandler.addUserToGroup subscription.admin_id, userEmail, callback
 

+ 4 - 0
services/web/app/coffee/infrastructure/ExpressLocals.coffee

@@ -155,6 +155,10 @@ module.exports = (app)->
 			res.locals.systemMessages = messages
 			next()
 
+	app.use (req, res, next)->
+		res.locals.query = req.query
+		next()
+
 	app.use (req, res, next)->
 		subdomain = _.find Settings.i18n.subdomainLang, (subdomain)->
 			subdomain.lngCode == req.showUserOtherLng and !subdomain.hide

+ 4 - 0
services/web/app/views/subscriptions/group/invite.jade

@@ -7,6 +7,10 @@ block scripts
 block content
 	.content.content-alt
 		.container
+			.row
+				.col-md-8.col-md-offset-2
+					-if (query.expired)
+						.alert.alert-warning #{translate("email_link_expired")}
 			.row
 				.col-md-8.col-md-offset-2(ng-cloak)
 					.card(ng-controller="GroupSubscriptionInviteController")

+ 14 - 3
services/web/test/UnitTests/coffee/Subscription/SubscriptionGroupControllerTests.coffee

@@ -5,7 +5,7 @@ assert = require("chai").assert
 modulePath = "../../../../app/js/Features/Subscription/SubscriptionGroupController"
 MockResponse = require "../helpers/MockResponse"
 
-describe "Subscription Group Controller", ->
+describe "SubscriptionGroupController", ->
 
 	beforeEach ->
 		@user = {_id:"!@312431",email:"user@email.com"}
@@ -159,13 +159,24 @@ describe "Subscription Group Controller", ->
 				@Controller.completeJoin @req, res
 
 		describe "without a valid licence", ->
-			beforeEach ->
-				@SubscriptionDomainHandler.findDomainLicenceBySubscriptionId.returns(undefined)
 
 			it "should send a 500", (done)->
+				@SubscriptionDomainHandler.findDomainLicenceBySubscriptionId.returns(undefined)
 				@Controller.completeJoin @req, {}
 				@ErrorsController.notFound.called.should.equal true
 				done()
+
+			it "should redirect to the invited page with querystring if token was not found", (done)->
+				@SubscriptionDomainHandler.findDomainLicenceBySubscriptionId.returns({name:@licenceName})
+				@req.query.token = @token
+				@GroupHandler.processGroupVerification.callsArgWith(3, "token_not_found")
+				res =
+					redirect : (location)=>
+						location.should.equal "/user/subscription/#{@subscription_id}/group/invited?expired=true"
+						done()
+				@Controller.completeJoin @req, res
+
+
 	describe "exportGroupCsv", ->	
 
 		beforeEach ->

+ 8 - 4
services/web/test/UnitTests/coffee/Subscription/SubscriptionGroupHandlerTests.coffee

@@ -5,7 +5,7 @@ assert = require("chai").assert
 modulePath = "../../../../app/js/Features/Subscription/SubscriptionGroupHandler"
 
 
-describe "Subscription Group Handler", ->
+describe "SubscriptionGroupHandler", ->
 
 	beforeEach ->
 		@adminUser_id = "12321"
@@ -143,7 +143,7 @@ describe "Subscription Group Handler", ->
 			@subscription_id = "123ed13123"
 			@licenceName = "great licnece"
 			@email = "bob@smith.com"
-			@OneTimeTokenHandler.getNewToken.callsArgWith(1, null, @token)
+			@OneTimeTokenHandler.getNewToken.callsArgWith(2, null, @token)
 			@EmailHandler.sendEmail.callsArgWith(2)
 
 		it "should put a one time token into the email", (done)->
@@ -159,16 +159,20 @@ describe "Subscription Group Handler", ->
 			@token = "31dDAd2Da"
 			@subscription_id = "31DSd1123D"
 			@admin_id = "eDSda1ew"
-			@OneTimeTokenHandler.getValueFromTokenAndExpire.callsArgWith(1, null, @subscription_id)
 			@SubscriptionLocator.getSubscription.callsArgWith(1, null, {admin_id:@admin_id})
 			@Handler.addUserToGroup = sinon.stub().callsArgWith(2)
 
 		it "should addUserToGroup", (done)->
+			@OneTimeTokenHandler.getValueFromTokenAndExpire.callsArgWith(1, null, @subscription_id)
 			@Handler.processGroupVerification @email, @subscription_id, @token, (err)=>
 				@Handler.addUserToGroup.calledWith(@admin_id, @email).should.equal true
 				done()
 
-
+		it "should return token_not_found error if it couldn't get the token", (done)->
+			@OneTimeTokenHandler.getValueFromTokenAndExpire.callsArgWith(1)
+			@Handler.processGroupVerification @email, @subscription_id, @token, (err)=>
+				err.should.equal "token_not_found"
+				done()