From 39c8595c279fc649ed9e6c571f4339cbbd447afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Fern=C3=A1ndez=20Capel?= Date: Thu, 31 May 2018 14:25:47 +0100 Subject: [PATCH] Split SubscriptionGroupInvites and rename to DomainSubscriptionJoin To not cause confusion with team invites. They are not really an invite because they are user initiated, but more of a user choosing to join a team. --- .../DomainSubscriptionController.coffee | 45 ++++++++++++++ .../SubscriptionGroupController.coffee | 62 ------------------- .../Subscription/SubscriptionRouter.coffee | 8 +-- .../group/{invite.pug => join.pug} | 4 +- .../subscriptions/group/successful_join.pug | 25 -------- services/web/public/coffee/main.coffee | 2 +- ...omain-subscription-join-controller.coffee} | 16 ++--- 7 files changed, 60 insertions(+), 102 deletions(-) create mode 100644 services/web/app/coffee/Features/Subscription/DomainSubscriptionController.coffee rename services/web/app/views/subscriptions/group/{invite.pug => join.pug} (92%) delete mode 100644 services/web/app/views/subscriptions/group/successful_join.pug rename services/web/public/coffee/main/subscription/{group-subscription-invite-controller.coffee => domain-subscription-join-controller.coffee} (67%) diff --git a/services/web/app/coffee/Features/Subscription/DomainSubscriptionController.coffee b/services/web/app/coffee/Features/Subscription/DomainSubscriptionController.coffee new file mode 100644 index 0000000000..aa78c103b7 --- /dev/null +++ b/services/web/app/coffee/Features/Subscription/DomainSubscriptionController.coffee @@ -0,0 +1,45 @@ +SubscriptionGroupHandler = require("./SubscriptionGroupHandler") +logger = require("logger-sharelatex") +SubscriptionLocator = require("./SubscriptionLocator") +ErrorsController = require("../Errors/ErrorController") +SubscriptionDomainHandler = require("./SubscriptionDomainHandler") +AuthenticationController = require('../Authentication/AuthenticationController') +async = require("async") + +module.exports = + newInvite: (req, res)-> + group_subscription_id = req.params.subscription_id + user_id = AuthenticationController.getLoggedInUserId(req) + licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(group_subscription_id) + if !licence? + return ErrorsController.notFound(req, res) + jobs = + partOfGroup: (cb)-> + SubscriptionGroupHandler.isUserPartOfGroup user_id, licence.group_subscription_id, cb + subscription: (cb)-> + SubscriptionLocator.getUsersSubscription user_id, cb + async.series jobs, (err, results)-> + {partOfGroup, subscription} = results + if partOfGroup + return res.redirect("/user/subscription/custom_account") + else + res.render "subscriptions/group/join", + title: "Group Invitation" + group_subscription_id:group_subscription_id + licenceName:licence.name + has_personal_subscription: subscription? + + createInvite: (req, res)-> + subscription_id = req.params.subscription_id + currentUser = AuthenticationController.getSessionUser(req) + if !currentUser? + logger.err {subscription_id}, "error getting current user" + return res.sendStatus 500 + licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id) + if !licence? + return ErrorsController.notFound(req, res) + SubscriptionGroupHandler.sendVerificationEmail subscription_id, licence.name, currentUser.email, (err)-> + if err? + res.sendStatus 500 + else + res.sendStatus 200 diff --git a/services/web/app/coffee/Features/Subscription/SubscriptionGroupController.coffee b/services/web/app/coffee/Features/Subscription/SubscriptionGroupController.coffee index 6b8bd99c35..ffb5c6e832 100644 --- a/services/web/app/coffee/Features/Subscription/SubscriptionGroupController.coffee +++ b/services/web/app/coffee/Features/Subscription/SubscriptionGroupController.coffee @@ -62,68 +62,6 @@ module.exports = users: users subscription: subscription - renderGroupInvitePage: (req, res)-> - group_subscription_id = req.params.subscription_id - user_id = AuthenticationController.getLoggedInUserId(req) - licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(group_subscription_id) - if !licence? - return ErrorsController.notFound(req, res) - jobs = - partOfGroup: (cb)-> - SubscriptionGroupHandler.isUserPartOfGroup user_id, licence.group_subscription_id, cb - subscription: (cb)-> - SubscriptionLocator.getUsersSubscription user_id, cb - async.series jobs, (err, results)-> - {partOfGroup, subscription} = results - if partOfGroup - return res.redirect("/user/subscription/custom_account") - else - res.render "subscriptions/group/invite", - title: "Group Invitation" - group_subscription_id:group_subscription_id - licenceName:licence.name - has_personal_subscription: subscription? - - beginJoinGroup: (req, res)-> - subscription_id = req.params.subscription_id - currentUser = AuthenticationController.getSessionUser(req) - if !currentUser? - logger.err {subscription_id}, "error getting current user" - return res.sendStatus 500 - licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id) - if !licence? - return ErrorsController.notFound(req, res) - SubscriptionGroupHandler.sendVerificationEmail subscription_id, licence.name, currentUser.email, (err)-> - if err? - res.sendStatus 500 - else - res.sendStatus 200 - - completeJoin: (req, res)-> - currentUser = AuthenticationController.getSessionUser(req) - subscription_id = req.params.subscription_id - if !SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)? - return ErrorsController.notFound(req, res) - email = currentUser?.email - logger.log subscription_id:subscription_id, user_id:currentUser?._id, email:email, "starting the completion of joining group" - SubscriptionGroupHandler.processGroupVerification email, subscription_id, req.query?.token, (err)-> - if err? and err == "token_not_found" - return res.redirect "/user/subscription/#{subscription_id}/group/invited?expired=true" - else if err? - return res.sendStatus 500 - else - logger.log subscription_id:subscription_id, email:email, "user successful completed join of group subscription" - return res.redirect "/user/subscription/#{subscription_id}/group/successful-join" - - renderSuccessfulJoinPage: (req, res)-> - subscription_id = req.params.subscription_id - licence = SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id) - if !SubscriptionDomainHandler.findDomainLicenceBySubscriptionId(subscription_id)? - return ErrorsController.notFound(req, res) - res.render "subscriptions/group/successful_join", - title: "Sucessfully joined group" - licenceName:licence.name - exportGroupCsv: (req, res)-> user_id = AuthenticationController.getLoggedInUserId(req) logger.log user_id: user_id, "exporting group csv" diff --git a/services/web/app/coffee/Features/Subscription/SubscriptionRouter.coffee b/services/web/app/coffee/Features/Subscription/SubscriptionRouter.coffee index 5aabd191de..b853a5c2bf 100644 --- a/services/web/app/coffee/Features/Subscription/SubscriptionRouter.coffee +++ b/services/web/app/coffee/Features/Subscription/SubscriptionRouter.coffee @@ -1,6 +1,7 @@ AuthenticationController = require('../Authentication/AuthenticationController') SubscriptionController = require('./SubscriptionController') SubscriptionGroupController = require './SubscriptionGroupController' +DomainSubscriptionController = require './DomainSubscriptionController' TeamInvitesController = require './TeamInvitesController' Settings = require "settings-sharelatex" @@ -36,10 +37,9 @@ module.exports = webRouter.delete '/subscription/invites/:email/', AuthenticationController.requireLogin(), TeamInvitesController.revokeInvite - webRouter.get '/user/subscription/:subscription_id/group/invited', AuthenticationController.requireLogin(), SubscriptionGroupController.renderGroupInvitePage - webRouter.post '/user/subscription/:subscription_id/group/begin-join', AuthenticationController.requireLogin(), SubscriptionGroupController.beginJoinGroup - webRouter.get '/user/subscription/:subscription_id/group/complete-join', AuthenticationController.requireLogin(), SubscriptionGroupController.completeJoin - webRouter.get '/user/subscription/:subscription_id/group/successful-join', AuthenticationController.requireLogin(), SubscriptionGroupController.renderSuccessfulJoinPage + # Routes to join a domain licence team + webRouter.get '/user/subscription/:subscription_id/group/join', AuthenticationController.requireLogin(), DomainSubscriptionController.newInvite + webRouter.post '/user/subscription/:subscription_id/group/join', AuthenticationController.requireLogin(), DomainSubscriptionController.createInvite #recurly callback publicApiRouter.post '/user/subscription/callback', SubscriptionController.recurlyNotificationParser, SubscriptionController.recurlyCallback diff --git a/services/web/app/views/subscriptions/group/invite.pug b/services/web/app/views/subscriptions/group/join.pug similarity index 92% rename from services/web/app/views/subscriptions/group/invite.pug rename to services/web/app/views/subscriptions/group/join.pug index 3c67a79f81..7c6c214b98 100644 --- a/services/web/app/views/subscriptions/group/invite.pug +++ b/services/web/app/views/subscriptions/group/join.pug @@ -17,7 +17,7 @@ block content div   .row .col-md-8.col-md-offset-2(ng-cloak) - .card(ng-controller="GroupSubscriptionInviteController") + .card(ng-controller="DomainSubscriptionJoinController") .page-header h1.text-centered #{translate("you_are_invited_to_group", {groupName:licenceName})} @@ -31,7 +31,7 @@ block content span   a.btn.btn.btn-primary(ng-click="cancelSubscription()", ng-disabled="inflight") #{translate("cancel_your_subscription")} - div(ng-show="view =='groupSubscriptionInvite'").row.text-centered + div(ng-show="view =='domainSubscriptionJoin'").row.text-centered .row .col-md-12 #{translate("group_provides_you_with_premium_account", {groupName:licenceName})} .row diff --git a/services/web/app/views/subscriptions/group/successful_join.pug b/services/web/app/views/subscriptions/group/successful_join.pug deleted file mode 100644 index 9e748f4c38..0000000000 --- a/services/web/app/views/subscriptions/group/successful_join.pug +++ /dev/null @@ -1,25 +0,0 @@ -extends ../../layout - -block scripts - script(type='text/javascript'). - window.subscription_id = '#{subscription_id}' - -block content - .content.content-alt - .container - .row - .col-md-8.col-md-offset-2(ng-cloak) - .card - .page-header.row.text-centered - h1 #{translate("you_have_joined", {groupName:licenceName})} - div(ng-show="!requestSent").row.text-centered - .row - .span-md-12 #{translate("claim_premium_account", {groupName:licenceName})} - div - .row - .col-md-12   - .row - .span-md-12 - a.btn.btn-success(href="/project") #{translate("done")} - - diff --git a/services/web/public/coffee/main.coffee b/services/web/public/coffee/main.coffee index 6034ed1bdd..786bf1a94b 100644 --- a/services/web/public/coffee/main.coffee +++ b/services/web/public/coffee/main.coffee @@ -16,7 +16,7 @@ define [ "main/annual-upgrade" "main/announcements" "main/register-users" - "main/subscription/group-subscription-invite-controller" + "main/subscription/domain-subscription-join-controller" "main/subscription/team-invite-controller" "main/contact-us" "main/learn" diff --git a/services/web/public/coffee/main/subscription/group-subscription-invite-controller.coffee b/services/web/public/coffee/main/subscription/domain-subscription-join-controller.coffee similarity index 67% rename from services/web/public/coffee/main/subscription/group-subscription-invite-controller.coffee rename to services/web/public/coffee/main/subscription/domain-subscription-join-controller.coffee index eae5d68cc0..99150942e1 100644 --- a/services/web/public/coffee/main/subscription/group-subscription-invite-controller.coffee +++ b/services/web/public/coffee/main/subscription/domain-subscription-join-controller.coffee @@ -1,35 +1,35 @@ define [ "base" ], (App) -> - App.controller "GroupSubscriptionInviteController", ($scope, $http) -> + App.controller "DomainSubscriptionJoinController", ($scope, $http) -> $scope.inflight = false if has_personal_subscription $scope.view = "personalSubscription" - else - $scope.view = "groupSubscriptionInvite" + else + $scope.view = "domainSubscriptionJoin" $scope.keepPersonalSubscription = -> - $scope.view = "groupSubscriptionInvite" + $scope.view = "domainSubscriptionJoin" $scope.cancelSubscription = -> $scope.inflight = true request = $http.post "/user/subscription/cancel", {_csrf:window.csrfToken} request.then ()-> $scope.inflight = false - $scope.view = "groupSubscriptionInvite" + $scope.view = "domainSubscriptionJoin" request.catch ()-> - console.log "the request failed" + console.log "the request failed" $scope.joinGroup = -> $scope.view = "requestSent" $scope.inflight = true - request = $http.post "/user/subscription/#{group_subscription_id}/group/begin-join", {_csrf:window.csrfToken} + request = $http.post "/user/subscription/#{group_subscription_id}/group/join", {_csrf:window.csrfToken} request.then (response)-> { status } = response $scope.inflight = false if status != 200 # assume request worked $scope.requestSent = false request.catch ()-> - console.log "the request failed" \ No newline at end of file + console.log "the request failed"