If user tries to invite themselves to project, don't.
This commit is contained in:
@@ -37,6 +37,9 @@ module.exports = CollaboratorsInviteController =
|
|||||||
email = req.body.email
|
email = req.body.email
|
||||||
sendingUser = AuthenticationController.getSessionUser(req)
|
sendingUser = AuthenticationController.getSessionUser(req)
|
||||||
sendingUserId = sendingUser._id
|
sendingUserId = sendingUser._id
|
||||||
|
if email == sendingUser.email
|
||||||
|
logger.log {projectId, email, sendingUserId}, "cannot invite yourself to project"
|
||||||
|
return res.json {invite: null, error: 'cannot_invite_self'}
|
||||||
logger.log {projectId, email, sendingUserId}, "inviting to project"
|
logger.log {projectId, email, sendingUserId}, "inviting to project"
|
||||||
LimitationsManager.canAddXCollaborators projectId, 1, (error, allowed) =>
|
LimitationsManager.canAddXCollaborators projectId, 1, (error, allowed) =>
|
||||||
return next(error) if error?
|
return next(error) if error?
|
||||||
|
|||||||
@@ -144,6 +144,8 @@ script(type='text/ng-template', id='shareProjectModalTemplate')
|
|||||||
span(ng-switch="state.errorReason")
|
span(ng-switch="state.errorReason")
|
||||||
span(ng-switch-when="cannot_invite_non_user")
|
span(ng-switch-when="cannot_invite_non_user")
|
||||||
| #{translate("cannot_invite_non_user")}
|
| #{translate("cannot_invite_non_user")}
|
||||||
|
span(ng-switch-when="cannot_invite_self")
|
||||||
|
| #{translate("cannot_invite_self")}
|
||||||
span(ng-switch-default)
|
span(ng-switch-default)
|
||||||
| #{translate("generic_something_went_wrong")}
|
| #{translate("generic_something_went_wrong")}
|
||||||
button.btn.btn-default(
|
button.btn.btn-default(
|
||||||
|
|||||||
+31
@@ -255,6 +255,37 @@ describe "CollaboratorsInviteController", ->
|
|||||||
it 'should not have called inviteToProject', ->
|
it 'should not have called inviteToProject', ->
|
||||||
@CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0
|
@CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0
|
||||||
|
|
||||||
|
describe 'when the user invites themselves to the project', ->
|
||||||
|
|
||||||
|
beforeEach ->
|
||||||
|
@req.session.user = {_id: 'abc', email: 'me@example.com'}
|
||||||
|
@req.body.email = 'me@example.com'
|
||||||
|
@_checkShouldInviteEmail = sinon.stub(
|
||||||
|
@CollaboratorsInviteController, '_checkShouldInviteEmail'
|
||||||
|
).callsArgWith(1, null, true)
|
||||||
|
@LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true)
|
||||||
|
@CollaboratorsInviteController.inviteToProject @req, @res, @next
|
||||||
|
|
||||||
|
afterEach ->
|
||||||
|
@_checkShouldInviteEmail.restore()
|
||||||
|
|
||||||
|
it 'should reject action, return json response with error code', ->
|
||||||
|
@res.json.callCount.should.equal 1
|
||||||
|
({invite: null, error: 'cannot_invite_self'}).should.deep.equal(@res.json.firstCall.args[0])
|
||||||
|
|
||||||
|
it 'should not have called canAddXCollaborators', ->
|
||||||
|
@LimitationsManager.canAddXCollaborators.callCount.should.equal 0
|
||||||
|
|
||||||
|
it 'should not have called _checkShouldInviteEmail', ->
|
||||||
|
@_checkShouldInviteEmail.callCount.should.equal 0
|
||||||
|
|
||||||
|
it 'should not have called inviteToProject', ->
|
||||||
|
@CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0
|
||||||
|
|
||||||
|
it 'should not have called emitToRoom', ->
|
||||||
|
@EditorRealTimeController.emitToRoom.callCount.should.equal 0
|
||||||
|
|
||||||
|
|
||||||
describe "viewInvite", ->
|
describe "viewInvite", ->
|
||||||
|
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
|
|||||||
Reference in New Issue
Block a user