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.
This commit is contained in:
Alberto Fernández Capel 2018-05-31 14:25:47 +01:00
parent 11edfde153
commit 39c8595c27
7 changed files with 60 additions and 102 deletions

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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")}

View file

@ -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"

View file

@ -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"
console.log "the request failed"