refactoring

This commit is contained in:
Emily
2025-03-03 19:31:35 +01:00
parent 76e5e07f79
commit 63fa3995c5
70 changed files with 2928 additions and 418 deletions

View File

@@ -1,28 +1,72 @@
import { TeamMemberModel } from "@schema/TeamMemberSchema";
import { UserModel } from "@schema/UserSchema";
import { EmailServiceHelper } from "~/server/services/EmailServiceHelper";
import { EmailService } from "~/shared/services/EmailService";
export default defineEventHandler(async event => {
const data = await getRequestDataOld(event, { requireSchema: false, allowGuests: false, allowLitlyx: false });
const data = await getRequestData(event, [], ['OWNER']);
if (!data) return;
const { project_id } = data;
const { project_id, project } = data;
const { email } = await readBody(event);
const targetUser = await UserModel.findOne({ email });
if (!targetUser) return setResponseStatus(event, 400, 'No user with this email');
await TeamMemberModel.create({
project_id,
user_id: targetUser.id,
pending: true,
role: 'GUEST'
});
const link = `http://127.0.0.1:3000/accept_invite?project_id=${project_id.toString()}`;
if (!targetUser) {
const exist = await TeamMemberModel.exists({ project_id, email });
if (exist) return setResponseStatus(event, 400, 'Member already invited');
await TeamMemberModel.create({
project_id,
email,
pending: true,
role: 'GUEST'
});
setImmediate(() => {
const emailData = EmailService.getEmailServerInfo('invite_project_noaccount', {
target: email,
projectName: project.name,
link
});
EmailServiceHelper.sendEmail(emailData);
});
return { ok: true };
} else {
const exist = await TeamMemberModel.exists({ project_id, user_id: targetUser.id });
if (exist) return setResponseStatus(event, 400, 'Member already invited');
await TeamMemberModel.create({
project_id,
user_id: targetUser.id,
pending: true,
role: 'GUEST'
});
setImmediate(() => {
const emailData = EmailService.getEmailServerInfo('invite_project', {
target: email,
projectName: project.name,
link
});
EmailServiceHelper.sendEmail(emailData);
});
return { ok: true };
}
return { ok: true };
});