mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
start adding the ProjectInvite workflow.
This commit is contained in:
parent
e0562a2301
commit
d9c6df0e47
3 changed files with 58 additions and 1 deletions
|
@ -3,6 +3,7 @@ EmailHandler = require("../Email/EmailHandler")
|
|||
Settings = require "settings-sharelatex"
|
||||
|
||||
module.exports =
|
||||
|
||||
notifyUserOfProjectShare: (project_id, email, callback)->
|
||||
Project
|
||||
.findOne(_id: project_id )
|
||||
|
@ -23,3 +24,18 @@ module.exports =
|
|||
].join("&")
|
||||
owner: project.owner_ref
|
||||
EmailHandler.sendEmail "projectSharedWithYou", emailOptions, callback
|
||||
|
||||
notifyUserOfProjectInvite: (project_id, email, invite, callback)->
|
||||
Project
|
||||
.findOne(_id: project_id )
|
||||
.select("name owner_ref")
|
||||
.populate('owner_ref')
|
||||
.exec (err, project)->
|
||||
emailOptions =
|
||||
to: email
|
||||
replyTo: project.owner_ref.email
|
||||
project:
|
||||
name: project.name
|
||||
inviteUrl: "#{Settings.siteUrl}/project/#{project._id}/invite/token/#{invite.token}"
|
||||
owner: project.owner_ref
|
||||
EmailHandler.sendEmail "projectInvite", emailOptions, callback
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
UserCreator = require('../User/UserCreator')
|
||||
Project = require("../../models/Project").Project
|
||||
ProjectInvite = require("../../models/ProjectInvite").ProjectInvite
|
||||
mimelib = require("mimelib")
|
||||
logger = require('logger-sharelatex')
|
||||
UserGetter = require "../User/UserGetter"
|
||||
|
@ -8,10 +9,30 @@ CollaboratorsEmailHandler = require "./CollaboratorsEmailHandler"
|
|||
Async = require "async"
|
||||
PrivilegeLevels = require "../Authorization/PrivilegeLevels"
|
||||
Errors = require "../Errors/Errors"
|
||||
Crypto = require 'crypto'
|
||||
|
||||
module.experts = CollaboratorsInviteHandler =
|
||||
|
||||
inviteToProject: (projectId, sendingUserId, email, privileges, callback=(err,invite)->) ->
|
||||
logger.log {projectId, sendingUserId, email, privileges}, "adding invite"
|
||||
Crypto.randomBytes 24, (err, buffer) ->
|
||||
if err?
|
||||
logger.err {err, projectId, sendingUserId, email}, "error generating random token"
|
||||
return callback(err)
|
||||
token = buffer.toString('hex')
|
||||
invite = new ProjectInvite {
|
||||
email: email
|
||||
token: token
|
||||
sendingUserId: sendingUserId
|
||||
projectId: projectId
|
||||
privileges: privileges
|
||||
}
|
||||
ProjectInvite.save (err) ->
|
||||
if err?
|
||||
logger.err {err, projectId, sendingUserId, email}, "error saving token"
|
||||
return callback(err)
|
||||
CollaboratorsEmailHandler.notifyUserOfProjectInvite projectId, email, invite
|
||||
callback(null, invite)
|
||||
|
||||
revokeInvite: (projectId, inviteId, callback=(err)->) ->
|
||||
|
||||
|
|
|
@ -87,6 +87,26 @@ templates.projectSharedWithYou =
|
|||
<p> <a href="<%= siteUrl %>">#{settings.appName}</a></p>
|
||||
"""
|
||||
|
||||
templates.projectInvite =
|
||||
subject: _.template "<%= owner.email %> wants to share <%= project.name %> with you"
|
||||
layout: NotificationEmailLayout
|
||||
type:"notification"
|
||||
compiledTemplate: _.template """
|
||||
<p>Hi, <%= owner.email %> wants to share <a href="<%= project.url %>">'<%= project.name %>'</a> with you</p>
|
||||
<center>
|
||||
<div style="width:200px;background-color:#a93629;border:1px solid #e24b3b;border-radius:3px;padding:15px; margin:24px;">
|
||||
<div style="padding-right:10px;padding-left:10px">
|
||||
<a href="<%= inviteUrl %>" style="text-decoration:none" target="_blank">
|
||||
<span style= "font-size:16px;font-family:Helvetica,Arial;font-weight:400;color:#fff;white-space:nowrap;display:block; text-align:center">
|
||||
View Invite
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</center>
|
||||
<p> Thank you</p>
|
||||
<p> <a href="<%= siteUrl %>">#{settings.appName}</a></p>
|
||||
"""
|
||||
|
||||
templates.completeJoinGroupAccount =
|
||||
subject: _.template "Verify Email to join <%= group_name %> group"
|
||||
|
|
Loading…
Reference in a new issue