fix members

This commit is contained in:
Emily
2025-03-26 16:15:46 +01:00
parent 1f9ef5d18c
commit 7658dbe85c
11 changed files with 63 additions and 44 deletions

View File

@@ -23,7 +23,7 @@ export default defineEventHandler(async event => {
...result
]
const member = await TeamMemberModel.findOne({ project_id, user_id: data.user.id, pending: false });
const member = await TeamMemberModel.findOne({ project_id, $or: [{ user_id: user.id }, { email: user.user.email }], pending: false });
if (!member) return setResponseStatus(event, 400, 'Not a member');
if (!member.permission) return setResponseStatus(event, 400, 'No permission');

View File

@@ -11,7 +11,7 @@ export default defineEventHandler(async event => {
const project = await ProjectModel.findOne({ _id: project_id });
if (!project) return;
const [hasAccess] = await hasAccessToProject(user.id, project_id, project)
const [hasAccess] = await hasAccessToProject(user.id, project_id, user.user.email, project)
if (!hasAccess) return;
const query = getQuery(event);

View File

@@ -7,7 +7,13 @@ export default defineEventHandler(async event => {
if (!userData?.logged) return [];
const members = await TeamMemberModel.find({ user_id: userData.id, pending: false });
const members = await TeamMemberModel.find({
$or: [
{ user_id: userData.id },
{ email: userData.user.email }
],
pending: false
});
const projects: TProject[] = [];

View File

@@ -16,6 +16,7 @@ export default defineEventHandler(async event => {
if (!user) return setResponseStatus(event, 400, 'Email not found');
await TeamMemberModel.deleteOne({ project_id, user_id: user.id });
await TeamMemberModel.deleteOne({ project_id, email: email });
return { ok: true }

View File

@@ -42,8 +42,15 @@ export default defineEventHandler(async event => {
})
for (const member of members) {
const userMember = member.user_id ? await UserModel.findById(member.user_id) : await UserModel.findOne({ email: member.email });
if (!userMember) continue;
let userMember;
if (member.user_id) {
userMember = await UserModel.findById(member.user_id);
} else {
userMember = await UserModel.findOne({ email: member.email });
}
const permission: TPermission = {
webAnalytics: member.permission?.webAnalytics || false,
@@ -54,11 +61,11 @@ export default defineEventHandler(async event => {
result.push({
id: member.id,
email: userMember.email,
name: userMember.name,
email: userMember?.email || member.email || 'NO_EMAIL',
name: userMember?.name || 'NO_NAME',
role: member.role,
pending: member.pending,
me: user.id === userMember.id,
me: user.id === (userMember?.id || member.user_id || 'NO_ID'),
permission
})
}

View File

@@ -19,13 +19,18 @@ export default defineEventHandler(async event => {
webAnalytics: true
}
const member = await TeamMemberModel.findOne({ project_id, user_id: user.id });
const member = await TeamMemberModel.findOne({
project_id,
$or: [
{ user_id: user.id }, { email: user.user.email }
]
});
if (!member) return {
ai: true,
domains: ['All domains'],
events: true,
webAnalytics: true
ai: false,
domains: [],
events: false,
webAnalytics: false
}
return {

View File

@@ -8,6 +8,12 @@ import { LimitNotifyModel } from "@schema/broker/LimitNotifySchema";
import { SessionModel } from "@schema/metrics/SessionSchema";
import StripeService from "~/server/services/StripeService";
import { UserModel } from "@schema/UserSchema";
import { AddressBlacklistModel } from "~/shared/schema/shields/AddressBlacklistSchema";
import { DomainWhitelistModel } from "~/shared/schema/shields/DomainWhitelistSchema";
import { CountryBlacklistModel } from "~/shared/schema/shields/CountryBlacklistSchema";
import { BotTrafficOptionModel } from "~/shared/schema/shields/BotTrafficOptionSchema";
import { TeamMemberModel } from "~/shared/schema/TeamMemberSchema";
import { PasswordModel } from "~/shared/schema/PasswordSchema";
export default defineEventHandler(async event => {
@@ -19,6 +25,11 @@ export default defineEventHandler(async event => {
const premiumProjects = projects.filter(e => { return e.premium && e.premium_type != 0 }).length;
if (premiumProjects > 0) return setResponseStatus(event, 400, 'Cannot delete an account with a premium project');
const membersDeletation = await TeamMemberModel.deleteMany({ user_id: userData.id });
const membersEmailDeletation = await TeamMemberModel.deleteMany({ email: userData.user.email });
const passwordDeletation = await PasswordModel.deleteMany({ user_id: userData.id });
for (const project of projects) {
const project_id = project._id;
await StripeService.deleteCustomer(project.customer_id);
@@ -28,9 +39,16 @@ export default defineEventHandler(async event => {
const limitdeletation = await ProjectLimitModel.deleteMany({ project_id });
const sessionsDeletation = await SessionModel.deleteMany({ project_id });
const notifiesDeletation = await LimitNotifyModel.deleteMany({ project_id });
const aiChatsDeletation = await AiChatModel.deleteMany({ project_id });
const userDeletation = await UserModel.deleteOne({ _id: userData.id });
const aiChatsDeletation = await AiChatModel.deleteMany({ project_id });
//Shields
const addressBlacklistDeletation = await AddressBlacklistModel.deleteMany({ project_id });
const botTrafficOptionsDeletation = await BotTrafficOptionModel.deleteMany({ project_id });
const countryBlacklistDeletation = await CountryBlacklistModel.deleteMany({ project_id });
const domainWhitelistDeletation = await DomainWhitelistModel.deleteMany({ project_id });
const userDeletation = await UserModel.deleteOne({ _id: userData.id });
}