Show team invites

This commit is contained in:
Alberto Fernández Capel 2018-05-30 13:06:27 +01:00
parent 7e09c0e0b1
commit 9aa95cb0d5
5 changed files with 60 additions and 35 deletions

View file

@ -1,6 +1,7 @@
logger = require("logger-sharelatex")
TeamInvitesHandler = require('./TeamInvitesHandler')
AuthenticationController = require("../Authentication/AuthenticationController")
ErrorController = require("../Errors/ErrorController")
module.exports =
createInvite: (req, res, next) ->
@ -14,16 +15,23 @@ module.exports =
}
res.json inviteView
viewInvite: (req, res) ->
token = request.params.token
viewInvite: (req, res, next) ->
token = req.params.token
userId = AuthenticationController.getLoggedInUserId(req)
TeamInvitesHandler.getInvite token, (err, invite) ->
TeamInvitesHandler.getInviteDetails token, userId, (err, results) ->
next(err) if err?
res.render "referal/bonus",
title: "bonus_please_recommend_us"
refered_users: refered_users
refered_user_count: (refered_users or []).length
{ invite, personalSubscription, inviterName } = results
unless invite?
return ErrorController.notFound(req, res, next)
res.render "subscriptions/group/team_invite",
inviterName: inviterName
inviteToken: invite.token
hasPersonalSubscription: personalSubscription?
acceptInvite: (req, res) ->

View file

@ -19,7 +19,7 @@ module.exports = TeamInvitesHandler =
SubscriptionLocator.getUsersSubscription adminUserId, (error, subscription) ->
return callback(error) if error?
inviterName = "#{groupAdmin.first_name} #{groupAdmin.last_name}"
inviterName = TeamInvitesHandler.inviterName(groupAdmin)
token = crypto.randomBytes(32).toString("hex")
TeamInvite.create {
@ -37,8 +37,35 @@ module.exports = TeamInvitesHandler =
return callback(error, invite)
getInvite: (token, callback) ->
TeamInvite.findOne(token: token, callback)
acceptInvite: (userId, token, callback) ->
revokeInvite: (token, callback) ->
getInviteDetails: (token, userId, callback) ->
TeamInvitesHandler.getInvite token, (err, invite) ->
callback(err) if err?
SubscriptionLocator.getUsersSubscription userId, (err, personalSubscription) ->
callback(err) if err?
SubscriptionLocator.getSubscription invite.subscriptionId, (err, teamSubscription) ->
callback(err) if err?
UserLocator.findById teamSubscription.admin_id, (err, teamAdmin) ->
callback(err) if err?
callback(null , {
invite: invite,
personalSubscription: personalSubscription,
team: teamSubscription,
inviterName: TeamInvitesHandler.inviterName(teamAdmin),
teamAdmin: teamAdmin
})
inviterName: (groupAdmin) ->
if groupAdmin.first_name and groupAdmin.last_name
"#{groupAdmin.first_name} #{groupAdmin.last_name} (#{groupAdmin.email})"
else
groupAdmin.email

View file

@ -4,10 +4,10 @@ block scripts
script(type='text/javascript').
window.teamId = '#{teamId}'
window.hasPersonalSubscription = #{hasPersonalSubscription}
window.inviteToken = #{inviteToken}
window.inviteToken = '#{inviteToken}'
block content
.content.content-alt
.content.content-alt.team-invite
.container
.row
.col-md-8.col-md-offset-2
@ -20,36 +20,21 @@ block content
.col-md-8.col-md-offset-2(ng-cloak)
.card(ng-controller="TeamInviteController")
.page-header
h1.text-centered #{translate("you_are_invited_to_group", {teamName: teamName})}
h1.text-centered #{translate("invited_to_group", {inviterName: inviterName})}
div(ng-show="view =='personalSubscription'").row.text-centered
div #{translate("cancel_personal_subscription_first")}
.row
.col-md-12  
div(ng-show="view =='personalSubscription'").row.text-centered.message
p #{translate("cancel_personal_subscription_first")}
.row
.col-md-12
a.btn.btn.btn-default(ng-click="keepPersonalSubscription()", ng-disabled="inflight") #{translate("not_now")}
span  
a.btn.btn.btn-primary(ng-click="cancelPersonalSubscription()", ng-disabled="inflight") #{translate("cancel_your_subscription")}
div(ng-show="view =='teamInvite'").row.text-centered
.row
.col-md-12 #{translate("group_provides_you_with_premium_account", {teamName: teamName})}
.row
.col-md-12  
div(ng-show="view =='teamInvite'").row.text-centered.message
p #{translate("accept_invite_to_join_team", {inviterName: inviterName})}
.row
.col-md-12
.text-center
a.btn.btn-default(href="/project") #{translate("not_now")}
span  
a.btn.btn.btn-primary(ng-click="joinTeam()", ng-disabled="inflight") #{translate("verify_email_address")}
span(ng-show="view =='requestSent'").row.text-centered.text-center
.row
.col-md-12 #{translate("check_email_to_complete_the_upgrade")}
.row
.col-md-12  
.row
.col-md-12
a.btn.btn.btn-primary(href="/project") #{translate("done")}
a.btn.btn.btn-primary(ng-click="joinTeam()", ng-disabled="inflight") #{translate("join_team")}

View file

@ -17,6 +17,7 @@ define [
"main/announcements"
"main/register-users"
"main/subscription/group-subscription-invite-controller"
"main/subscription/team-invite-controller"
"main/contact-us"
"main/learn"
"analytics/AbTestingManager"

View file

@ -24,7 +24,7 @@
.input-feedback-message {
display: none;
font-size: 0.8em;
.has-error & {
display: inline-block;
}
@ -58,7 +58,7 @@
& + & {
border-left-width: 0;
border-radius: 0 @border-radius-large @border-radius-large 0;
border-radius: 0 @border-radius-large @border-radius-large 0;
}
&-selected {
@ -73,6 +73,10 @@
}
}
.team-invite .message {
margin: 3em 0;
}
.capitalised {
text-transform:capitalize;
}
}