Просмотр исходного кода

Set redirect when bouncing away from token route

This ensures that when the user logs in they will be redirected back
to this token, the page they wanted to access in the first place.
Shane Kilkelly 9 лет назад
Родитель
Сommit
5df4556e9c

+ 1 - 0
services/web/app/coffee/Features/TokenAccess/TokenAccessController.coffee

@@ -52,6 +52,7 @@ module.exports = TokenAccessController =
 					else
 					else
 						logger.log {token, projectId: project._id},
 						logger.log {token, projectId: project._id},
 							"[TokenAccess] deny anonymous read-and-write token access"
 							"[TokenAccess] deny anonymous read-and-write token access"
+						AuthenticationController._setRedirectInSession(req)
 						return res.redirect('/restricted')
 						return res.redirect('/restricted')
 				if project.owner_ref.toString() == userId
 				if project.owner_ref.toString() == userId
 					logger.log {userId, projectId: project._id},
 					logger.log {userId, projectId: project._id},

+ 7 - 0
services/web/test/UnitTests/coffee/TokenAccess/TokenAccessControllerTests.coffee

@@ -48,6 +48,7 @@ describe "TokenAccessController", ->
 				@TokenAccessHandler.addReadAndWriteUserToProject = sinon.stub()
 				@TokenAccessHandler.addReadAndWriteUserToProject = sinon.stub()
 					.callsArgWith(2, null)
 					.callsArgWith(2, null)
 				@ProjectController.loadEditor = sinon.stub()
 				@ProjectController.loadEditor = sinon.stub()
+				@AuthenticationController._setRedirectInSession = sinon.stub()
 				@TokenAccessController.readAndWriteToken @req, @res, @next
 				@TokenAccessController.readAndWriteToken @req, @res, @next
 
 
 			it 'should try to find a project with this token', (done) ->
 			it 'should try to find a project with this token', (done) ->
@@ -159,6 +160,7 @@ describe "TokenAccessController", ->
 						.callsArgWith(2, null)
 						.callsArgWith(2, null)
 					@ProjectController.loadEditor = sinon.stub()
 					@ProjectController.loadEditor = sinon.stub()
 					@TokenAccessHandler.grantSessionTokenAccess = sinon.stub()
 					@TokenAccessHandler.grantSessionTokenAccess = sinon.stub()
+					@AuthenticationController._setRedirectInSession = sinon.stub()
 					@TokenAccessController.readAndWriteToken @req, @res, @next
 					@TokenAccessController.readAndWriteToken @req, @res, @next
 
 
 				it 'should not add the user to the project with read-write access', (done) ->
 				it 'should not add the user to the project with read-write access', (done) ->
@@ -176,6 +178,11 @@ describe "TokenAccessController", ->
 					expect(@ProjectController.loadEditor.calledWith(@req, @res, @next)).to.equal false
 					expect(@ProjectController.loadEditor.calledWith(@req, @res, @next)).to.equal false
 					done()
 					done()
 
 
+				it 'should set redirect in session', (done) ->
+					expect(@AuthenticationController._setRedirectInSession.callCount).to.equal 1
+					expect(@AuthenticationController._setRedirectInSession.calledWith(@req)).to.equal true
+					done()
+
 				it 'should redirect to restricted page', (done) ->
 				it 'should redirect to restricted page', (done) ->
 					expect(@res.redirect.callCount).to.equal 1
 					expect(@res.redirect.callCount).to.equal 1
 					expect(@res.redirect.calledWith('/restricted')).to.equal true
 					expect(@res.redirect.calledWith('/restricted')).to.equal true