From 16dcbe2cd434200a80f885fb886051e02881e894 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 25 Jul 2016 15:07:14 +0100 Subject: [PATCH] WIP: wire up share-modal frontend to invite system --- .../CollaboratorsInviteController.coffee | 4 ++-- .../app/coffee/models/ProjectInvite.coffee | 20 ++++++++++++------- .../ShareProjectModalController.coffee | 15 +++++--------- .../ide/share/services/projectMembers.coffee | 5 ++--- .../CollaboratorsInviteControllerTests.coffee | 8 +++----- 5 files changed, 25 insertions(+), 27 deletions(-) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee index ef23263805..2b64f70887 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee @@ -25,7 +25,7 @@ module.exports = CollaboratorsInviteController = return next(error) if error? if !allowed logger.log {projectId, email, sendingUserId}, "not allowed to invite more users to project" - return res.json {inviteId: null} + return res.json {invite: null} {email, privileges} = req.body email = mimelib.parseAddresses(email or "")[0]?.address?.toLowerCase() if !email? or email == "" @@ -36,7 +36,7 @@ module.exports = CollaboratorsInviteController = logger.err {projectId, email, sendingUserId}, "error creating project invite" return next(err) logger.log {projectId, email, sendingUserId}, "invite created" - return res.json {inviteId: invite._id} + return res.json {invite: invite} revokeInvite: (req, res, next) -> projectId = req.params.Project_id diff --git a/services/web/app/coffee/models/ProjectInvite.coffee b/services/web/app/coffee/models/ProjectInvite.coffee index decea99f46..5e46408176 100644 --- a/services/web/app/coffee/models/ProjectInvite.coffee +++ b/services/web/app/coffee/models/ProjectInvite.coffee @@ -9,13 +9,19 @@ ObjectId = Schema.ObjectId THIRTY_DAYS_IN_SECONDS = 60 * 60 * 24 * 30 -ProjectInviteSchema = new Schema - email: String - token: String - sendingUserId: ObjectId - projectId: ObjectId - privileges: String - createdAt: {type: Date, default: Date.now, index: {expiresAfterSeconds: THIRTY_DAYS_IN_SECONDS}} +ProjectInviteSchema = new Schema( + { + email: String + token: String + sendingUserId: ObjectId + projectId: ObjectId + privileges: String + createdAt: {type: Date, default: Date.now, index: {expiresAfterSeconds: THIRTY_DAYS_IN_SECONDS}} + }, + { + collection: 'projectInvites' + } +) conn = mongoose.createConnection(Settings.mongo.url, server: poolSize: Settings.mongo.poolSize || 10) diff --git a/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee b/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee index 05376b01b8..ac2bc431ba 100644 --- a/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee +++ b/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee @@ -48,7 +48,6 @@ define [ projectInvites.getInvites().then( (response) -> $scope.state.invites = response?.data?.invites - $scope.state.invites = [{_id: "wat", email: "user@example.com"}] , (response) -> console.error response ) @@ -86,8 +85,9 @@ define [ return addNextMember() # TODO: double-check if member.type == 'user' needs to be an invite + console.log ">> inviting", member if member.type == "user" - request = projectMembers.addMember(member.email, $scope.inputs.privileges) + request = projectInvites.sendInvite(member.email, $scope.inputs.privileges) else if member.type == "group" request = projectMembers.addGroup(member.id, $scope.inputs.privileges) else # Not an auto-complete object, so email == display @@ -95,14 +95,9 @@ define [ request .success (data) -> - if data.users? - users = data.users - else if data.user? - users = [data.user] - else - users = [] - - $scope.project.members.push users... + if data.invite + invite = data.invite + $scope.state.invites.push invite setTimeout () -> # Give $scope a chance to update $scope.canAddCollaborators # with new collaborator information. diff --git a/services/web/public/coffee/ide/share/services/projectMembers.coffee b/services/web/public/coffee/ide/share/services/projectMembers.coffee index a51ea63e99..4bc69e814f 100644 --- a/services/web/public/coffee/ide/share/services/projectMembers.coffee +++ b/services/web/public/coffee/ide/share/services/projectMembers.coffee @@ -17,13 +17,12 @@ define [ privileges: privileges _csrf: window.csrfToken }) - + addGroup: (group_id, privileges) -> $http.post("/project/#{ide.project_id}/group", { group_id: group_id privileges: privileges _csrf: window.csrfToken }) - } - ] \ No newline at end of file + ] diff --git a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee index 08fcd2d54c..432ace7052 100644 --- a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee @@ -65,8 +65,6 @@ describe "CollaboratorsInviteController", -> @next.callCount.should.equal 1 @next.firstCall.args[0].should.be.instanceof Error - # # # # - describe 'inviteToProject', -> beforeEach -> @@ -101,7 +99,7 @@ describe "CollaboratorsInviteController", -> it 'should produce json response', -> @res.json.callCount.should.equal 1 - ({inviteId: @invite._id}).should.deep.equal(@res.json.firstCall.args[0]) + ({invite: @invite}).should.deep.equal(@res.json.firstCall.args[0]) it 'should have called canAddXCollaborators', -> @LimitationsManager.canAddXCollaborators.callCount.should.equal 1 @@ -117,9 +115,9 @@ describe "CollaboratorsInviteController", -> @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, false) @CollaboratorsInviteController.inviteToProject @req, @res, @next - it 'should produce json response without inviteId', -> + it 'should produce json response without an invite', -> @res.json.callCount.should.equal 1 - ({inviteId: null}).should.deep.equal(@res.json.firstCall.args[0]) + ({invite: null}).should.deep.equal(@res.json.firstCall.args[0]) it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0