@@ -246,10 +246,13 @@ router.post('users.invite', auth(), async ctx => {
|
||||
const user = ctx.state.user;
|
||||
authorize(user, 'invite', User);
|
||||
|
||||
const invitesSent = await userInviter({ user, invites, ip: ctx.request.ip });
|
||||
const response = await userInviter({ user, invites, ip: ctx.request.ip });
|
||||
|
||||
ctx.body = {
|
||||
data: invitesSent,
|
||||
data: {
|
||||
sent: response.sent,
|
||||
users: response.users.map(user => presentUser(user)),
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ export default async function userInviter({
|
||||
user: User,
|
||||
invites: Invite[],
|
||||
ip: string,
|
||||
}): Promise<{ sent: Invite[] }> {
|
||||
}): Promise<{ sent: Invite[], users: User[] }> {
|
||||
const team = await Team.findByPk(user.teamId);
|
||||
|
||||
// filter out empties and obvious non-emails
|
||||
@@ -44,12 +44,14 @@ export default async function userInviter({
|
||||
invite => !existingEmails.includes(invite.email)
|
||||
);
|
||||
|
||||
let users = [];
|
||||
|
||||
// send and record remaining invites
|
||||
await Promise.all(
|
||||
filteredInvites.map(async invite => {
|
||||
const transaction = await sequelize.transaction();
|
||||
try {
|
||||
await User.create(
|
||||
const newUser = await User.create(
|
||||
{
|
||||
teamId: user.teamId,
|
||||
name: invite.name,
|
||||
@@ -58,6 +60,7 @@ export default async function userInviter({
|
||||
},
|
||||
{ transaction }
|
||||
);
|
||||
users.push(newUser);
|
||||
await Event.create(
|
||||
{
|
||||
name: 'users.invite',
|
||||
@@ -88,5 +91,5 @@ export default async function userInviter({
|
||||
})
|
||||
);
|
||||
|
||||
return { sent: filteredInvites };
|
||||
return { sent: filteredInvites, users };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user